オプション
GraalVMでのJavaScriptの実行は、いくつかのオプションを使用して構成できます。
GraalVM JavaScriptランチャのオプション
これらのオプションは、jsランチャの動作を制御するためのものです:
-e、--eval CODE: JavaScriptソース・コードを評価し、エンジンを終了します。js -e 'print(1+2);'-f、--file FILE: 指定したスクリプト・ファイルをロードして実行します。-fフラグはオプションであり、大抵は省略できます。jsに対する追加の引数はいずれもファイルとして解釈されるためです。js -f myfile.js--version: GraalVM JavaScriptのバージョン情報を出力して終了します。--strict: JavaScriptの厳密モードでエンジンを実行します。
GraalVM JavaScriptエンジンのオプション
GraalVM JavaScriptエンジンの動作を構成するためのオプションがいくつかあります。これらのオプションは、エンジンの起動方法に応じて、ランチャに渡すか、プログラムを使用して渡します。
JavaScriptエンジンのオプションの完全なリストの場合、--help:jsフラグをjsランチャに渡します(GraalVM 22.1から使用可能、古いリリースでは--help:languagesを使用)。内部オプションを含めるには、--help:js:internalを使用します。これらのリストには、安定した、サポートされているオプションと試験段階のオプションの両方が含まれていることに注意してください。
ランチャへのオプションの指定
ランチャには、--js.<option-name>=<value>を使用してオプションを渡します:
js --js.ecmascript-version=6
コンテキストAPIを使用したプログラムによるオプションの指定
GraalVMのポリグロットAPIを使用してJavaから起動する場合、オプションはプログラムによってContextオブジェクトに渡されます:
Context context = Context.newBuilder("js")
.option("js.ecmascript-version", "6")
.build();
context.eval("js", "42");
プログラムでオプションを設定する方法の詳細は、「ポリグロット・プログラミング」リファレンスを参照してください。
安定オプションと試験段階のオプション
使用可能なオプションは、安定オプションと試験段階のオプションに区別されます。試験段階のオプションを使用する場合は、事前に特別なフラグを指定する必要があります。
ネイティブ・ランチャ(jsおよびnode)では、すべての試験段階のオプションを使用する前に--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のデフォルト・プロトタイプを渡します。ブール値であり、デフォルトはfalseです。--js.intl-402: ECMAScript国際化APIを有効にします。ブール値であり、デフォルトはfalseです。--js.regexp-static-result:RegExp.$1(レガシー)など、最後に成功した一致の結果を含む静的なRegExpプロパティを渡します。ブール値であり、デフォルトはtrueです。--js.strict: すべてのスクリプトに対して厳密モードを有効にします。ブール値であり、デフォルトはfalseです。
完全なリストの場合は、js --help:js:internalを使用します
ECMAScriptバージョン
このオプションは、ECMAScript仕様の特定のバージョンとの互換性を確保するためのものです。整数値が想定されており、カウント式のバージョン番号(5、6、…)と公開年(2015以降)の両方がサポートされています。GraalVM 21.2では、latest、stagingもサポートされています。GraalVM 22.xのデフォルトはECMAScript 2022 specificationです。GraalVM JavaScriptには、将来のドラフト仕様およびオープンな提案の一部の機能が実装されています(そのバージョンを明示的に選択したり、特定の試験段階フラグを有効にした場合)。本番設定では、ecmascript-versionを、リリースされたファイナライズ済バージョンの仕様(2022など)に設定することをお薦めします。
使用可能なバージョンは次のとおりです:
- ECMAScript 5.xを表す
5 - ECMAScript 2015を表す
6または2015 - ECMAScript 2016を表す
7または2016 - ECMAScript 2017を表す
8または2017 - ECMAScript 2018を表す
9または2018 - ECMAScript 2019を表す
10または2019 - ECMAScript 2020を表す
11または2020 - ECMAScript 2021を表す
12または2021(21.3のデフォルト) - ECMAScript 2022を表す
13または2022(22.0以上のデフォルト、最新リリース・バージョン、ECMAScript 2022仕様) latest: サポートされる最新言語バージョンに対応します(デフォルト・バージョン)staging: 試験段階の不安定で未完了の提案を含め、サポートされる最新言語機能に対応します(本番では使用しないでください)
intl-402
このオプションを使用すると、ECMAScriptの国際化APIが有効になります。ブール値が想定されており、デフォルトはfalseです。
厳密モード
このオプションを使用すると、すべてのスクリプトに対してJavaScriptの厳密モードが有効になります。ブール値が想定されており、デフォルトはfalseです。
よく使用される試験段階のオプション
これらのオプションは試験段階であり、今後の保守またはサポートは保証されていないことに注意してください。これらを使用するには、--experimental-optionsフラグを必須とするか、または試験段階のオプションをコンテキストで有効にする必要があります(前述を参照)。
--js.nashorn-compat: Nashornエンジンとの互換性モードを提供します。デフォルトでは、ECMAScriptバージョンを5に設定します。新しいECMAScriptバージョンと競合する可能性があります。ブール値であり、デフォルトはfalseです。--js.timezone: ローカル・タイム・ゾーンを設定します。文字列値であり、デフォルトはシステム・デフォルトです。--js.v8-compat: GoogleのV8エンジンとの互換性を高めます。ブール値であり、デフォルトはfalseです。