Java 11 的 Nashorn 替代方案 [已关闭]

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

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

答案 1

更新(2022 年 6 月):

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

更好地将目光投向Javet


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

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

通过 JNI 内置多平台支持

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

我过去曾成功地使用它。


答案 2

您可以使用犀牛作为替代品

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


推荐