Verwenden von JavaScript in Ihren C ++ - Anwendungen

Als Google seinen Chrome-Browser veröffentlichte, enthielt das Unternehmen eine schnelle Implementierung von JavaScript namens V8, die clientseitige Skriptsprache, die in allen Browsern enthalten ist. Frühe Anwender von JavaScript in der Ära von Netscape 4.1 mochten die Sprache nicht, da es keine Tools zum Debuggen gab und jeder Browser unterschiedliche Implementierungen aufwies und sich auch verschiedene Versionen von Netscape-Browsern unterschieden. Es war nicht angenehm, browserübergreifenden Code zu schreiben und ihn in vielen verschiedenen Browsern zu testen.

Seitdem kamen Google Maps und Google Mail mit der gesamten Ajax-Technologie (Asynchronous JavaScript and XML) auf den Markt, und JavaScript hatte ein großes Comeback erlebt. Es gibt jetzt anständige Werkzeuge dafür. Googles V8, das in C ++ geschrieben ist, kompiliert und führt JavaScript-Quellcode aus, verwaltet die Speicherzuordnung für Objekte und sammelt Objekte, die nicht mehr benötigt werden. V8 ist so viel schneller als JavaScript in anderen Browsern, da es in systemeigenen Maschinencode kompiliert wird und nicht in Bytecode, der interpretiert wurde.

JavaScript V8V8 kann nicht nur mit Chrome verwendet werden. Wenn für Ihre C ++ - Anwendung Skripts erforderlich sind, damit Benutzer zur Laufzeit ausführbaren Code schreiben können, können Sie V8 in Ihre Anwendung einbetten. V8 ist eine Open-Source-Hochleistungs-JavaScript-Engine, die unter der liberalen BSD-Lizenz lizenziert ist. Google hat sogar einen Embedder-Guide zur Verfügung gestellt.

Hier ist ein einfaches Beispiel, das Google anbietet - die klassische Hello World in JavaScript. Es ist für C ++ - Programmierer gedacht, die V8 in eine C ++ - Anwendung einbetten möchten

int main (int argc, char * argv []) 
// Erstellen Sie einen String mit dem JavaScript-Quellcode.
String source = String :: New ("'Hallo' + ', Welt'");
// Kompiliere es.
Script script = Script :: Compile (Quelle);
// Starte es.
Wert result = script-> Run ();
// Konvertiere das Ergebnis in einen ASCII-String und zeige ihn an.
String :: AsciiValue ascii (Ergebnis);
printf ("% s \ n", * ascii);
return 0;

V8 wird als eigenständiges Programm ausgeführt oder kann in jede in C geschriebene Anwendung eingebettet werden++.