阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Oracle 弃用 Nashorn JavaScript 引擎

  • 2018-06-17
  • 本文字数:1094 字

    阅读完需:约 4 分钟

Oracle 通过 JDK 增强提案(JEP)355 宣布弃用 Nashorn JavaScript 引擎,最终将从未来所有的 JDK 中删除。ECMAScript 的语言结构变化太快,Oracle 发现,维护 Nashorn JavaScript 引擎变得非常困难。

Nashorn 最初是在 JDK 8 中引入的,用于取代 Rhino 脚本引擎。当其发布时,Nashorn 是 ECMAScript-262 5.1 的完整实现,增强了 Java 和 JavaScript 的兼容性。最近还增加了新的 ECMAScript 6(ES6)特性。借助 Nashorn,开发人员可以从 JavaScript 调用 Java 代码,也可以从 Java 代码调用 JavaScript 函数。Nashorn 可以作为 Java 应用程序的嵌入式解释器,提供使用 Nashorn 命令行工具 jjs 从命令行运行 JavaScript 的能力。当在 Java 中对 JavaScript 代码求值时,Nashorn 实现了javax.script API。Oracle 表示,弃用 Nashorn 不会影响javax.script API。

移除 Nashorn 后,有些应用程序可能会因为需要 JavaScript 而无法运行。

具体要弃用的模块如下:

  • jdk.scripting.nashorn——包含jdk.nashorn.api.scriptingjdk.nashorn.api.tree包;
  • jdk.scripting.nashorn.shell——包含jjs工具;
  • jdk.dynalink——包含 Dynalink 支持库。

Oracle 实验室高级研究总监 Thomas Wuerthinger 表示, GraalVM 是一个不错的替代方案,与 Nashorn 相比,它的性能更好,与 ECMAScript 的兼容性也更好。虽然 GraalVM 现在还没有生产就绪,但 Wuerthinger 向开发者社区保证,在 Nashorn 真正弃用之前,基于 GraalVM 的 JavaScript 实现将在所有相关平台上实现生产就绪。

在 Nashorn 真正弃用之前,基于#GraalVM 的 JavaScript 实现将在所有相关平台上实现生产就绪。它将提供更好的性能,并且完全兼容 ECMAScript 的最新标准。

— Thomas Wuerthinger (@thomaswue) 2018 年 6 月 7 日

真正要在将来的 JDK 版本中删除相关的类型和模块,Oracle 会提交一份单独的 JEP。

开发社区的总体反应是担忧,尤其是那些在业务逻辑中大量使用了 Nashorn 的。Oracle 听上去愿意撤回 JEP 335,如果有足够的开发人员反馈的话。

还有一种选择是有一组可信赖的开发人员清楚表达今后维护 Nashorn 的愿望。如果那种情况在这份 JEP 完善之前出现,那么它还是可以撤回的。如果那是在这份 JEP 完善之后,但是在 Nashorn 被移除之前,则可以再提交一份 JEP 来逆转这次弃用。

按照 Oracle 的说法,Nashorn 的使用情况很难跟踪,因此,有任何回退都会及时发布通知,而不管 JEP 335 是否通过。使用 Nashorn 的开发人员应该向 Oracle 提供反馈,以便他们可以更好地了解 Nashorn 的使用情况。

感兴趣的读者可以通过 InfoQ Java 首页时刻关注所有 Java 相关的新闻。

查看英文原文: Oracle Deprecates the Nashorn JavaScript Engine

2018-06-17 11:246959
用户头像

发布了 1008 篇内容, 共 374.3 次阅读, 收获喜欢 341 次。

关注

评论

发布
暂无评论
发现更多内容

一个非常常见的问题:var、let和const

肥晨

11月月更 js6 js基础

北京大数据培训学习怎么选

小谷哥

深入理解Node.js的进程与子进程

coder2028

node.js

北京web前端学习哪个机构比较好

小谷哥

在VUE中使用vue-baidu-map获取经纬度和搜索地址

格斗家不爱在外太空沉思

Vue 百度地图 11月月更

一文读懂Js中的this指向

hellocoder2029

JavaScript

云栖大会,一场边缘云计算的「超前瞻」之约

阿里云视频云

云栖大会 边缘云

使用Vmware创建Centos7虚拟机(安装和配置网络环境、xshell连接、防火墙、yum仓库、磁盘挂载、重启命令)

A-刘晨阳

Linux 运维 vmware 11月月更

JavaScript刷LeetCode拿offer-双指针技巧Medium篇

Geek_07a724

JavaScript LeetCode

大数据培训零基础应该注意什么

小谷哥

2022年在线招聘求职行业洞察

易观分析

招聘 在线

Echarts实现全国地图展示

格斗家不爱在外太空沉思

JavaScript eCharts 11月月更

决策树-分类树

烧灯续昼2002

机器学习 决策树 sklearn 11月月更

编程培训学习零基础应该怎么选择呢

小谷哥

发布自己的第一个npm包

格斗家不爱在外太空沉思

npm nodejs 11月月更

JavaScript刷LeetCode拿offer-双指针技巧

Geek_07a724

JavaScript LeetCode

如何构建并提高自己的核心竞争力?

老张

核心竞争力

深度理解NodeJS事件循环

coder2028

node.js

【云原生】内存数据库如何发挥内存优势

石臻臻的杂货铺

数据库 SPL 11月月更

一比一手写迷你版vue,彻底搞懂vue运行机制

hellocoder2029

JavaScript

怎么从容地拿捏时间?来自富兰克林的启示

无人之路

时间管理

Linux常用基础命令(巨全)

A-刘晨阳

Linux 运维 11月月更 基础命令

零基础参加web前端培训学习怎么样

小谷哥

深入剖析nodejs中间件

coder2028

node.js

BNBDao三三复制公排dapp系统开发

开发微hkkf5566

Vue基础知识整理【建议收藏】

何极光

Vue 基础

融云通信云服务,助力医疗招聘平台构建行业护城河

融云 RongCloud

通信 医疗 融云

JavaScript刷LeetCode拿offer-滑动窗口

Geek_07a724

JavaScript LeetCode

Go语言入门11—接口

良猿

Go golang 后端 11月月更

TOGAF架构框架3-ADM架构开发技术

Marvin Ma

架构 TOGAF ADM架构开发方法

为什么vue3要选用proxy,好处是什么?

hellocoder2029

JavaScript

Oracle弃用Nashorn JavaScript引擎_Java_Kesha Williams_InfoQ精选文章