JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

時隔JAVA8發佈3年後,JAVA9才遲遲地走到我們面前。你可以說, Java 9 帶來了很多顛覆性的新功能。甲骨文最近透露, Java 版本的命名也會隨著時間的推移變化。從現在起, java 計劃每6個月的發佈節奏, 下一個主要版本, 在截止 2018年3月分,將發佈,其版本號為 java 18.3,隨後是 六月後,2018年9月份,將會發布 java 18.9。Java 的新發布節奏也意味著 JDK 9 不會被指定為長期的版本。相反, 下一個長期版本將是 Java 18.9。Java 更快的發佈節奏意味著開發人員不必等待很長時間才能發佈主要版本。這也預示著新的功能也會越來越成熟。言歸正傳,那麼這次新版本帶來了哪些新的特性和重大變革呢? 讓我們先來一睹為快,絕對值得收藏紀念。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

模塊化帶來的變革

Java 9 以 Java 模塊的形式,將 JDK 分成一組組的模塊, 用於在運行、編譯或生成時進行組合。模塊化可以傳遞並理解跨域模塊的依賴關係。

模塊化應該讓開發人員更容易地組裝和維護複雜的應用程序。此外, 它還應使 Java 能夠更好地擴展到較小的設備, 同時提高安全性和性能。

Java 9 的模塊化方面包括應用程序打包、模塊 JDK 本身, 以及將源代碼重新整合到模塊中。重新調整 JDK 和 Java 運行時環境 (JRE) 映像以處理模塊。此外, JavaFX UI 控件和 CSS API 現在可用於模塊化。

為了使遷移到模塊化的 Java 9 更容易, java 9 允許對類路徑上的代碼進行非法的反射訪問, JRE 用於搜索類和資源文件。在 Java 9 之後, 此功能將不被允許。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

Java 9 代碼的編譯器改進

Java 9 升級功能為編譯代碼提供了幾個新功能, 其中首要的是時間提前 (AoT) 編譯。仍處於實驗階段, 此功能允許在虛擬機中啟動 Java 類到本機代碼的編譯。此功能旨在提高小型和大型應用程序的啟動時間, 對峰值性能的影響有限。

實時 (JIT) 編譯器速度很快, 但是 java 程序變得非常大, JIT 完全預熱需要很長時間, 使得一些 java 方法編譯並削弱了性能。提前編譯是為了解決這些問題。

另一個新的實驗編譯功能是 Java 級的 JVM 編譯器接口 (JVMCI)。此接口允許用 Java 編寫的編譯器被 JVM 用作動態編譯器。JVMCI 的 API 提供了訪問 VM 結構、安裝已編譯代碼和插入 JVM 編譯系統的機制。

在 Java 中編寫 JVM 編譯器應該允許一個比用 c 或 c++ 編寫的現有編譯器更易於維護和改進的高質量編譯程序。因此, 用 Java 編寫的編譯器應該更易於維護和改進。

一個新的編譯器控制功能旨在提供對 JVM 編譯器的細粒度和方法上下文相關的控制, 讓開發人員在運行時更改編譯控制選項, 而不會降低性能。該工具還為 JVM 編譯器 bug 啟用了變通方法。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

REPL 終於來到了 Java 9

用過Python的童鞋都知道,Python 中的讀取-求值-打印循環( Read-Evaluation-Print Loop )很方便。它的目的在於以即時結果和反饋的形式。

命令行工具的功能包括製表符完成和自動添加所需的終端分號。jShell API 允許 ide 和其他工具中的 jShell 功能, 儘管該工具本身不是 IDE。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

Java 9 中流 API 的增強功能

在 Java 9 中, 流 API 添加以有條件地從流中刪除項, 遍歷流元素, 並從可空值創建流的方法, 同時支持擴展,以用作流源的 Java SE API 集。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

代碼緩存可以在 Java 9 中劃分為段

JDK 9 允許將代碼緩存劃分為段以提高性能並允許擴展 (如細粒度鎖定)。由於專用迭代器跳過非方法代碼, 因此應改進掃描時間;分離非方法、異型和非異型代碼;並改進一些基準的執行時間。

HTTP/2 客戶端 API 來到 Java 9

JDK9之前提供HttpURLConnection API來實現Http訪問功能,但是這個類基本很少使用,一般都會選擇Apache的Http Client,此次在Java 9的版本中引入了一個新的package:java.net.http,裡面提供了對Http訪問很好的支持,不僅支持Http1.1而且還支持HTTP2,以及WebSocket,據說性能特別好。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

DTLS 安全 API 添加到 Java 9 中

為了安全, Java 9 為 DTLS 添加了一個 API (數據報傳輸層安全性)。該協議旨在防止客戶端/服務器通信中的竊聽、篡改和郵件偽造。為客戶端和服務器模式提供了實現。

JDK 9閉關修煉三年,帶來了哪些讓人耳目一新的變化和功能呢?

什麼是 Java 9 不推薦和刪除的功能

Java 9 不推薦或刪除了一些不再流行的功能。其中最主要的 Applet API, 這是不推薦的。由於安全意識的瀏覽器製造商一直在刪除對 Java 瀏覽器插件的支持, 現在已經過時了。HTML5 的到來也加速了他們的滅亡。開發人員現在被引導到諸如 Java Web 啟動、從瀏覽器啟動應用程序或可安裝應用程序等替代方案。

appletviewer 工具也被刪除了。

Java 9 支持在將來的版本中停止對併發標記掃描 (CMS) 垃圾回收器的使用。其目的是加快熱點虛擬機中其他垃圾收集器的開發。低停頓 G1 垃圾回收器將來會取代 CMS 。

同時, jdk 8 中以前棄用的垃圾回收組合將被刪除。其中包括很少使用的組合, 如增量 cms、ParNew + SerialOld 和 DefNew + CMS, 這增加了垃圾回收器代碼庫的額外複雜性。

在 Java 9 中也刪除了通過多個 JRE (mJRE) 功能在啟動時選擇 JRE 的能力。該功能很少使用, 複雜的 Java 啟動器的實現, 它從來沒有完全記錄, 當它首次亮相 JDK 5。

Oracle 已經刪除了 jvm TI (工具接口) hprof (堆分析) 代理, 它已在 jvm 中被取代。jhat 工具也被刪除了, 並已被高級堆可視和分析器廢棄。

後記

  • 寫作分享不易,您的收藏,關注和留言是我前進的最大動力;

  • 如果你有任何疑問需要探討,歡迎在文章末尾留言,我儘量在第一時間個大家回覆。


分享到:


相關文章: