前段时间我读到了JavaTM Scripting API,但是我找不到有关Oracle JVM实现的语言解释器(JS除外)的信息。我在哪里可以找到完整的清单?或者JVM默认情况下除了JavaScript之外什么都不解释?
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript"); // what else?
答案 0 :(得分: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只有一个嵌入式脚本语言解释器 - JS解释器。
答案 1 :(得分: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