Java 9新特性匯總

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

  繼 2014 年 3 月份 Java 8 發布之后,Open JDK 加快了開發速度, Java 9 的發布已經提上日程。預計在 2016 年發布 Java 9,同時公布了 JEP (JDK 改進提議)中的前期列表。任職于 Takipi 的 Alex Zhitnitsky 整理了 Java 9 中一些納入 JSR (Java 規范提案)的新特性和大家一直期待但未確定的一些特性。這些特性有 Jigsaw 項目、新的智能編譯工具、期待已久的 API (如簡化了的進程 API、JSON API、貨幣處理 API 等)、代碼分段緩存等。

  現就對這些特性進行了一個全面的梳理。

  已接受的特性

  1、 Jigsaw 項目:模塊化 JDK 源碼

  Jigsaw 項目即 JEP201是為了模塊化 Java 代碼,并將 JRE 分 成相互協作的組件。JEP 是邁向 Jigsaw 四步中的第一步,它只是模塊化 JDK 源代碼,不會改變 JRE 和 JDK 的真實結構,從而使得編譯系統能夠模塊編譯并在構建時檢查模塊邊界。這個項目原本是隨著 Java 8 發布的,但由于推遲,所以將把它加到 Java 9 中。Jigsaw 項目一旦完成,將允許開發者根據項目的需要自定義組件,從而減少 rt.jar 的大小;還可以做到使 Java 能夠更加容易的應用到小型計算設備(如網絡設備)中,同時也能夠使得開發者更加容易地構建和維護這些類庫。更多相關信息參見 JEP201。

  2、簡化了的進程 API

  目前,Java 控制與管理系統進程的能力是有限的,為了獲得操作系統的一些信息需要調用本地程序或者其他變通方案。然而,在 Java 9 中將會新增一些新的、直接明了的方法來處理進程 ID、名字和狀態以及枚舉多個 JVM 和進程等,從而擴展 Java 與操作系統的交互能力。更多相關信息參見 JEP102

  3、 輕量級的 JSON API

  盡管目前有多種處理 JSON 的 Java 工具(如 Google 的 Gson、阿里巴巴的 FastJson、IBM 的 Json4J 等),但 JSON API 是 Java 語言的一部分,輕量并且運用了 Java 8 的新特性。JSON API 將放在 java.util 包里一起發布,這樣,開發者就可以直接使用 JDK 而無需再引入第三方 JSON 工具包了。更多相關信息參見 JEP198

  4、 錢和貨幣的相關 API

  Java 9 引入了新的貨幣 API, 用來表示貨幣, 并支持幣種之間的轉換和各種復雜運算。更多的相關具體信息,參見 JavaMoney 項目和 JSR354

  5、 改善鎖爭用機制

  鎖爭用限制了許多 Java 多線程應用性能,新的鎖爭用機制改善了 Java 對象監視器的性能,并得到了多種基準測試的驗證(如 Volano),這類測試可以估算 JVM 的極限吞吐量。實際中, 新的鎖爭用機制在 22 種不同的基準測試中都得到了出色的成績。如果新的機制能在 Java 9 中得到應用的話, 應用程序的性能將會大大提升。更多相關信息參見 JEP143

  6、代碼分段緩存

  Java 9 的另一個性能提升來自于 JIT (Just-in-time)編譯器。當某段代碼被大量重復執行的時候, 虛擬機會把這段代碼編譯成機器碼(native code)并儲存在代碼緩存里面, 繼而通過訪問緩存中不同分段的代碼來提升編譯器的效率。代碼分段緩存機制將會提升許多方面的性能,如當 JVM 進行垃圾回收掃描的時候,就可以直接跳過永駐代碼,從而提升效率。更多相關信息參見 JEP197

  7、智能 Java 編譯工具

  智能 Java 編譯工具(sjavac)的第一階段始于 JEP139這個項目, 用于在多核處理器情況下提升 JDK 的編譯速度。如今,這個項目已經進入第二階段即 JEP199, 其目的是改進 Java 編譯工具,并取代目前 JDK 編譯工具 javac,繼而成為 Java 環境默認的通用的智能編譯工具。更多相關信息參見 JEP199。

  期待但未確定的特性

  1. HTTP 2.0客戶端

  雖然 HTTP 2.0 標準還沒正式發布, 但是它已經進入了最終審查階段,并預計將在 Java 9 發布之前審查完畢。HTTP 2.0 客戶端即 JEP110將 重新定義并實現一個全新的 Java HTTP 客戶端, 用來取代現在的 HttpURLConnection, 同時還會實現 HTTP 2.0 和 WebSockets 等接口。另外,官方的 HTTP 2.0 RFC 預計于 2015 年 2 月發布, 它基于 Google 的 SPDY 協議。基于 SPDY 協議的網絡相對于基于 HTTP 1.1 協議的網絡有 11.81% 到 47.7% 的顯著提速。更多相關信息參見 JEP110。

  2. Kulla項目: Java 的 REPL 實現

  現在,Java 官方并沒有提供 REPL (讀取-求值-打印-循環)的實現。當我們需要運行幾行 Java 代碼做一個快速測試時, 我們不得不把這幾行代碼封裝在項目或者方法里,才可以完成測試,而 Kulla 彌補了這些不足。Kulla 將于 2015 年 4 月進行整合測試,如果 Kulla 進度比較快的話,或許能夠加入到 Java 9 中,就有希望成為 Java 官方發布的 REPL 解決方案。更多關于 Kulla 的相關信息參見于 Kulla 的計劃安排。

  另外,請讀者注意,JEP 和 JSR 來自 Java 發展的生態環境,包括對特定技術內容有共同興趣的組織和個人組成的小組、至少由一個小組贊助和支持的項目(如最近的 Lambda 項目、Jigsaw 項目、Sumatra 項目)、被正式認可的 JEP 以及 JSR。

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