AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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:247402
用户头像

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

关注

评论

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

Windows Terminal添加右键菜单

simon

Windows Terminal 右键菜单 终端 开发者工具 命令行

MyBatis核心功能介绍

Java收录阁

mybatis

如何优雅的接收正在运行古董代码?

冰临深渊

项目管理 架构

我愿沉迷于学习,无法自拔(二)

孙瑜

深度思考 个人成长

高仿瑞幸小程序 01 初建项目,引入Vant Weapp

曾伟@喵先森

小程序 微信小程序 大前端 vant

Kafka系列第2篇:安装测试

z小赵

大数据 kafka 推荐 实时计算

Go语言获取程序各类资源的绝对路径的方法

良少

Python 路径 动态 绿色 Go 语言

用行动解决情绪,情绪永远是累赘

熊斌

情绪控制 团队协作

如何写排版优雅简洁的文章?

池建强

写作 排版

Hive 中的 GroupBy, Distinct 和 Join

tkanng

sql 大数据 hadoop hive

这里有一个慢 SQL 查询等你来优化

程序猿石头

MySQL 数据库 性能优化 后端

C++中glog源码剖析以及如何设计一个高效 log模块

泰伦卢

c++ 编程语言

kettle(Pentaho Data Integration) 使用"最佳"实践

稻草鸟人

Java kettle

GroupBy 用法的三重境界,面试终结者

Hyun

数据库 sql 大数据 性能优化 数据分析

爬虫(108)Python 3.8的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

python 爬虫 python3.x python升级

​成功的人,都是 “狠角色”

非著名程序员

程序员 提升认知 成功学 自律

太极宗师与华晨宇

伯薇

水平思考力 电视剧 综艺节目 歌手

每日一道python面试题 - Python的函数参数传递

志学Python

Python 面试 爬虫 python 爬虫 python3.x

Kafka系列第1篇:Kafka是什么?它能干什么?

z小赵

大数据 kafka 推荐 实时计算

初步了解MyBatis

Java收录阁

mybatis

爬虫(107)Python 3.7的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

Python 最佳实践 python 爬虫 python3.7 python升级

周报 01|多点分享,少点创作

强劲九

学习 读书

目标:2020年学会写文章

wiflish

每天打卡python面试题 - 在一行中捕获多个异常(块除外)

志学Python

Python 面试 python 爬虫 python3.7

游戏夜读 | 2020周记(4.3-4.10)

game1night

关于5G RCS的产品猜想

机器鸟

3NF建模&维度建模

常海峰

运维常见问题及排查思路

编程随想曲

运维

什么是 MQ ?

itfinally

系统设计 MQ

周日福利来了

志学Python

Python 福利 python教程 python视频教程

Flutter引擎源码解读-Flutter是如何在iOS上运行起来的

Geek_70xtik

flutter ios 移动应用 跨平台 dart

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