GraalJS est un moteur JavaScript implémenté en Java au-dessus de GraalVM. Il s'agit d'un environnement d'exécution conforme à ECMAScript pour exécuter des applications JavaScript et Node.js, et inclut tous les avantages de la pile GraalVM, y compris l'interopérabilité avec Java. GraalJS est un projet open source.
Les objectifs de GraalJS sont :
Depuis la version 23.1.0, GraalJS est disponible sous forme d'artefacts Maven. Nous fournissons également des distributions autonomes des environnements d'exécution JavaScript et Node.js.
Grâce à GraalJS, vous pouvez facilement intégrer JavaScript dans une application Java. Tous les artefacts nécessaires peuvent être téléchargés directement depuis Maven Central.
Tous les artefacts pertinents pour les intégrateurs peuvent être trouvés dans le groupe de dépendances Maven org.graalvm.polyglot.
Vous trouverez ci-dessous une configuration minimale des dépendances Maven que vous pouvez copier dans votre pom.xml :
< 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 >
Cela active GraalJS qui est construit sur Oracle GraalVM et sous licence selon les conditions générales gratuites de GraalVM (GFTC). Utilisez js-community
si vous souhaitez utiliser GraalJS construit sur GraalVM Community Edition.
Pour accéder aux artefacts d'isolement polyglotte (GFTC uniquement), utilisez plutôt le suffixe -isolate
(par exemple js-isolate
).
Voir la démonstration d'intégration polyglotte sur GitHub pour un exemple exécutable complet.
Vous pouvez utiliser GraalJS avec GraalVM JDK, Oracle JDK ou OpenJDK. Si vous préférez exécuter sur une JVM stock, jetez un œil à Run GraalJS sur un Stock JDK. Notez que dans ce mode de nombreuses fonctionnalités et optimisations de GraalVM ne sont pas disponibles. En raison de ces limitations, l'exécution sur une JVM d'origine n'est pas une fonctionnalité prise en charge - veuillez utiliser une GraalVM à la place.
Les distributions autonomes sont publiées sur GitHub. Vous avez le choix entre deux options d'exécution de langage :
Pour les distinguer, un autonome fourni avec une JVM a un infixe -jvm
dans son nom. De plus, la version GraalVM Community Edition a -community
dans le nom, par exemple, graaljs-community-
.
Quatre configurations différentes sont disponibles pour chaque combinaison de composants et de plates-formes :
Durée d'exécution | Licence | Infixe d'archive |
---|---|---|
Indigène | GFTC | aucun |
JVM | GFTC | -jvm |
Indigène | UPL | -community |
JVM | UPL | -community-jvm |
Pour installer GraalJS à partir d'un outil autonome, téléchargez et extrayez l'archive à partir de la page GitHub Releases. Après l'installation, l'exécutable js
ou node
dans le sous-répertoire bin
peut être utilisé pour exécuter respectivement des fichiers JavaScript ou des modules Node. Si aucun fichier n'est fourni sur la ligne de commande, un shell interactif (REPL) sera généré.
Remarque : Si vous utilisez macOS, supprimez d'abord l'attribut de quarantaine de l'archive :
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS peut exécuter des applications Node.js non modifiées. Le runtime Node.js de GraalVM est basé sur une version récente de Node.js et exécute le moteur GraalJS au lieu de Google V8. Il offre une haute compatibilité avec les packages NPM existants. Cela inclut les packages NPM avec des implémentations natives. Notez que certains modules NPM peuvent nécessiter d'être recompilés à partir des sources avec GraalJS (s'ils sont livrés avec des binaires compilés pour Node.js basés sur la V8).
Node.js est disponible en tant que distribution autonome distincte. Découvrez comment démarrer avec Node.js.
Une documentation utilisateur complète est disponible sur le site Web. De plus, il existe de la documentation dans ce référentiel sous docs, pour les utilisateurs et les contributeurs. Pour contribuer, consultez également un guide sur la façon de créer GraalJS à partir du code source.
GraalJS est compatible avec la spécification ECMAScript 2024. De nouvelles fonctionnalités, de nouvelles propositions ECMAScript, prévues pour arriver dans les prochaines éditions, sont ajoutées fréquemment et sont accessibles derrière une option. Voir le CHANGELOG.md pour les propositions déjà adoptées.
De plus, certaines extensions populaires d'autres moteurs sont prises en charge. Voir Compatibilité GraalJS.
Le moteur JavaScript principal est une application Java et est donc compatible avec tous les systèmes d'exploitation fournissant une JVM compatible. Voir Exécuter GraalJS sur un Stock JDK. Nous fournissons actuellement des distributions binaires et prenons entièrement en charge GraalJS sur Linux (x64, AArch64), macOS (x64, AArch64) et Windows (x64).
Voir graalvm.org/community pour savoir comment rester connecté avec la communauté de développement. La chaîne graaljs sur graalvm.slack.com est un bon moyen d'entrer en contact avec l'équipe derrière GraalJS. Signalez tout problème spécifique à GraalJS dans le référentiel GitHub oracle/graaljs.
Le code source de GraalJS et les distributions communautaires sont disponibles sous la licence permissive universelle (UPL), version 1.0.
Les artefacts non communautaires sont fournis selon les conditions générales gratuites de GraalVM (GFTC), y compris la licence pour les versions à adoption anticipée.