- GraalVM for JDK 23 (最新)
- GraalVM for JDK 24 (早期アクセス)
- GraalVM for JDK 21
- GraalVM for JDK 17
- アーカイブ
- 開発ビルド
オプション
GraalVMでのJavaScriptの実行は、いくつかのオプションで構成できます。
これらのオプションは、js
ランチャーの動作を制御するためのものです。
-e, --eval <code>
: JavaScriptソースコードを実行し、エンジンを終了します。js -e 'print(1+2);'
-f, --file <arg>
: 指定されたスクリプトファイルを読み込んで実行します。-f
オプションは省略可能で、ほとんどの場合、js
への追加引数はファイルとして解釈されるため省略できます。js -f myfile.js
--module <arg>
: 指定されたモジュールファイルを読み込んで実行します。*.mjsファイルはデフォルトでモジュールとして扱われます。js --module myfile.mjs
--version
: GraalJSのバージョン情報を表示して終了します。--strict
: エンジンをJavaScriptの厳格モードで実行します。
GraalJSエンジンオプション #
GraalJSの動作を構成するためのいくつかのオプションがあります。エンジンの起動方法に応じて、オプションはランチャーに渡すか、プログラムで渡すことができます。
JavaScriptエンジンのオプションの完全なリストについては、js
ランチャーに--help:js
フラグを渡してください(GraalVM 22.1以降で使用可能、それ以前のリリースでは--help:languages
を使用)。内部オプションを含めるには、--help:js:internal
を使用します。これらのリストには、安定版、サポート版、実験版のオプションが含まれていることに注意してください。
コマンドラインでのオプションの渡し方 #
js
ランチャーにオプションを渡すには、--js.<option-name>=<value>
構文を使用します。例:
js --js.ecmascript-version=2015
Context APIを使用したプログラムによるオプションの渡し方 #
GraalVMのPolyglot APIを使用してJavaに埋め込まれている場合、オプションはContext
オブジェクトにプログラムで渡すことができます。
Context context = Context.newBuilder("js")
.option("js.ecmascript-version", "2015")
.build();
context.eval("js", "42");
オプションをプログラムで設定する方法については、Polyglotプログラミングのリファレンスを参照してください。
安定版と実験版のオプション #
使用可能なオプションは、安定版と実験版のオプションに分類されます。実験版オプションを使用する場合は、事前に追加のオプションを指定する必要があります。
js
ランチャーを使用する場合は、すべての実験版オプションの前に--experimental-options
を渡す必要があります。Context
を使用する場合は、Context.Builder
でallowExperimentalOptions(true)
を呼び出す必要があります。ScriptEngine
で実験版オプションを使用する方法については、ScriptEngineの実装を参照してください。
頻繁に使用される安定版オプション #
次の安定版オプションは、頻繁に関連します。
--js.ecmascript-version
: 特定のECMAScriptバージョンをエミュレートします。整数値(5
、6
など、2015
~2022
)、"latest"
(仕様の最新のサポートされているバージョン、完了した提案を含む)、または"staging"
(サポートされている未完成の提案を含む最新のバージョン)。デフォルトは"latest"
です。--js.foreign-object-prototype
: JavaScript独自の型(外部配列、オブジェクト、関数)を模倣する外部オブジェクトに、JavaScriptのデフォルトのプロトタイプを提供します。ブール値、デフォルトはtrue
です。--js.intl-402
: ECMAScript国際化APIを有効にします。ブール値、デフォルトはtrue
です。--js.regexp-static-result
: 例えばRegExp.$1
(レガシー)など、最後の成功した一致の結果を含む静的なRegExp
プロパティを提供します。ブール値、デフォルトはtrue
です。--js.strict
: すべてのスクリプトで厳格モードを有効にします。ブール値、デフォルトはfalse
です。--js.console
: グローバルプロパティconsole
を有効にします。ブール値、デフォルトはtrue
です。--js.allow-eval
: 例えばeval()
やFunction
コンストラクタなど、文字列からのコード生成を許可します。ブール値、デフォルトはtrue
です。--js.timer-resolution
:Date.now()
やperformance.now()
などのタイミング関数の解像度をナノ秒単位で設定します。デフォルト:1000000
(つまり1ミリ秒)。--js.unhandled-rejections
: 未処理のPromise拒否の追跡を構成します。許容される値は、none
(デフォルト、追跡なし)、warn
(警告をstderr
に出力)、throw
(例外をスロー)、handler
(カスタムハンドラーを呼び出す)です。--js.esm-eval-returns-exports
: ESモジュールのSource
のcontext.eval
は、エクスポートされたシンボルを返します。
完全なリストについては、js --help:js:internal
を使用してください。
ECMAScriptバージョン
--js.ecmascript-version
オプションは、特定のバージョンのECMAScript仕様との互換性を提供します。エディション番号(5
、6
…)と発行年(2015
から)の両方がサポートされている整数値を期待します。GraalVM 21.2以降、latest
、staging
もサポートされています。GraalVM 23.1のデフォルトはECMAScript 2023仕様
です。GraalJSは、そのバージョンを明示的に選択し、特定の実験的オプションを有効にした場合、将来のドラフト仕様とオープンな提案のいくつかの機能を実装します。本番環境では、ecmascript-version
をリリース済みの最終的な仕様バージョン(例えば、2022
)に設定することをお勧めします。
使用可能なバージョンは次のとおりです。
5
: ECMAScript 5.x2015
(または6
): ECMAScript 20152016
(または7
): ECMAScript 20162017
(または8
): ECMAScript 20172018
(または9
): ECMAScript 20182019
(または10
): ECMAScript 20192020
(または11
): ECMAScript 20202021
(または12
): ECMAScript 2021(21.3でのデフォルト)2022
(または13
): ECMAScript 2022(22.0以降でのデフォルト)2023
(または14
): ECMAScript 2023(23.1でのデフォルト)2024
(または15
): ECMAScript 2024(24.1でのデフォルト)latest
: 最新のサポートされている言語バージョン(デフォルトバージョン)staging
: 実験的な不安定な、未完成の提案を含む、最新のサポートされている言語機能(本番環境では使用しないでください!)
intl-402
--js.intl-402
オプションは、ECMAScriptの国際化APIを有効にします。ブール値を期待し、デフォルトはtrue
です。
厳格モード
--js.strictオプションは、すべてのスクリプトでJavaScriptの厳格モードを有効にします。ブール値を期待し、デフォルトは
false`です。
頻繁に使用される実験版オプション #
これらのオプションは実験的なものであり、将来維持される、または利用可能であることが保証されているわけではないことに注意してください。これらを使用するには、事前に--experimental-options
オプションが必要です。
これらは頻繁に使用される実験的なオプションです。
--js.nashorn-compat
: Nashornエンジンとの互換性モードを提供します。デフォルトでECMAScriptバージョンを5に設定します。新しいECMAScriptバージョンと競合する可能性があります。ブール値、デフォルトはfalse
です。--js.timezone
: ローカルタイムゾーンを設定します。文字列値、デフォルトはシステムデフォルトです。--js.v8-compat
: GoogleのV8エンジンとの互換性を向上させます。ブール値、デフォルトはfalse
です。--js.temporal
:Temporal
APIを有効にします。--js.webassembly
:WebAssembly
APIを有効にします。