GraalJS は、GraalVM 上に Java で実装された JavaScript エンジンです。これは、JavaScript および Node.js アプリケーションを実行するための ECMAScript 準拠のランタイムであり、Java との相互運用性を含む GraalVM スタックの利点をすべて備えています。 GraalJS はオープンソース プロジェクトです。
GraalJS の目標は次のとおりです。
バージョン 23.1.0 以降、GraalJS は Maven アーティファクトとして利用可能です。 JavaScript および Node.js ランタイムのスタンドアロン ディストリビューションも提供します。
GraalJS のおかげで、JavaScript を Java アプリケーションに簡単に埋め込むことができます。必要なアーティファクトはすべて Maven Central から直接ダウンロードできます。
エンベッダーに関連するすべてのアーティファクトは、Maven 依存関係グループ org.graalvm.polyglot にあります。
以下は、 pom.xmlにコピーできる最小限の Maven 依存関係セットアップです。
< 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 >
これにより、Oracle GraalVM 上に構築され、GraalVM 無料利用規約 (GFTC) に基づいてライセンス供与される GraalJS が有効になります。 GraalVM Community Edition 上に構築された GraalJS を使用する場合は、 js-community
使用します。
ポリグロット分離アーティファクト (GFTC のみ) にアクセスするには、代わりに-isolate
サフィックスを使用します (例: js-isolate
)。
完全な実行可能な例については、GitHub の多言語埋め込みデモを参照してください。
GraalJS は、GraalVM JDK、Oracle JDK、または OpenJDK とともに使用できます。ストック JVM で実行したい場合は、「ストック JDK で GraalJS を実行する」を参照してください。このモードでは、GraalVM の多くの機能と最適化が利用できないことに注意してください。これらの制限により、ストック JVM での実行はサポートされている機能ではありません。代わりに GraalVM を使用してください。
スタンドアロンのディストリビューションは GitHub で公開されています。選択できる言語ランタイム オプションは 2 つあります。
それらを区別するために、JVM に付属するスタンドアロンの名前には-jvm
接尾辞が付いています。また、GraalVM Community Edition バージョンには、名前に-community
が含まれています (たとえば、 graaljs-community-
)。
コンポーネントとプラットフォームの組み合わせごとに、4 つの異なる構成が利用可能です。
ランタイム | ライセンス | アーカイブインフィックス |
---|---|---|
ネイティブ | GFTC | なし |
JVM | GFTC | -jvm |
ネイティブ | UPL | -community |
JVM | UPL | -community-jvm |
GraalJS をスタンドアロンからインストールするには、GitHub リリース ページからアーカイブをダウンロードして抽出します。インストール後、 bin
サブディレクトリ内の実行可能ファイルjs
またはnode
を使用して、それぞれ JavaScript ファイルまたはノード モジュールを実行できます。コマンドラインにファイルが指定されていない場合は、対話型シェル (REPL) が生成されます。
注: macOS を使用している場合は、最初にアーカイブから隔離属性を削除します:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS は、変更されていない Node.js アプリケーションを実行できます。 GraalVM の Node.js ランタイムは、Node.js の最新バージョンに基づいており、Google V8 の代わりに GraalJS エンジンを実行します。既存の NPM パッケージとの高い互換性を提供します。これには、ネイティブ実装を備えた NPM パッケージが含まれます。一部の NPM モジュールは、GraalJS を使用してソースから再コンパイルする必要がある場合があることに注意してください (V8 ベースの Node.js 用にコンパイルされたバイナリが同梱されている場合)。
Node.js は、別のスタンドアロン ディストリビューションとして利用できます。 Node.js の使用を開始する方法をご覧ください。
広範なユーザー ドキュメントが Web サイトから入手できます。さらに、このリポジトリの docs には、ユーザーおよび寄稿者向けのドキュメントがあります。貢献するには、ソース コードから GraalJS を構築する方法に関するガイドも参照してください。
GraalJS は ECMAScript 2024 仕様と互換性があります。将来のエディションに導入される予定の新機能、新しい ECMAScript プロポーザルは頻繁に追加され、オプションでアクセスできます。すでに採択された提案については、CHANGELOG.md を参照してください。
さらに、他のエンジンのいくつかの一般的な拡張機能もサポートされています。 「GraalJS の互換性」を参照してください。
コア JavaScript エンジンは Java アプリケーションであるため、互換性のある JVM を提供するすべてのオペレーティング システムと互換性があります。 「ストック JDK で GraalJS を実行する」を参照してください。現在、バイナリ ディストリビューションを提供し、Linux (x64、AArch64)、macOS (x64、AArch64)、および Windows (x64) で GraalJS を完全にサポートしています。
開発コミュニティとのつながりを維持する方法については、graalvm.org/community を参照してください。 Graalvm.slack.com のチャンネルgraaljs は、 GraalJS の背後にあるチームと連絡を取る良い方法です。 GraalJS 固有の問題は、oracle/graaljs GitHub リポジトリで報告してください。
GraalJS ソース コードとコミュニティ配布は、Universal Permissive License (UPL) バージョン 1.0 に基づいて利用できます。
コミュニティ以外のアーティファクトは、早期導入バージョンのライセンスを含む GraalVM 無料利用規約 (GFTC) に基づいて提供されます。