導讀:Java 12 終於釋出了,我們一起來看一看 Java 12 中的新特性。透過本文可以在5分鐘內快速瞭解 Java 12 新特性。
1 Switch 運算式
使用Java 12,switch不僅可以作為陳述句也可以作為運算式。 無論作為陳述句或者作為運算式,switch都可以使用傳統/簡化的作用域和控制流行為。 這將有助於簡化程式碼,併為在switch中使用樣式匹配鋪平道路。
Java開發人員正在增強Java程式語言,以使用樣式匹配來解決當前switch陳述句的幾個問題。 這包括:switch塊的預設控制流行為,switch塊預設作用域(被視為單個作用域的塊)和switch僅作為陳述句。
在Java 11中,switch陳述句追隨C和C++,預設情況下使用fall-through語意。 雖然傳統的控制流程在編寫低階程式碼時很有用,但隨著switch在更高階別的環境中採用,易出錯會蓋過其靈活性。
Java 11
Java 12
2 預設CDS歸檔
透過在64位平臺上的預設類串列的幫助下生成CDS歸檔來改進JDK構建過程,從而有效地消除了執行java -Xshare:dump。 此功能的標的包括:1。)改進開箱即用的啟動時間,以及2.)擺脫使用-Xshare:dump。
3 Shenandoah GC
Shenandoah是一種垃圾收集(GC)演演算法,旨在保證低延遲(10 – 500 ms的下限)。 它透過在執行Java工作執行緒的同時執行GC操作減少GC暫停時間。 使用Shenandoah,暫停時間不依賴於堆的大小。 這意味著無論堆的大小如何,暫停時間都是差不多的。
這是一個實驗性功能,不包含在預設(Oracle)的OpenJDK版本中。
4 JMH 基準測試
此功能為JDK原始碼添加了一套微基準測試(大約100個),簡化了現有微基準測試的執行和新基準測試的建立過程。 它基於Java Microbenchmark Harness(JMH)並支援JMH更新。
此功能使開發人員可以輕鬆執行當前的微基準測試併為JDK原始碼新增新的微基準測試。 可以基於Java Microbenchmark Harness(JMH)輕鬆測試JDK效能。 它將支援JMH更新,併在套件中包含一組(約100個)基準測試。
5 JVM 常量 API
JEP 334引入了一個API,用於建模關鍵類檔案和執行時artifacts,例如常量池。 此API將包括ClassDesc,MethodTypeDesc,MethodHandleDesc和DynamicConstantDesc等類。此 API 對於操作類和方法的工具很有幫助。
6 G1的可中斷 mixed GC
此功能透過將Mixed GC集拆分為強制部分和可選部分,使G1垃圾收集器更有效地中止垃圾收集過程。透過允許垃圾收集過程優先處理強制集,g1可以更多滿足滿足暫停時間標的。
G1是一個垃圾收集器,設計用於具有大量記憶體的多處理器機器。由於它提高了效能效率,g1垃圾收集器最終將取代cms垃圾收集器。
G1垃圾收集器的主要標的之一是滿足使用者設定的暫停時間。G1採用一個分析引擎來選擇在收集期間要處理的工作量。此選擇過程的結果是一組稱為GC集的區域。一旦GC集建立並且GC已經開始,那麼G1就無法停止。
如果G1發現GC集選擇選擇了錯誤的區域,它會將GC區域的拆分為兩部分(強制部分和可選部分)來切換到處理Mix GC的增量樣式。如果未達到暫停時間標的,則停止對可選部分的垃圾收集。
7 G1歸還不使用的記憶體
此功能的主要標的是改進G1垃圾收集器,以便在不活動時將Java堆記憶體歸還給作業系統。 為實現此標的,G1將在低應用程式活動期間定期生成或持續迴圈檢查完整的Java堆使用情況。
這將立即歸還未使用的部分Java堆記憶體給作業系統。 使用者可以選擇執行FULL GC以最大化傳回的記憶體量。
8 移除多餘ARM64實現
Java 12將只有一個ARM 64位實現(aarch64)。 標的是刪除所有與arm64實現相關的程式碼,同時保留32位ARM埠和64位aarch64實現。
這將把重點轉移到單個64位ARM實現,並消除維護兩個實現所需的重覆工作。 當前的JDK 11實現中有兩個64位ARM實現。
原文地址:
https://stackify.com/java-12-new-features-and-enhancements-developers-should-know/
本文作者JAZMINE LLAGUNO,由方圓翻譯。轉載本文請註明出處,歡迎更多小夥伴加入翻譯及投稿文章的行列,詳情請戳公眾號選單「聯絡我們」。GIAC全球網際網路架構大會深圳站將於2019年6月舉行,屆時將有Java等專題深入探討相關話題,敬請期待。
參考閱讀:
技術原創及架構實踐文章,歡迎透過公眾號選單「聯絡我們」進行投稿。轉載請註明來自高可用架構「ArchNotes」微信公眾號及包含以下二維碼。
高可用架構
改變網際網路的構建方式
長按二維碼 關註「高可用架構」公眾號