QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

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

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

关注

评论

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

批量从Word中提取图片

小小明

Python

Python实现excel公式格式化工具

小小明

Python Excel

HashMap加载因子为什么是0.75?

java_wxid

Java 面试 hashmap HashMap底层原理 加载因子

KeyChrone-K8使用体验

ITCamel

nginx配置日志为json格式,nginx按照天实现日志分割,nginx配置负载均衡

Ng

Hello World !!!

潮湿了我押韵的心情

用户需求差异化需要更专业的云管理平台 | 演讲实录

BoCloud博云

云计算 多云管理

美团3面(Java后台):NIO+BIO+Zookeeper+线程池+Redis+kafka

钟奕礼

Java 编程 程序员 架构 面试

AI技术在小程序生态质量保障方向的落地实践

百度Geek说

小程序 AI

单线程、多线程和协程的爬虫性能对比

小小明

Python 爬虫

程序员:如何写出斗帝级简历?

Java架构师迁哥

试着找一下抖音下单的用户路径地图

小匚

产品经理 产品经理训练营

互联网大厂100道Android面试题助你冲关金三银四!附小技巧

欢喜学安卓

android 程序员 面试 移动开发

剖析Android开发未来的出路在哪里,终局之战

欢喜学安卓

android 程序员 面试 移动开发

产品经理训练营 - 作业六

胡小湖

Android内存泄漏检测之LeakCanary2.0(Kotlin版)的实现原理

vivo互联网技术

android kotlin 内存泄漏

AI技术在小程序生态质量保障方向的落地实践

百度开发者中心

百度智能小程序

CloudQuery v1.3.5 上线!

BinTools图尔兹

数据库 oracle 运维 开发工具 dba

使用VUE和Element 创建一个dialog对话框组件的详细过程

尔嵘

高并发下的Redis分布式锁

java_wxid

Java redis 高并发 分布式锁 setnx

关于 JavaScript 闭包

程序员海军

JavaScript 大前端 闭包

将word试卷匹配转换为结构化表格

小小明

Python word

iOS 面试策略之简历的准备到面试流程

iOSer

ios 面试

图解 | 原来这就是 IO 多路复用

Java 程序员 架构 面试

最火前端Web组态软件(可视化)

尔嵘

大前端 可视化数据分析搭建 web组态 托拉拽组态

Java岗位阿里+字节+滴滴+美团+腾讯+百度+京东12万字面试题总结

Java架构追梦

Java 阿里巴巴 架构 腾讯 面试

MySQL四大属性(特性) 底层实现原理

java_wxid

Java MySQL 数据库 面试 底层实现原理

Pandas实战案例-冷空气活动寒潮级别分类

小小明

MySQL锁等待与死锁问题分析

Simon

MySQL 死锁

vue+element中引入百度地图

尔嵘

Vue Element 百度地图

APK反编译

行者AI

编译

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