12

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

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

2 回答 2

4

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

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

通过 JNI 内置多平台支持

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

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

于 2020-08-09T10:18:36.297 回答
2

您可以使用Rhino 作为替代品

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

于 2019-10-01T07:20:40.430 回答