2020年第一個候選Java增強提案,刪除Nashorn JavaScript引擎
Oracle 軟件研發總監Jim Laskey 提出了一項候選Java 增強提案(JEP),要刪除長期以來一直使用的Nashorn JavaScript 引擎、相關API 和jjs工具。這是2020 年第一個進入候選名單的JEP,並且比較成熟,有望在JDK 15 中實施。
編號JEP 372,該提案表示:Nashorn JavaScript引擎最初通過 JEP 174 集成到JDK 8中,用以替代Rhino腳本引擎。當時它是ECMAScript-262 5.1標準的完整實現。但隨著ECMAScript語言構造以及API的快速適應和修改,我們發現Nashorn難以維護。
根據該提議,兩個JDK 模塊將被永久刪除:
jdk.scripting.nashorn
:包含jdk.nashorn.api.scripting
與jdk.nashorn.api.tree
包jdk.scripting.nashorn.shell
:包含jjs
工具
但這一棄用將不會以任何方式影響javax.script API。
Nashorn JavaScript引擎發佈時,其性能與之前的Rhino實現相比,提升達到2到10倍,這也是它能替代前者的原因之一,並且其採用也很廣泛。但是在2018年9月發布的JDK 11中已經將其棄用(JEP 335),JEP 372認為這麼長的時間過去了,使用它的開發人員已經有足夠的時間進行了遷移。
不過開發者對此有不同看法,有人認為Java一直以高度向後兼容聞名,不應該刪除,有人吐槽公司還在使用Rhino,也有人建議直接切換到GraalVM,因為它是JavaScript與Node的更完整的實現,並且速度更快。