Utilizzo di JavaScript nelle tue applicazioni C ++

Quando Google ha rilasciato il suo browser Chrome, l'azienda ha incluso un'implementazione rapida di JavaScript chiamata V8, il linguaggio di scripting lato client incluso in tutti i browser. I primi utenti di JavaScript nell'era di Netscape 4.1 non amavano la lingua perché non c'erano strumenti per il debug e ogni browser aveva implementazioni diverse e anche diverse versioni dei browser Netscape differivano. Non è stato piacevole scrivere codice cross-browser e testarlo su molti browser diversi.

Da allora, Google Maps e Gmail sono arrivati ​​utilizzando tutte le tecnologie Ajax (JavaScript asincrono e XML) e JavaScript ha avuto un grande ritorno. Ora ci sono strumenti decenti per questo. Il V8 di Google, che è scritto in C ++, compila ed esegue il codice sorgente JavaScript, gestisce l'allocazione di memoria per gli oggetti e la garbage collection raccoglie oggetti di cui non ha più bisogno. V8 è molto più veloce di JavaScript in altri browser perché si compila in codice macchina nativo, non in bytecode che è stato interpretato.

JavaScript V8V8 non è solo per l'uso con Chrome. Se l'applicazione C ++ richiede che gli script siano in grado di scrivere codice che viene eseguito in fase di esecuzione, è possibile incorporare V8 nella propria applicazione. V8 è un motore JavaScript open source ad alte prestazioni concesso in licenza con la licenza liberale BSD. Google ha persino fornito una guida per embedder.

Ecco un semplice esempio fornito da Google, il classico Hello World in JavaScript. È destinato ai programmatori C ++ che desiderano incorporare V8 in un'applicazione C ++

int main (int argc, char * argv []) 
// Crea una stringa contenente il codice sorgente JavaScript.
String source = String :: New ("'Hello' + ', World'");
// Compilalo.
Script script = Script :: Compile (sorgente);
// Eseguirlo.
Valore risultato = script-> Run ();
// Converti il ​​risultato in una stringa ASCII e visualizzalo.
String :: AsciiValue ascii (risultato);
printf ("% s \ n", * ascii);
ritorna 0;

V8 viene eseguito come programma autonomo o può essere incorporato in qualsiasi applicazione scritta in C++.