JavaScript gebruiken in uw C ++ -toepassingen

Toen Google zijn Chrome-browser uitbracht, nam het bedrijf een snelle implementatie op van JavaScript genaamd V8, de scripttaal aan de clientzijde die in alle browsers is opgenomen. Vroege gebruikers van JavaScript in het tijdperk van Netscape 4.1 hielden niet van de taal omdat er geen hulpprogramma's waren voor foutopsporing en elke browser verschillende implementaties had en verschillende versies van Netscape-browsers ook verschilden. Het was niet prettig om cross-browser code te schrijven en te testen op veel verschillende browsers.

Sindsdien gebruikten Google Maps en Gmail de hele Ajax-technologie (Asynchronous JavaScript en XML) en JavaScript had een grote comeback gehad. Er zijn nu fatsoenlijke hulpmiddelen voor. De V8 van Google, geschreven in C ++, compileert en voert JavaScript-broncode uit, zorgt voor geheugentoewijzing voor objecten en vuilnis verzamelt objecten die het niet langer nodig heeft. V8 is zo veel sneller dan JavaScript in andere browsers omdat het compileert naar native machinecode, niet naar geïnterpreteerde bytecode.

JavaScript V8V8 is niet alleen voor gebruik met Chrome. Als uw C ++ -toepassing scripting vereist voor gebruikers om code te kunnen schrijven die tijdens uitvoering wordt uitgevoerd, dan kunt u V8 in uw toepassing insluiten. V8 is een open source krachtige JavaScript-engine met een licentie onder de liberale BSD-licentie. Google heeft zelfs een handleiding voor insluiters verstrekt.

Hier is een eenvoudig voorbeeld dat Google biedt: de klassieke Hello World in JavaScript. Het is bedoeld voor C ++ programmeurs die V8 willen insluiten in een C ++ applicatie

int main (int argc, char * argv []) 
// Maak een string met de JavaScript-broncode.
String source = String :: New ("'Hello' + ', World'");
// Compileer het.
Script script = Script :: Compile (bron);
// Voer het uit.
Waarde result = script-> Run ();
// Converteer het resultaat naar een ASCII-tekenreeks en geef deze weer.
String :: AsciiValue ascii (resultaat);
printf ("% s \ n", * ascii);
terugkeer 0;

V8 werkt als een zelfstandig programma, of het kan worden ingebed in elke applicatie geschreven in C++.