【问题标题】:Nashorn alternative for Java 11 [closed]Java 11 的 Nashorn 替代方案 [关闭]
【发布时间】:2019-10-01 07:16:36
【问题描述】:

我正在使用 Java 11 中的 Nashorn JavaScript 引擎,它运行良好,但很快就会被弃用。我尝试过 GraalVM,但我发现它更糟糕,因为执行一个简单的表达式(例如 2+3)需要 13-14 秒。我可以使用其他替代方法吗?或者我应该使用其他方法(如果有的话)尝试 GraalVM?

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("javascript");
engine.eval("2+3");

【问题讨论】:

  • 您能否详细说明如何运行代码以使其耗时 13 秒?在我使用 GraalVM 的机器上,准确的代码需要不到一秒钟的时间。

标签: java nashorn scriptengine javascript-engine graalvm


【解决方案1】:

如果有人仍然认为这个问题相关,那么一个可行的、仍然积极维护的 Nashorn/Rhino 脚本引擎替代方案是 JVM 的 J2V8 绑定。

可以在here 找到工件(请务必使用此链接获取更新版本)

通过 JNI 内置多平台支持

虽然它的机制与ScriptEngine API 的机制有些不同,但性能(正如预期的那样)更好。并且您不必处理奇怪的副作用,例如由于滥用 API 而导致的意外类加载。

过去我自己也成功使用过。

【讨论】:

    【解决方案2】:

    您可以使用Rhino as replacement

    Rhino 仍然作为一个开源项目进行维护,因此有社区参与的历史。对于某些用途,它显然更胜一筹,因为它的启动时间更快。

    【讨论】:

    • 这是一篇相当老的帖子(从 2018 年 7 月开始),可以引用为相关的。 GraalVM 19.0.0(未提及候选版本)于 2019 年 5 月发布。
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 2010-10-11
    • 2017-03-23
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2013-04-04
    相关资源
    最近更新 更多