2018年Java展望

jopen 6年前發布 | 24K 次閱讀 Java

2018年Java展望

英文原文: Looking Forward to Java in 2018

在 2017 年即將結束之際,讓我們展望一下 2018 年的 Java 平臺。

伴隨我們進入 2018 年的是,過去一年在 Java 世界中發生了前所未有的更多變化。其部分原因在于 Java 9 的推出,盡管推后了近一年的時間。

然而,隨著時間的推移人們可能會發現,推出 Java 9 版本的意義,遠沒有隨該新版本一并推出的 Java 版本發布周期變更為每六個月一次的意義更為重大。Java 版本發布周期的變更,意味著在 2018 年將會推出兩個 Java 新版本,而非一個。

2018 年將推出的第一個新版本稱為 Java 10,第二個新版本是 Java 11。雖然這一命名方案與現有命名看上去毫無二致,但是新版本只有經過重大公開辯論并達成最終共識后,才能得以推出。

鑒于新版本的推出將切換到這樣一種嚴格按時間點的節奏,預計這將使每個新版本中發布的 Java 特性,比迄今為止所能看到的范圍更為縮減。就 Java 10 而言,這意味著新特征的數量將相當之少。

InfoQ 先前曾報道了 Java 10 中的主要特性。此后,該版本中添加特性的僅是一些細微的(Additional Unicode Extensions)、清理性質的(移除了原生的頭部生成工具提供默認的 CA 根證書)、實驗性質的(基于 Java 的 JIT 編譯器 Graal),或是當前為利基性質的(對異構內存架構的支持)。

至于 Java 11 中考慮了哪些功能,目前更是云山霧罩。我們只能確認下列幾個功能在考慮范圍內:

一旦發布日期臨近,該特性列表肯定會被填滿。但是值得注意的是,列表中目前尚未提及 Java 值類型。這也許并不出乎意料,因為實現值類型需要對 Java 語言和運行時做重大更改,并對 Java 類型系統(包括泛型)做完全重構。

盡管當前原型已工作,但是距特性交付尚有很長的路要走。當前狀態只適用于低級別的平臺開發人員,以及那些習慣于使用基于反射(reflective)或 MethodHandle 工具的開發人員。看上去令人不可思議的是,盡管值類型將作為 Java 11 的一部分發布,但是 Oracle 依然尚未對該特性預期于何時發布公開發表任何評論。

但是,如果值類型并未作為 Java 11 的一部分提供,這將會產生連鎖反應。包含值類型的首個長期支持(LTS)版本將不會在 2021 年 9 月前發布。

在撰寫本文時,我們尚不清楚已在提案中的數據類(data classes)特性是否會出現在 Java 11 中。正如 Java 語言架構師 Brian Goetz 所介紹的:

數據類將用于解決類的表示與 API 合約間存在的復雜間接關系。通過使用數據類,編譯器可以填入一些常規類成員。

數據類提案與 Scala 的 Case 類具有一些相似之處。但是 Goetz 明確指出,數據類的設計空間中還存在一些可能的變動,該特性的整體語義含義要比目前我們能看到的更為深入。目前的數據類概念是與同處于開發過程中的模式匹配特性深度關聯在一起的。但是,這兩個特性可能會在不同的版本中提供。

與上面兩個特性都相關的是,未來可能對 Switch 形式做改進。Switch 語句塊將可作為表達式或聲明使用。

該特性相對較小,有望在 Java 11 中交付,即便數據類或模式匹配特性尚未實現。但目前情況看,該特性仍然是一個 JEP 草案。

最終將于 9 月發布的版本,其特性完成日期是 2018 年 6 月。因此,在 Java 11 的整體形態浮出水面之前,我們必須再等待數月時間。

來自: InfoQ

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!