Sommario
La storia di JavaScript
La nascita e l’evoluzione di JavaScript è una storia affascinante, piena di colpi di scena, indissolubilmente legata all’evoluzione del web stesso e strettamente intersecata con le caotiche dinamiche legali, commerciali e ingegneristiche che diedero vita alle cosiddette “guerre dei browser” a partire dalla seconda metà degli anni ’90.
La prima guerra dei browser
Nel 1995 Netscape Navigator era il re indiscusso del web, ma Microsoft stava preparando il lancio di Windows 95 e di Internet Explorer.
Il web era composto di sole pagine HTML statiche. Fu la Netscape Communications ad intuire che, per mantenere il dominio, doveva rendere il browser capace di supportare pagine web dinamiche con animazioni e interazioni immediate con l’utente.
10 giorni che cambiarono il web
Ad aprile del 1995, Netscape assunse Brendan Eich con un obiettivo chiaro: integrare nel browser un linguaggio di scripting leggero dedicato ai webmaster.
L’azienda era pressata da scadenze commerciali strettissime a causa della concorrenza imminente di Microsoft. Lavorando in uno stato di urgenza totale, Eich progettò e sviluppò il prototipo funzionante del linguaggio allora chiamato Mocha in appena 10 giorni nel maggio del 1995.
Eich fuse insieme la sintassi familiare del C, le funzioni di prima classe del linguaggio Scheme e l’ereditarietà basata sui prototipi del linguaggio Self. Fu una creazione incredibilmente potente e flessibile.
D’altra parte a causa della mancanza di tempo per i test e la revisione, nel linguaggio rimasero stranezze storiche rimaste famose (come l’uguaglianza debole == che fa bizzarre conversioni implicite, o il celebre errore per cui typeof null restituisce object).
Il linguaggio passò brevemente al nome commerciale LiveScript ma, nel dicembre del 1995, Netscape e Sun Microsystems si accordarono per ribattezzarlo JavaScript. Fu una mossa di marketing brillantissima per attirare l’attenzione degli sviluppatori ma generò un’enorme confusione concettuale che dura ancora oggi perché, di fatto, ad eccezione della sintassi di base, Java e JavaScript non c’entrano nulla l’uno con l’altro.
La standardizzazione ECMA
Microsoft, colta di sorpresa, decodificò il linguaggio di Netscape tramite reverse-engineering e nel 1996 creò il proprio clone: JScript.
JScript includeva però funzionalità proprietarie legate a Windows, creando una forte frammentazione: un sito web che funzionava su Netscape spesso si rompeva su Internet Explorer. A fine 1996, Netscape si rivolse all’ECMA International per standardizzare il linguaggio e anche Microsoft si sedette al tavolo delle trattative per definire le regole comuni che definiscono ECMAScript.
La specifica e l’implementazione
La specifica ECMAScript e il linguaggio JavaScript sono due entità nettamente distinte anche se fortemente correlate.
ECMAScript è uno standard tecnico per linguaggi di scripting, registrato sotto la dicitura ECMA-262 e gestito dall’organizzazione internazionale ECMA International. Questo documento non è un software da scaricare o eseguire: definisce semplicemente le regole grammaticali, la sintassi, i tipi di dati e il comportamento che il linguaggio deve avere.
JavaScript è un vero e proprio linguaggio di programmazione costruito seguendo quelle regole. Per capire a fondo questa relazione se ECMAScript fosse una classe teorica o una ricetta su carta, JavaScript sarebbe l’istanza concreta di quella classe o il piatto finale pronto da mangiare.
L’organizzazione ECMA International non si occupa solo di JavaScript, ma ha standardizzato molti altri importanti linguaggi di programmazione, formati di dati e tecnologie informatiche. Ad esempio JSON, il formato di scambio dati più usato nel web, ha una specifica a parte: l’ECMA-404.
La fine del conflitto
Ma come si evolse la guerra tra Netscape e Microsoft?
Abbiamo detto che Netscape partiva da una posizione di forte vantaggio. A metà anni ’90, Netscape Navigator era un software a pagamento per le aziende e a donazione consigliata per i privati. Era la principale fonte di guadagno della compagnia e deteneva un’ampia quota di mercato.
Sfruttando, tuttavia, il suo monopolio assoluto sui sistemi operativi, Microsoft compì due mosse letali per il concorrente:
- rese Internet Explorer completamente gratuito;
- lo integrò direttamente dentro Windows 95 (a partire dagli aggiornamenti successivi) e Windows 98.
Di fatto chi comprava un PC se lo trovava già installato e non poteva rimuoverlo. Per Netscape fu il colpo di grazia: gli utenti non avevano più alcun motivo di cercare, scaricare o pagare un altro browser se ne avevano già uno gratuito e integrato nel computer. In pochissimi anni, la quota di mercato di Netscape crollò a meno del 5%.
Questa mossa però costò cara anche a Microsoft perché, nel 1998, il Dipartimento della Giustizia degli Stati Uniti gli intentò una causa da cui uscirà fortemente ridimensionata. L’accusa era molto chiara: Microsoft stava usando illegalmente la sua posizione di monopolio nel mercato dei sistemi operativi (Windows) per distruggere la concorrenza in un altro mercato (quello dei browser), abusando del proprio potere.
Microsoft riuscì a limitare i danni ma dovette consentire ai produttori di computer di installare browser concorrenti di default senza subire ritorsioni commerciali. Questa pace forzata imposta a Microsoft permise, pochi anni dopo, la nascita e il successo indisturbato di Google Chrome.
Netscape invece, nonostante il ridimensionamento del competitor, morì commercialmente in quegli anni e nel 2003 venne definitivamente assorbita e smantellata dalla società AOL.
La seconda guerra dei browser
Se la prima guerra era stata combattuta a colpi di contratti commerciali spietati e tribunali, la seconda (iniziata intorno al 2004 all’indomani del fallimento di Netscape e culminata negli anni 2010) fu una rivoluzione tecnologica totale: una pura guerra di velocità, standard aperti e innovazione ingegneristica.
Tutto iniziò perché Internet Explorer (IE) si sedette sugli allori. Avendo conquistato oltre il 95% del mercato, Microsoft sciolse il team di sviluppo del browser. Per cinque anni, Internet Explorer 6 non ricevette aggiornamenti significativi. Il web navigato con IE6 era obsoleto, lento e pieno di bug di sicurezza.
La nascita di Firefox
Prima di spegnersi Netscape decise di rilasciare gratuitamente il codice sorgente del suo browser e nel novembre del 2004, dalle sue ceneri, la Mozilla Foundation rilasciò Firefox 1.0: Eich fu una delle menti ed ebbe un ruolo trainante nella creazione del nuovo browser.
Non si poteva competere con la distribuzione di Microsoft, quindi si puntò tutto sul supporto della community e su funzionalità innovative per l’epoca (come i tab e gli add-on) riuscendo ad erodere gradualmente fette di mercato fino ad acquisire circa il 30% del mercato globale.
Microsoft reagì nel 2009 rilasciando finalmente Internet Explorer 7 ma ormai il suo monopolio era stato intaccato.
Chrome e la rivoluzione di JavaScript
Poco prima, nel 2008, in questo scenario che vedeva contrapposti Microsoft e Mozilla, Google rilasciò il navigatore Chrome.
Google non si limitò a creare un browser, ma riprogettò da zero il modo in cui veniva letto JavaScript creando il motore V8. V8 compilava JavaScript direttamente in codice macchina invece di interpretarlo riga per riga. Di colpo, JavaScript divenne fino a 10 volte più veloce rispetto a Internet Explorer. Questa velocità permise la nascita di applicazioni web modernissime (come Gmail, Google Maps e i moderni social network) e preparò il terreno alle successive evoluzioni migliorative del linguaggio.
L’avanzata di Chrome fu inarrestabile. Forte della sua velocità imbattibile e della pubblicità massiccia che Google faceva sulla sua homepage, Chrome superò prima Firefox e, nel 2012, sorpassò ufficialmente anche Internet Explorer, diventando il browser più usato al mondo.
IE, ribattezzato poi Microsoft Edge, continuò velocemente il suo declino. Allo stato dei fatti detiene circa il 5% di un mercato dominato da Chrome (70%) e Apple Safari (16%) forte del monopolio su iPhone.
ECMAScript 2015
In questo contesto, nel 2015, la versione del linguaggio ECMAScript 2015, universalmente nota come ES6 (ECMAScript 6), rappresentò lo spartiacque più importante nella storia di JavaScript. È stato infatti il momento in cui il linguaggio si è evoluto, lasciandosi alle spalle i suoi difetti storici e diventando un linguaggio di programmazione moderno, maturo e strutturato per lo sviluppo di grandi applicazioni enterprise.
Prima del 2015, lo standard era rimasto quasi congelato per anni (la versione ES5 del 2009 aveva introdotto pochissime novità). Con ES6 invece la sintassi fu completamente rivoluzionata, risolvendo gran parte delle bizzarrie storiche lasciate in eredità dai famosi 10 giorni di Brendan Eich.
Le correzioni e le modifiche più significative sono state:
- l’introduzione delle variabili
leteconstal posto divar; - le arrow functions;
- i template literals;
- le classi, che rendono molto più semplice l’organizzazione del codice orientata agli oggetti;
- la gestione delle operazioni asincrone con le Promise;
- la standardizzazione dei moduli.
Si trattò di una vera e propria rivoluzione del linguaggio dalla portata così rilevante che il comitato che gestisce lo standard ECMA-262 comprese che non si poteva più aspettare così tanti anni tra una versione e l’altra.
Da allora si cambiò strategia decidendo di abbandonare i grandi salti generazionali a favore di piccoli aggiornamenti annuali. Da quel momento, le specifiche hanno preso il nome dell’anno di rilascio (ES2016, ES2017… fino a oggi) e ogni anno vengono introdotte poche funzionalità ben testate, rendendo l’evoluzione di JavaScript fluida, costante e prevedibile.
Conclusioni
Al termine di questo avvincente viaggio nella storia del web, dopo tutte queste vicissitudini, JavaScript è oggi, nel 2026, il linguaggio di programmazione di alto livello più usato al mondo, l’unico che tutti i browser possono scaricare ed eseguire nativamente perché integrano al loro interno un motore di esecuzione, chiamato appunto motore JavaScript (JavaScript Engine).