天天看點

JDK 18 最新動态和 JDK 19 新特性預測

作者 | Michael Redlich

譯者 | 平川

策劃 | 丁曉昀

JDK 18 是 JDK 17 之後第一個非 LTS 版本。按照甲骨文公司 Java 平台組首席架構師 Mark Reinhold 的說法,JDK 18 已進入初始候選釋出階段。JDK 穩定庫分支已于 2021 年 12 月初從主幹源碼庫建立(Rampdown Phase One)。該分支定義了 JDK 18 的特性集。嚴重缺陷,如回歸或嚴重的功能問題,還可以解決,但必須通過 Fix-Request 流程審批。

最終的特性集包含 9 個新特性。這些以 JEP 形式出現的特性可以分為三類:核心 Java 庫、Java 工具和 Java 規範。我們對這些特性進行了研究,其中一些屬于四大 Java 項目——Amber、Loom、Panama 和 Valhalla——的範疇。這些項目旨在孵化一系列元件,通過策劃合并最終納入 JDK。

以下 7 項新特性可以歸入核心 Java 庫:

其中兩項,JEP 417 和 JEP 419,為實作Panama項目提供了持續的貢獻。該項目旨在改進和完善 JVM 與明确定義的“外部”(即非 Java API,很可能包含 C 程式庫中常用的接口)之間的互操作性。Panama 項目于 2014 年啟動,由甲骨文軟體架構師 Maurizio Cimadamore 負責。其早期通路建構基于 JDK 19 的一個不完整版本,最近一次更新是在 2022 年 1 月 18 日。

JEP 418 為實作Loom項目提供了持續的貢獻。該項目旨在探索、孵化和提供 Java VM 特性和 API,以支援易于使用、高吞吐量的新型輕量級并發程式設計模型。這将通過虛拟線程、定界延續(delimited continuations)和尾調用來完成。Loom 項目于 2018 年啟動,由甲骨文公司技術部門咨詢顧問 Ron Pressler 負責。其早期通路建構基于 JDK 19 的早期通路建構 Build 9,最近一次更新是在 2022 年 2 月 13 日。

剩下的兩個 JEP:

JEP 413:Java API 文檔中的代碼片段

該 JEP 屬于第二類Java 工具,為 Oracle 的 Standard Doclet(就是那個有名的 Java API 文檔工具,預設生成 HTML 格式的輸出)引入了@snippet标簽。其目的是為了簡化 API 文檔中示例源代碼的收錄。

JEP 420:Switch 模式比對(第二個預覽版)

該 JEP 屬于Java 規範類,它為完成Amber 項目做出了持續的貢獻。該項目旨在探索和孵化可以提高生産力的 Java 語言小特性。Amber 項目于 2017 年啟動,由甲骨文公司 Java 語言架構師 Brian Goetz 負責。

按照釋出時間表,JDK 18 的正式釋出日期是 2022 年 3 月 22 日。

JDK 19

按照計劃,JDK 19 将在 2022 年 9 月正式釋出,目前該版本還沒有錨定任何 JEP。不過,根據最近的 JEP 草案、JEP 候選以及 Oracle Java 開發大使 Nicolai Parlog 的 Java 内部新聞播報(第 18 期) (Java 的 2022 計劃),我們可以推測出哪些 JEP 有可能被納入 JDK 19。

Valhalla 項目旨在探索和孵化 JVM 和 Java 語言進階候選特性。這包括值類型、泛型特化和關鍵字 volatile 增強。Valhalla 項目于 2014 年啟動,也是由 Brian Goetz 上司的。早期通路建構最後更新是在 2019 年 8 月 30 日,目前還非常有限。不過,在過去的一年中,這個項目内的活動有所增加。

