有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

共 (2) 个答案

  1. # 1 楼答案

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

    默认情况下包含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

  2. # 2 楼答案

    我在@Jesper的帮助下找到了答案javax.script.ScriptEngineManager有方法^{},它返回

    ...a list whose elements are instances of all the ScriptEngineFactory classes found by the discovery mechanism.

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

    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解释器