还没有使用过 Nashorn ?如果感兴趣的话,建议尽快去尝试一下,因为 Jim Laskey 最近提交了一个新的 草案,准备弃用 Nashorn JavaScript 脚本引擎、API 以及该 jjs 工具。
从 JDK 6 开始,Java 就捆绑了基于 Mozilla 的 Rhino 的 JavaScript 引擎,该特性允许开发者将 JavaScript 代码嵌入到 Java 中,甚至从嵌入的 JavaScript 中调用 Java 。随着 JDK 8 的发布,Nashorn 取代 Rhino 成为 Java 的嵌入式 JavaScript 引擎。Nashorn 完全支持 ECMAScript 5.1 规范以及一些扩展,在发布之初被视为真正地融合了 Java 和 JavaScript 之力。因为相较于 Rhino ,它有着 2-10 倍的性能提升。
有意思的是,当年提议加入 Nashorn 的正是目前提议弃用该引擎的 Jim Laskey 。在 JEP 335 的描述中,Jim Laskey 表示随着 ECMAScript 语言的快速迭代以及 API 的调整和修改,Nashorn 已越来越具有挑战性,难以维护(兼容性)。他补充道,Nashorn 的弃用不会影响到 javax.script API 。
打算弃用的三个模块包括:
jdk.scripting.nashorn
--包括jdk.nashorn.api.scripting
和jdk.nashorn.api.tree
包。jdk.scripting.nashorn.shell
-- 包含jjs
工具。运行jjs
将会出现以下警告:The jjs tool is planned to be removed from a future JDK release 。jdk.dynalink
-- 包含 Dynalink 支持库。
目前该 JEP 已在 OpenJDK 的中进行讨论,我们将对其进度保持关注。