5

少し前にJavaTM Scripting APIについて読みましたが、Oracle JVM が実装する言語インタープリター (JS を除く) に関する情報を見つけることができませんでした。完全なリストはどこにありますか? それとも、JVM はデフォルトで JavaScript 以外を解釈しませんか?

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript"); // what else?
4

2 に答える 2

2

@Jesperの助けを借りて答えを見つけました。javax.script.ScriptEngineManagerを返すメソッドgetEngineFactories()があります...

...要素が検出メカニズムによって検出されたすべてのScriptEngineFactoryクラスのインスタンスであるリスト。

サポートされているエンジンのリストを取得するために、このコードスニペットを作成しました。

ScriptEngineManager factory = new ScriptEngineManager();
for (ScriptEngineFactory sef : factory.getEngineFactories()) {
    System.out.println(sef.getEngineName() + " (" + sef.getLanguageName() + ")");
}

出力:

Mozilla Rhino(ECMAScript)

Rhinoは、完全にJavaで記述されたJavaScriptのオープンソース実装です。

結論:

Oracle JDKには、スクリプト言語インタープリターが1つだけ組み込まれています。JSインタープリターです。

于 2013-03-11T15:51:33.700 に答える
2

私がこれから言おうとしていることのほとんどを知っていると思いますが、知らない人がこれに出くわすことのないように:

Javascript は、リファレンス実装 (Rhino) であったため、デフォルトで含まれています。「組み込まれている」と考えるのは正しくありません。実装は、たまたま JSR-223 の参照実装としてバンドルされているだけです。私の知る限り、たまたまデフォルトで存在することを除けば、他の実装と何ら変わりはありません。

ただし、他の多くの言語の実装が存在し、JVM/JDK 固有ではなく (Java 6 以上が必要)、アプリケーションに追加するのはかなり簡単です。

私は、Perl、Groovy、Haskell、Javascript、Python、およびその他のいくつかを使用しました (ソリューションとしての使用に関連するいくつかのパフォーマンス テストを行っています)。

インストールしたい場合は、利用可能な言語がたくさんあります: https://confluence.deri.ie:8443/display/romulus/JSR+223+compliant+scripting+languages

于 2013-03-11T17:23:14.230 に答える