gpt4 book ai didi

java - 已弃用 Nashorn 的推荐

转载 作者:行者123 更新时间:2023-12-01 21:26:56 25 4
gpt4 key购买 nike

我正在使用一个库将 boolean 表达式计算为字符串。使用该库,我在 Java 11 中收到以下警告:

jdk.nashorn.api.scripting 中的 NashornScriptEngineFactory 已弃用并标记为删除

但是,我对此有点不清楚。我正在使用以下代码,但没有看到此代码中引用 Nashorn,但警告仍然存在。

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Boolean val = (Boolean) engine.eval(ruleString);

我的问题是这个警告仍然适用于这段代码吗?另外,如果确实如此,我可以使用其他替代方案吗?

预先感谢您的帮助。

最佳答案

Nashorn 是 Java 8+ 的默认 Javascript 引擎。所以这样做:

ScriptEngine engine = factory.getEngineByName("JavaScript")

启动 nashorn javascript 引擎。

所以,是的,nashorn 已被弃用 ( by this JEP ) 的事实确实会影响此代码,但是 oracle 将在 2026 年 9 月之前支持 java 11 ( described here ),因此至少在那之前您可以通过补丁等方式使用 java 11 。

此外,弃用意味着“标记为在将来的某个时刻删除”,而不是实际从 JDK 中删除,因此它也可能潜入下一个 LTS JDK。

要继续在 JVM 上使用 javascript,选项有:

  • 回到 Rhino(不是很有吸引力,因为它很慢 - 它不使用更新的字节码指令,如 invokedynamic)
  • 迁移到 GraalVM graaljs 。当您获得现代 ECMAscript (2019) 时,这可能是最好的选择,它意味着可以投入生产并为许多目标平台构建 native 二进制文件。

关于java - 已弃用 Nashorn 的推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com