GraalVM JavaScript スクリプトを初めて書く (2026)

GraalVM JavaScript スクリプトを初めて記述しましょう。エントリーポイントを登録し、イベントにフックして、Java を再コンパイルすることなくホットリロードします。動作する例を交えて説明します.

Guidesby trqUpdated June 4, 2026
Key takeaways
  • 最初のスクリプトは3つのステップです:登録、イベントのフック、スクリプトフォルダへの保存。
  • ホストはGraalVMをバンドルしているので、実際のJavaScriptを記述するだけで、自分でインストールする必要はありません。
  • スクリプトはJavaの再ビルドなしに、数秒でホットリロードされます。
  • スクリプトは、ホストがhost-accessホワイトリストを通じて公開するオブジェクトのみを呼び出すことができます.

GraalVM JavaScript スクリプトを初めて書くということは、3つの小さなステップを踏むことを意味します。まず、スクリプトをホストのエントリポイントに登録し、次に、イベントやモジュールにアタッチし、最後に、エンジンがロードできるようにスクリプトフォルダに保存します。エンジンは GraalVM のポリグロット API で動作するため、スクリプトはそのままの JavaScript であり、Java を再コンパイルすることなくリロードされます.

どこ Opal 合う

Opalは、FabricのModで、GraalVM JavaScriptスクリプティングエンジンを使用しているため、これらの手順はそのまま適用できます。開始するには、スクリプティングドキュメントを参照してください

まずに必要なこと

エンジンを埋め込むホストプログラム。ホストはGraalVM JavaScriptを同梱し、スクリプトから呼び出せるオブジェクト群を公開し、スクリプトフォルダを監視します。GraalVMを個別にインストールする必要はありません。ホストに同梱されています。ホストから渡されるオブジェクトに対して、プレーンなJavaScriptを書きます。

それらのオブジェクトが何に対応しているかを知っておくと役立ちますが、Javaを書く必要はありません。

3つのステップ

1

スクリプトフォルダを見つけてください

ホストは起動時に既知のディレクトリからスクリプトを読み込みます。正確なパスについては、ホストのドキュメントをご確認ください
2

スクリプトファイルを作成する

そのフォルダに新しい .js (または .mjs) ファイルを作成してください。ホストは次にスクリプトをロードするときにそれを認識します
3

登録とフック

ファイル内に、ホストのエントリポイントにスクリプトを登録し、その後、イベントに動作を関連付けたり、モジュールを定義したりします

最小限の例

ほとんどのホストは、自身を登録するためのエントリポイントを1つと、JavaScriptとプログラムを繋ぐためのプロキシオブジェクトをいくつか提供します。正確な名前はホストによって異なりますが、構造は同じです。最初のスクリプトは通常、自身を宣言し、1つのイベントに反応するだけです。

// Register the script with the host (names vary by host).
script.register({
  name: "hello-world",
  version: "1.0.0",
});
 
// React to an event the host exposes.
script.on("enable", () => {
  client.print("Hello from my first script.");
});

ホスト自身のAPIリファレンスで、実際のオブジェクト名とメソッド名を確認してください。重要なのはパターンです。登録し、次にイベントをフックするか、モジュールを定義します

作業中にホットリロード

ファイルを保存し、スクリプトをリロードしてください(ライブリロードをサポートしていない場合は、ホストを再起動します)。変更は再ビルドなしで有効になります。この高速なループが、modをコンパイルする代わりにスクリプトを使用する主な理由です。スクリプトは数秒でリロードされますが、コンパイルされたmodは再構築と再起動が必要です。

アプローチイテレーションループ言語適用場面
GraalVM JavaScriptスクリプト編集、保存、リロードJavaScript簡単な修正、カスタム動作
コンパイルされたmod再構築、再起動JavaまたはKotlin大きな機能、より深いフック

スクリプトでできること、できないこと

スクリプトは、ホストが公開するオブジェクトに対してのみ呼び出しを行うことができ、それ以外のオブジェクトにはアクセスできません。ホストは、GraalVM Polyglot ホストアクセスホワイトリストを通じて、スクリプトがアクセスできるクラスとメソッドを宣言し、デフォルトでは拒否されます。これにより、スクリプトは安全かつ予測可能です。アクセスしたいオブジェクトが公開されていない場合は、ホストが追加する必要があります。スクリプト側からホワイトリストを迂回することはできません。

よくある質問