Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDK包含哪些脚本语言解释器?_Java_Jvm - Fatal编程技术网

Java JDK包含哪些脚本语言解释器?

Java JDK包含哪些脚本语言解释器?,java,jvm,Java,Jvm,不久前,我读到了有关Oracle JVM实现的语言解释器(JS除外)的信息,但我找不到相关信息。在哪里可以找到完整的列表?或者JVM在默认情况下只解释JavaScript吗 ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); // what else? 我在@Jesper的帮助下找到了答案javax.script

不久前,我读到了有关Oracle JVM实现的语言解释器(JS除外)的信息,但我找不到相关信息。在哪里可以找到完整的列表?或者JVM在默认情况下只解释JavaScript吗

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

我在@Jesper的帮助下找到了答案
javax.script.ScriptEngineManager有一个返回

…一个列表,其元素是发现机制找到的所有ScriptEngineFactory类的实例

我编写此代码片段是为了获得受支持引擎的列表:

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

Mozilla Rhino(ECMAScript)

是完全用Java编写的JavaScript的开源实现

结论:
Oracle JDK只有一个嵌入式脚本语言解释器—JS解释器。

我想你知道我将要说的大部分内容,但为了避免其他人无意中发现这一点,他们没有:

默认情况下包含Javascript,因为它是参考实现(Rhino)。认为它是“嵌入的”是不正确的——实现恰好被捆绑为JSR-223的引用实现。据我所知,它与任何其他实现都没有什么不同,只是它碰巧是默认存在的

然而,许多其他语言都有实现,它们不是特定于JVM/JDK的(只需要Java6或更高版本),在应用程序中添加这些实现非常简单

我使用过Perl、Groovy、Haskell、Javascript和Python以及其他一些工具(进行了一些性能测试,可能将其用作解决方案)

如果要安装,有很多可用语言:
javax.script.ScriptEngineManager
提供了查找可用脚本引擎的方法。在API文档中查找它。非常感谢您的回答,尤其是链接+1.