Was ist Chrome V8?

Chrome V8 führt JavaScript-Code aus. Node.js baut auf Chrome V8 auf und ist eine weit verbreitete Laufzeitumgebung für serverlose JavaScript-Funktionen. Es hat jedoch Vorteile, Funktionen direkt auf V8 auszuführen.

Share facebook icon linkedin icon twitter icon email icon

Chrome V8

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • JavaScript-Engine definieren
  • Mehr über Chrome V8 und Node.js wissen
  • Verstehen, welche Rolle Chrome V8 in serverlosen Architekturen spielen kann

Was ist Chrome V8?

Chrome V8 ist eine JavaScript-Engine, was bedeutet, dass sie JavaScript-Code ausführt. Ursprünglich wurde JavaScript zur Ausführung von Webbrowsern geschrieben. Chrome V8, oder auch einfach V8, kann JavaScript-Code sowohl innerhalb als auch außerhalb eines Browsers ausführen, wodurch serverseitiges Skripting möglich wird.

Wie ein V8-Automotor, also ein Achtzylindermotor, ist auch Chrome V8 schnell und leistungsstark. V8 übersetzt JavaScript-Code direkt in Maschinencode*, so dass Computer ihn verstehen können, und führt dann den übersetzten (bzw. kompilierten) Code aus. V8 optimiert auch die Ausführung von JavaScript.

*Maschinencode ist eine Sprache, die CPUs verstehen. Sie ist rein digital, d. h. sie besteht nur aus Ziffern.

Was bedeutet Kompilieren?

Kompilieren ist ein Prozess, bei dem Code von einer Programmiersprache in eine andere übersetzt wird. Normalerweise übersetzt ein Compiler den Code von einer höheren Abstraktionsebene auf eine niedrigere Abstraktionsebene, also aus von Menschen lesbaren Sprachen wie JavaScript in maschinenlesbaren Code.

Chrome V8 führt eine sogenannte Just-in-Time-Kompilierung durch. Das heißt, anstatt JavaScript im Voraus zu kompilieren, kompiliert es den Code zur gleichen Zeit, zu der er ausgeführt wird.

Was ist Sandboxing?

Chrome V8-Sandboxing

Eine „Sandbox“ (engl. für Sandkasten) ist eine Umgebung zur Ausführung von Software, die von anderen Umgebungen isoliert und abgeschottet ist, selbst von solchen auf demselben Rechner.

Sandboxing ist eines der Hauptmerkmale von Chrome V8. Jeder Prozess läuft in einer Sandbox ab, wodurch sichergestellt wird, dass die JavaScript-Funktionen getrennt darin ausgeführt werden und die Ausführung eines Codesegments kein anderes Codesegment beeinflusst. (Im Gegensatz zu vielen Sandboxing-Produkten für Unternehmen, die ausführbare Dateien in isolierten virtuellen Maschinen öffnen und ausführen, verlangsamt V8-Sandboxing nicht die Performance.)

Was ist Node.js?

Node.js ist eine Laufzeitumgebung* zur Ausführung von JavaScript-Code und basiert auf der Chrome V8-Engine. Sie ist asynchron, d. h. sie muss nicht auf den Abschluss eines Prozesses warten, bevor sie einen anderen starten kann. Wie V8 ist auch Node.js kostenlos und Open Source. Es verfügt jedoch nicht über eine integrierte Sandbox.

(Wenn Sie mit JavaScript vertraut sind, werden Sie die Dateierweiterung „.js“ bemerkt haben. Dies hat jedoch rein ästhetische Gründe und soll auf die Verbindung der Laufzeitumgebung mit JavaScript hinweisen. Es bedeutet nicht, dass Node.js eine JavaScript-Datei ist.)

*Eine Laufzeitumgebung ist die Softwareumgebung, in der Code ausgeführt wird.

Warum sind V8 und Node.js wichtig für Serverless-Computing?

Serverlose Funktionen müssen irgendwo ausgeführt werden, wenn sie ausgelöst werden. Verschiedene Anbieter von Serverless-Computing bieten Node.js als Laufzeitumgebung für serverlose JavaScript-Funktionen an (für andere Sprachen werden andere Runtimes verwendet).

Cloudflare Workers läuft hingegen direkt auf V8. Dafür gibt es mehrere Gründe. Einer davon ist die besonders schnelle Ausführung von Funktionen, die in letzter Zeit nicht benutzt wurden. Kaltstarts sind zwar ein Problem beim Serverless-Computing, doch die Ausführung auf V8 bedeutet, dass Funktionen normalerweise innerhalb von 5 Millisekunden oder weniger „hochgefahren“ und ausgeführt werden können. (Node.js stellt höhere Leistungsanforderungen und benötigt gewöhnlich ein paar Millisekunden länger.) Ein weiterer Grund ist, dass V8 JavaScript automatisch in Sandboxen ausführt und so für mehr Sicherheit sorgt.