2022 年,Valhalla 項目計劃包括:值類(JEP 草案 8277163:值對象(預覽));原始類(JEP 401:原始類(預覽)和 JEP 402:基本原始類(預覽));通用泛型(JEP 草案 8261529:通用泛型(預覽))。要想了解更多關于 Valhalla 項目的資訊,建議開發人員閱讀 Goetz 在 2021 年 12 月發表的三篇系列文章:

Valhalla 項目現狀第一部分:通往 Valhalla 之路

Valhalla 項目現狀第二部分:語言模型

Valhalla 項目現狀第三部分:JVM 模型

2022 年,Amber 項目的計劃包括:最終确定 switch 中的模式(可能是繼 JEP 420 和 JEP 406:switch 模式比對(預覽版)(随 JDK 17 傳遞)之後的第三個預覽版);引入更多的模式,如記錄 / 數組的解構(JEP 405:記錄模式(預覽版)),可能還有正常類。JEP 405 最初名為記錄模式 & 數組模式(預覽版),與 JEP 406 關系密切。

2022 年,Panama 項目的計劃包括:将目前正在孵化的外部 API 遷移到預覽版中;改進外部 API 的實作;決定jextract的未來,即它是否應該成為一個獨立的項目,并有一個相應的存儲庫;在 Valhalla 項目實作值類型和原始類型之前,暫緩 Vector API。JEP 草案 8280173:Vector API(四階段孵化),提議根據 Java 社群對之前三個 JEP 的回報,引入增強功能。這三個 JEP 分别是:JEP 338:Vector API(孵化),随 JDK 16 傳遞;JEP 414,Vector API(二階段孵化),随 JDK 17 傳遞;JEP 417:Vecotr API(三階段孵化),将随即将釋出的 JDK 18 GA 版本傳遞。

2022 年,Loom 項目的計劃包括:完成 JEP 草案 8277131:虛拟線程(預覽版)和 JEP 草案 8277129:結構化并發(孵化);将這些特性并入 JDK 主庫;進一步探索如何簡化高并發應用程式調試,并進一步完善結構化并發。JEP 草案 8263012:作用域局部變量(Scope Locals(孵化器)),建議用作用域局部變量來增強 Java API,它們是作用域動态變化的 final 局部值。它們允許一種輕量級的線程繼承形式。

我們預計,甲骨文将很快圍繞 JDK 19 開展有關這些及其他 JEP 的工作。

作者簡介:

Michael Redlich 是位于紐澤西州克林頓的埃克森美孚工程研究部門進階研究員(他在本文中的觀點和意見僅代表他自己,和他的雇主無關)。他是一名 IT 專業人士,擁有羅格斯大學計算機科學學士學位。自 2001 年以來,他一直是花園州 Java 使用者組(原 ACGNJ Java 使用者組)的主持人,同時也是一位經驗豐富的會議發言人,在加入 InfoQ 之前與 Barry Burd 合作撰寫了多篇文章。自 1989 年 12 月以來,作為埃克森公司和埃克森美孚公司的長期雇員,Mike 在公司中承擔了許多任務,包括汽車測試、從事利用紅外光譜學和化學計量學的分析科學研究、開發科學方面的 IT 應用,他目前的任務是從事利用流變學和聚合物實體學的高分子科學研究。在他的職業生涯中,Mike 發展了自己的上司能力,他曾擔任紐澤西州業餘計算機小組(一個非營利性的 501(c)(3) 計算機教育組織)的主席,目前則擔任花園州 Java 使用者組(也是一個非營利性的 501(c)(3) 組織)的主管。Mike 是國際演講協會的成員,最近取得了進階溝通者銀牌證書。他酷愛跑步和騎行,完成了許多馬拉松比賽。Mike 與他的妻子 Rowena 居住在紐澤西州弗萊明頓,他們在那裡共度美好時光,騎行或跑步,旅行的話,則主要是到洛杉矶的新奧爾良和裡約熱内盧的新港。

https://www.infoq.com/news/2022/03/java-18-so-far/?

繼續閱讀