跳到主要内容

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.scriptingjdk.nashorn.api.tree 包。

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

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

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

替代方案

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

风险与假设

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