Il motore JavaScript V8
V8 è il nome del motore JavaScript che alimenta Google Chrome. È ciò che prende il nostro JavaScript e lo esegue durante la navigazione con Chrome.
V8 è il motore JavaScript, ovvero analizza ed esegue il codice JavaScript. Il DOM e le altre API della piattaforma Web (che insieme costituiscono l'ambiente di runtime) sono fornite dal browser.
La cosa interessante è che il motore JavaScript è indipendente dal browser in cui è ospitato. Questa caratteristica chiave ha consentito l'ascesa di Node.js. V8 è stato scelto come motore per alimentare Node.js nel 2009 e, con l'esplosione della popolarità di Node.js, V8 è diventato il motore che ora alimenta un'incredibile quantità di codice lato server scritto in JavaScript.
L'ecosistema Node.js è enorme e questo grazie a V8 che alimenta anche le applicazioni desktop, con progetti come Electron.
Altri motori JS
Altri browser hanno il proprio motore JavaScript:
SpiderMonkey
(Firefox)JavaScriptCore
(chiamato ancheNitro
) (Safari)- Edge era originariamente basato su
Chakra
, ma più recentemente è stato ricostruito utilizzando Chromium e il motore V8.
e molti altri esistono.
Tutti questi motori implementano lo standard ECMA ES-262, chiamato anche ECMAScript, lo standard utilizzato da JavaScript.
La ricerca delle prestazioni
V8 è scritto in C++ ed è continuamente migliorato. È portatile e funziona su Mac, Windows, Linux e diversi altri sistemi.
In questa introduzione a V8, ignoreremo i dettagli di implementazione di V8: questi possono essere trovati su siti più autorevoli (ad esempio, il sito ufficiale di V8), e cambiano nel tempo, spesso radicalmente.
V8 è in continua evoluzione, proprio come gli altri motori JavaScript, per accelerare il Web e l'ecosistema Node.js.
Sul web, c'è una corsa alle prestazioni che va avanti da anni, e noi (come utenti e sviluppatori) traiamo grandi benefici da questa competizione perché otteniamo macchine più veloci e più ottimizzate anno dopo anno.
Compilazione
JavaScript è generalmente considerato un linguaggio interpretato, ma i motori JavaScript moderni non si limitano più a interpretare JavaScript, lo compilano.
Questo avviene dal 2009, quando il compilatore JavaScript SpiderMonkey è stato aggiunto a Firefox 3.5, e tutti hanno seguito questa idea.
JavaScript viene internamente compilato da V8 con compilazione just-in-time (JIT) per accelerare l'esecuzione.
Questo potrebbe sembrare controintuitivo, ma dall'introduzione di Google Maps nel 2004, JavaScript si è evoluto da un linguaggio che generalmente eseguiva poche decine di righe di codice ad applicazioni complete con migliaia o centinaia di migliaia di righe in esecuzione nel browser.
Le nostre applicazioni possono ora funzionare per ore all'interno di un browser, invece di essere solo poche regole di convalida dei moduli o semplici script.
In questo nuovo mondo, compilare JavaScript ha perfettamente senso perché, sebbene possa richiedere un po' più di tempo per preparare JavaScript, una volta fatto sarà molto più performante rispetto al codice puramente interpretato.