跳到主要内容

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

概括

弃用 Nashorn JavaScript 脚本引擎和 API 以及该jjs工具,并打算在未来版本中删除它们。

动机

Nashorn JavaScript 引擎首先通过JEP 174合并到 JDK 8 中,作为 Rhino 脚本引擎的替代品。当它发布时,它是 ECMAScript-262 5.1 标准的完整实现。

随着 ECMAScript 语言结构以及 API 的快速调整和修改,我们发现 Nashorn 的维护具有挑战性。

非目标

此弃用不会以任何方式影响 API javax.script

描述

两个JDK 模块将被最终弃用,即用 注释@Deprecated(forRemoval=true)

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

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

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

将提交一个单独的 JEP,以便在未来的 JDK 功能版本中实际删除类型和模块。

备择方案

另一种选择是让一组可信的开发人员明确表达维持 Nashorn 向前发展的愿望。如果在集成此 JEP 之前发生这种情况,则可以撤回此 JEP。如果在集成此 JEP 之后但在删除 Nashorn 之前发生这种情况,则后续 JEP 可以恢复弃用。

风险和假设

删除 Nashorn 的风险是,由于预期存在 JavaScript,某些应用程序将不再运行。 Nashorn 使用的广度并不容易追踪。希望此 JEP 的反馈可以更好地了解 Nashorn 的实际使用情况。