Java 11已經發布

程式碼灣發表於2018-10-07

Java 11終於推出了,它是Oracle在推行LTS(長期支援,Long-Term Support)後首個按計劃推出的版本。雖然Oracle出於縮小舊版本模型和新方法間差距的考慮,也將早期的Java 8納入到LTS釋出中。

與今年早期的報導相比,新版本的特性列表發生了巨大的變化。Java 11中的新特性主要包括:

  • 基於巢狀的訪問控制(即“Nestmates”):重新審視了內部類的實現方式,編譯器無需插入橋接(Bridge)方法。
  • 動態類檔案常量(即“Condy”):降低了代價,無需新建物化的類檔案常量。Condy將提高效能,並提供新的平臺方法。
  • ZGC(實驗性):ZGC是一種全新的垃圾回收器(GC),設計在最高付出15%效能犧牲代價的情況下,實現低於10毫秒的暫停時間(即便對於大型堆)。
  • 黑匣子(Flight Recorder):一種低代價的資料採集框架,用於為Java應用和HotSpot JVM提供查錯。黑匣子在前期版本中是一個商業特性,在新版本中開源提供。
  • 新的標準HTTP軟體庫:新模組java.net.http實現了API孵化的標準化,支援基於流的HTTP/1.1和HTTP/2。
  • TLS 1.3:實現了最近標準化的新版本傳輸層安全協議(TLS,Transport Layer Security)。
  • Lambda引數的本地變數語法:更新了Labmda語法,支援使用Java 10引入的var型別推理。

為精簡Java核心產品,新版本還清理了一些舊特性:

  • Java EE和CORBA模組:如果應用需要EE和CORBA模組,那麼應用需明確指明對這些模組的依賴。
  • Web Start:完全清除,不提供替代特性。
  • Applets:在大多數情況下嚴重推薦不使用,最終將被清理。
  • JavaFX:FX軟體庫已經遷移到OpenJFX專案,並從核心中移除。

譯註: 自JavaFX於2012年開源併為OpenJDK專案下的OpenJFX子專案之後,它就已不再是Java SE的組成部分。這意味著OpenJFX的API將不再遵循JSR。由Oracle建立並分支的OpenJDK二進位制版本Oracle JDK 11已正式宣稱移除了JavaFX,但JavaFX依然是OpenJDK專案的組成部分。自2012年以後,如果OpenJDK開發人員想要構建或執行JavaFX應用,那麼必須要額外下載OpenJFX,因為OpenJDK中並未包括OpenJFX。)

需特別指出的是,EE模組中包括對JAXB和SOAP的支援,這兩個元件在很多企業中依然廣為使用。對於已升級到新版本的開發團隊,應該做一些仔細的檢查,已確認是否需要針對這些改進修改構建指令碼。

Oracle Java平臺組軟體開發副總Georges Saab對Java的新LTS模型做出如下評價:

LTS版本釋出模型支援我們的客戶按自己的節奏在受良好支援的Java SE LTS釋出版本間的遷移,同時也支援Java開發人員生態系統更快地接觸到最新改進。

今年早期提供的一個幻燈片中,給出了一些新特性的例子。在InfoQ對ByteBuddy創始人Rafael Winterhalter的採訪中,談及了包括Condy和Nestmates在內的一些類檔案新格式上的改進。

Oracle將在官方網站下載頻道和其它軟體提供商處提供Java 11的下載。但目前為止,官網下載頻道尚未更新。

相關文章