Utilisation de JavaScript dans vos applications C ++

Lorsque Google a publié son navigateur Chrome, la société a inclus une implémentation rapide de JavaScript appelée V8, le langage de script côté client inclus dans tous les navigateurs. Les premiers utilisateurs de JavaScript à l'époque de Netscape 4.1 n'aimaient pas le langage car il n'y avait pas d'outils de débogage et chaque navigateur avait des implémentations différentes, et les différentes versions des navigateurs Netscape différaient également. Ce n'était pas agréable d'écrire du code multi-navigateur et de le tester sur de nombreux navigateurs différents.

Depuis lors, Google Maps et Gmail ont utilisé toutes les technologies Ajax (JavaScript asynchrone et XML), et JavaScript a connu un grand retour. Il existe maintenant des outils décents pour cela. Le V8 de Google, qui est écrit en C ++, compile et exécute le code source JavaScript, gère l'allocation de mémoire pour les objets et récupère les objets dont il n'a plus besoin. La V8 est tellement plus rapide que le JavaScript des autres navigateurs car elle se compile en code machine natif, pas en bytecode qui a été interprété.

JavaScript V8V8 n'est pas uniquement destiné à être utilisé avec Chrome. Si votre application C ++ nécessite des scripts pour que les utilisateurs puissent écrire du code qui s'exécute au moment de l'exécution, vous pouvez intégrer V8 dans votre application. V8 est un moteur JavaScript hautes performances open source sous licence libérale BSD. Google a même fourni un guide d'intégration.

Voici un exemple simple que Google fournit: le classique Hello World en JavaScript. Il est destiné aux programmeurs C ++ qui souhaitent intégrer V8 dans une application C ++

int main (int argc, char * argv []) 
// Créer une chaîne contenant le code source JavaScript.
String source = String :: New ("'Bonjour' + ', Monde'");
// Compilez-le.
Script script = Script :: Compile (source);
// Exécuter.
Résultat de la valeur = script-> Run ();
// Convertit le résultat en une chaîne ASCII et l'affiche.
String :: AsciiValue ascii (résultat);
printf ("% s \ n", * ascii);
retourner 0;

V8 fonctionne comme un programme autonome, ou il peut être intégré dans n'importe quelle application écrite en C++.