2020年第一個候選Java增強(qiáng)提案,刪除Nashorn JavaScript引擎

? ???文章來源:開源中國
? ? ?Oracle 軟件研發(fā)總監(jiān) Jim Laskey 提出了一項(xiàng)候選 Java 增強(qiáng)提案(JEP),要刪除長期以來一直使用的 Nashorn JavaScript 引擎、相關(guān) API 和jjs工具。這是 2020 年第一個進(jìn)入候選名單的 JEP,并且比較成熟,有望在 JDK 15 中實(shí)施。

? ? ?編號 JEP 372,該提案表示:Nashorn JavaScript 引擎最初通過?JEP 174?集成到 JDK 8 中,用以替代 Rhino 腳本引擎。當(dāng)時它是 ECMAScript-262 5.1 標(biāo)準(zhǔn)的完整實(shí)現(xiàn)。但隨著 ECMAScript 語言構(gòu)造以及 API 的快速適應(yīng)和修改,我們發(fā)現(xiàn) Nashorn 難以維護(hù)。
根據(jù)該提議,兩個 JDK 模塊將被永久刪除:
jdk.scripting.nashorn:包含?jdk.nashorn.api.scripting?與?jdk.nashorn.api.tree?包
jdk.scripting.nashorn.shell:包含?jjs?工具
但這一棄用將不會以任何方式影響 javax.script API。
? ? ?Nashorn JavaScript 引擎發(fā)布時,其性能與之前的 Rhino 實(shí)現(xiàn)相比,提升達(dá)到 2 到 10 倍,這也是它能替代前者的原因之一,并且其采用也很廣泛。但是在?2018 年 9 月發(fā)布的 JDK 11 中已經(jīng)將其棄用(JEP 335),JEP 372 認(rèn)為這么長的時間過去了,使用它的開發(fā)人員已經(jīng)有足夠的時間進(jìn)行了遷移。
? ? ?不過開發(fā)者對此有不同看法,有人認(rèn)為 Java 一直以高度向后兼容聞名,不應(yīng)該刪除,有人吐槽公司還在使用 Rhino,也有人建議直接切換到 GraalVM,因?yàn)樗?JavaScript 與?Node 的更完整的實(shí)現(xiàn),并且速度更快。