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.

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

Link zum Artikel kopieren

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, however, run directly on V8. There are a few reasons for this. One reason is speed of execution for functions that have not been used recently. Cold starts are an issue in serverless computing, but running functions on V8 means that the functions can be 'spun up' and executed, typically, within 5 milliseconds or less. (Node.js has more overhead and usually takes a few milliseconds longer.) Another reason is that V8 sandboxes JavaScript functions automatically, which increases security.