跳到主要内容

JEP 335:弃用 Nashorn JavaScript 引擎以进行移除

QWen Max 中英对照 JEP 335 Deprecate the Nashorn JavaScript Engine for Removal

概述​

弃用 Nashorn JavaScript 脚本引擎和 API,以及 jjs 工具,并计划在未来的版本中移除它们。

动机​

Nashorn JavaScript 引擎通过 JEP 174 首次被集成到 JDK 8 中,作为 Rhino 脚本引擎的替代品。在发布时,它完全实现了 ECMAScript-262 5.1 标准。

随着 ECMAScript 语言结构以及 API 的快速适应和修改,我们发现 Nashorn 难以维护。

非目标​

此弃用完全不影响 javax.script API。

描述​

两个 JDK 模块 将被永久弃用,即使用 @Deprecated(forRemoval=true) 注解标记:

  • jdk.scripting.nashorn -- 包含 jdk.nashorn.api.scripting 和 jdk.nashorn.api.tree 包。

  • jdk.scripting.nashorn.shell -- 包含 jjs 工具。运行 jjs 将显示以下警告:

    警告:jjs 工具计划在未来的 JDK 版本中移除。

将在未来的 JDK 特性版本中提交一份单独的 JEP,用于实际移除这些类型和模块。

替代方案​

另一种选择是一组可信的开发者明确表示希望继续维护 Nashorn。如果在该 JEP 被整合之前发生这种情况,那么该 JEP 可以被撤回。如果在该 JEP 被整合之后、但在 Nashorn 被移除之前发生这种情况,那么可以有一个后续的 JEP 来撤销弃用决定。

风险与假设​

移除 Nashorn 的风险在于,某些应用程序由于预期 JavaScript 存在而将无法再运行。Nashorn 的使用范围一直不容易追踪。希望针对此 JEP 的反馈能够提供关于 Nashorn 实际使用的更好见解。