GraalJS ist eine in Java implementierte JavaScript-Engine auf Basis von GraalVM. Es handelt sich um eine ECMAScript-kompatible Laufzeit zum Ausführen von JavaScript- und Node.js-Anwendungen und umfasst alle Vorteile des GraalVM-Stacks, einschließlich der Interoperabilität mit Java. GraalJS ist ein Open-Source-Projekt.
Die Ziele von GraalJS sind:
Ab Version 23.1.0 ist GraalJS als Maven-Artefakte verfügbar. Wir bieten auch eigenständige Distributionen der JavaScript- und Node.js-Laufzeiten an.
Dank GraalJS können Sie JavaScript ganz einfach in eine Java-Anwendung einbetten. Alle notwendigen Artefakte können direkt von Maven Central heruntergeladen werden.
Alle für Embedder relevanten Artefakte sind in der Maven-Abhängigkeitsgruppe org.graalvm.polyglot zu finden.
Nachfolgend finden Sie ein minimales Maven-Abhängigkeits-Setup, das Sie in Ihre pom.xml kopieren können:
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >polyglot artifactId >
< version >${graaljs.version} version >
dependency >
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >js artifactId >
< version >${graaljs.version} version >
< type >pom type >
dependency >
Dies ermöglicht GraalJS, das auf Oracle GraalVM aufbaut und unter den GraalVM Free Terms and Conditions (GFTC) lizenziert ist. Verwenden Sie js-community
, wenn Sie GraalJS verwenden möchten, das auf der GraalVM Community Edition basiert.
Um auf polyglotte Isolate-Artefakte zuzugreifen (nur GFTC), verwenden Sie stattdessen das Suffix -isolate
(z. B. js-isolate
).
Ein vollständiges ausführbares Beispiel finden Sie in der Polyglot-Einbettungsdemonstration auf GitHub.
Sie können GraalJS mit GraalVM JDK, Oracle JDK oder OpenJDK verwenden. Wenn Sie lieber auf einer Standard-JVM laufen möchten, werfen Sie einen Blick auf Run GraalJS on a Stock JDK. Beachten Sie, dass in diesem Modus viele Funktionen und Optimierungen von GraalVM nicht verfügbar sind. Aufgrund dieser Einschränkungen ist die Ausführung auf einer Standard-JVM keine unterstützte Funktion. Bitte verwenden Sie stattdessen eine GraalVM.
Eigenständige Distributionen werden auf GitHub veröffentlicht. Es stehen zwei Sprachlaufzeitoptionen zur Auswahl:
Zur Unterscheidung hat ein Standalone-Gerät, das mit einer JVM geliefert wird, das Infix -jvm
im Namen. Außerdem hat die GraalVM Community Edition-Version -community
im Namen, zum Beispiel graaljs-community-
.
Für jede Komponenten- und Plattformkombination stehen vier verschiedene Konfigurationen zur Verfügung:
Laufzeit | Lizenz | Archiv-Infix |
---|---|---|
Einheimisch | GFTC | keiner |
JVM | GFTC | -jvm |
Einheimisch | UPL | -community |
JVM | UPL | -community-jvm |
Um GraalJS eigenständig zu installieren, laden Sie das Archiv von der GitHub-Release-Seite herunter und extrahieren Sie es. Nach der Installation kann die ausführbare js
oder node
im bin
Unterverzeichnis zum Ausführen von JavaScript-Dateien bzw. Node-Modulen verwendet werden. Wenn in der Befehlszeile keine Datei bereitgestellt wird, wird eine interaktive Shell (REPL) erstellt.
Hinweis: Wenn Sie macOS verwenden, entfernen Sie zunächst das Quarantäneattribut aus dem Archiv:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS kann unveränderte Node.js-Anwendungen ausführen. Die Node.js-Laufzeitumgebung von GraalVM basiert auf einer aktuellen Version von Node.js und führt die GraalJS-Engine anstelle von Google V8 aus. Es bietet eine hohe Kompatibilität mit den vorhandenen NPM-Paketen. Dazu gehören NPM-Pakete mit nativen Implementierungen. Beachten Sie, dass einige NPM-Module möglicherweise mit GraalJS aus dem Quellcode neu kompiliert werden müssen (wenn sie mit Binärdateien ausgeliefert werden, die für Node.js basierend auf V8 kompiliert wurden).
Node.js ist als separate eigenständige Distribution verfügbar. Erfahren Sie, wie Sie mit Node.js beginnen.
Eine ausführliche Benutzerdokumentation ist auf der Website verfügbar. Darüber hinaus gibt es in diesem Repository unter „Dokumente“ eine Dokumentation für Benutzer und Mitwirkende. Informationen zum Mitwirken finden Sie auch in der Anleitung zum Erstellen von GraalJS aus Quellcode.
GraalJS ist mit der ECMAScript 2024-Spezifikation kompatibel. Neue Funktionen und neue ECMAScript-Vorschläge, die in zukünftigen Ausgaben erscheinen sollen, werden häufig hinzugefügt und sind hinter einer Option zugänglich. Die bereits angenommenen Vorschläge finden Sie im CHANGELOG.md.
Darüber hinaus werden einige beliebte Erweiterungen anderer Engines unterstützt. Siehe GraalJS-Kompatibilität.
Die Kern-JavaScript-Engine ist eine Java-Anwendung und daher mit jedem Betriebssystem kompatibel, das eine kompatible JVM bereitstellt. Siehe Ausführen von GraalJS auf einem Standard-JDK. Wir bieten binäre Distributionen an und unterstützen GraalJS derzeit vollständig unter Linux (x64, AArch64), macOS (x64, AArch64) und Windows (x64).
Unter graalvm.org/community erfahren Sie, wie Sie mit der Entwickler-Community in Kontakt bleiben. Der Kanal graaljs auf graalvm.slack.com ist eine gute Möglichkeit, mit dem Team hinter GraalJS in Kontakt zu treten. Melden Sie alle GraalJS-spezifischen Probleme im GitHub-Repository oracle/graaljs.
GraalJS-Quellcode und Community-Distributionen sind unter der Universal Permissive License (UPL), Version 1.0, verfügbar.
Nicht-Community-Artefakte werden gemäß den GraalVM Free Terms and Conditions (GFTC) bereitgestellt, einschließlich der Lizenz für Early Adopter-Versionen.