Learn · concepts
GraalVM JavaScript スクリプティングとは??
GraalVM JavaScript は、JVM 上で動作する高速な JS エンジンです。Java アプリケーションに JavaScript を埋め込むことができ、ユーザーは機能をスクリプト化し、即座にリロードできます.
GraalVM JavaScriptとは何ですか??
GraalVM JavaScriptは、JVM上で動作する、標準に準拠した高速なJavaScriptエンジンであり、GraalVMプロジェクトの一部です。Javaアプリケーションはこれに組み込まれ、ユーザーはJavaScriptでホストプログラムを呼び出し、その場でリロードすることができます。Javaアプリケーションにおいては、Javaコードを再コンパイルすることなく、JavaScriptで動作を追加したり変更したりすることを意味します。
機能を追加するためのサンドボックスと考えると良いでしょう。アプリケーションは、特定のオブジェクトとメソッドをスクリプトに公開し、スクリプトはそれらのメソッドを呼び出してアプリ内で作業を行います。スクリプトを変更して保存すると、エンジンはすぐにそれをリロードし、再起動は不要です
アプリがスクリプティングエンジンを組み込む理由
Minecraftのようなクライアントアプリケーションには、いくつかの実用的な理由からJavaScriptエンジンが組み込まれています。
- ホットリロード: スクリプトを変更し、再起動や再ビルドなしにその効果を確認できます。
- 安全な環境: ホスト側がスクリプトがアクセスできるオブジェクトやJavaクラスを正確に決定します。
- 高速な反復: 変更した動作を、コンパイル時間数分ではなく、数秒でテストできます。
- ユーザーによるカスタマイズ: プレイヤーが使い慣れた言語で独自の機能を作成できるようにします
クライアントにどのように現れるか
GraalVM JavaScript を埋め込むクライアントは、通常、スクリプトが自身を登録するためのエントリポイントと、JavaScript とプログラムの内部を接続する小さなプロキシオブジェクト群を提供します。ユーザーはスクリプトを作成し、スクリプトフォルダに配置するだけで、エンジンがそれをロードします。これにより、クライアントはユーザーがモッドをコンパイルする代わりに、JavaScript で機能を追加できるようにすることができます.
GraalVM JavaScript vs Node.js
| 側面 | GraalVM JavaScript | Node.js |
|---|---|---|
| 実行環境 | JVM上で動作 | スタンドアロンのV8ベースの実行環境 |
| ユースケース | Javaアプリに組み込み | サーバーサイドJavaScriptまたはCLIツール |
| 起動 | ホストプロセスの部品として | 独立したプロセス |
| アクセス | ホストが特定のオブジェクトを公開 | フルOSアクセス |
| パフォーマンス | JITコンパイル、非常に高速 | 同様に非常に高速、異なるトレードオフ |
どちらもJavaScriptを実行することに優れています。用途が異なるだけです。GraalVMは、JavaアプリでユーザーがJavaScriptでスクリプトを実行したい場合に適しています。
よくある質問
いいえ、どちらもJavaScriptを実行しますが、GraalVMのエンジンはJVMアプリケーション内に組み込むことを想定して設計されており、Node.jsはV8を基盤としたスタンドアロンのランタイムです.
通常はそうではありません。ホストアプリが公開するオブジェクトに対してJavaScriptを記述します。それらのオブジェクトが何に対応しているかを知っておくと高度な利用には役立ちますが、基本的なスクリプトにはJavaScriptだけで十分です.
反復速度。スクリプトは瞬時に再読み込みされますが、コンパイルされたMODは再構築と再起動が必要です。素早い機能テストや個人的な自動化には、スクリプティングの方がはるかに高速です.
はい、ホストアプリケーションがスクリプトがアクセスできるオブジェクトとクラスを正確に決定します。クライアントは、それらのプロキシオブジェクトを通してゲームの状態、プレイヤーデータ、その他の内部情報を公開できます.