Java 11 的 Nashorn 替代品

Soh*_*far 10 java javascript-engine scriptengine nashorn graalvm

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

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("javascript");
engine.eval("2+3");
Run Code Online (Sandbox Code Playgroud)

She*_*gon 5

更新(2022 年 6 月):

截至2022年,J2V8似乎也维护得很差。

最好把目光投向Javet


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

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

通过 JNI 内置多平台支持

尽管其机制与 API 略有不同ScriptEngine,但性能(如预期)更好。而且您不必处理奇怪的副作用,例如由于滥用 API 导致的意外类加载。

我自己过去曾成功地使用过它。


use*_*900 3

您可以使用Rhino作为替代品

\n\n
\n

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

\n
\n