1. 程式人生 > >JDK 11新特性解讀

JDK 11新特性解讀

官網地址:http://openjdk.java.net/projects/jdk/11/

JDK 11 已確定了 15 個 JEP,下面是完整的列表:

181: 基於巢狀的訪問控制(Nest-Based Access Control)
309: 動態類檔案常量(Dynamic Class-File Constants)
315: 改進 Aarch64 Intrinsics(Improve Aarch64 Intrinsics)
318: Epsilon — 一個無操作的垃圾收集器(Epsilon: A No-Op Garbage Collector)
320: 刪除 Java EE 和 CORBA 模組(Remove the Java EE and CORBA Modules)
321: HTTP Client (Standard)
323: 用於 Lambda 引數的區域性變數語法(Local-Variable Syntax for Lambda Parameters)
324: Curve25519 和 Curve448 演算法的金鑰協議(Key Agreement with Curve25519 and Curve448)
327: Unicode 10
328: Flight Recorder
329: ChaCha20 和 Poly1305 加密演算法(ChaCha20 and Poly1305 Cryptographic Algorithms)
330: 啟動單一檔案的原始碼程式(Launch Single-File Source-Code Programs)
331: Low-Overhead Heap Profiling
333: 處於試驗階段的可伸縮低延遲垃圾收集器 ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
336: 棄用 Pack200 工具和 API(Deprecate the Pack200 Tools and API)


特性解讀

JEP 318:Epsilon: A No-Op Garbage Collector

JDK上對這個特性的描述是:開發一個處理記憶體分配但不實現任何實際記憶體回收機制的GC,一旦可用堆記憶體用完,JVM就會退出。

如果有System.gc()的呼叫,實際上什麼也不會發生(這種場景下和-XX:+DisableExplicitGC效果一樣),因為沒有記憶體回收,這個實現可能會警告使用者嘗試強制GC是徒勞。

用法非常簡單:-XX:+UseEpsilonGC。


JEP 320: Remove the Java EE and CORBA Modules

Java EE和CORBA兩個模組在JDK9中已經標記"deprecated",在JDK11中正式移除。JDK中deprecated的意思是在不建議使用,在未來的release版本會被刪除。


JEP 321: HTTP Client (Standard)

將JDK9引進並孵化的HTTP客戶端API作為標準,即HTTP/2 Client。它定義了一個全新的實現了HTTP/2和WebSocket的HTTP客戶端API,並且可以取代HttpURLConnection。


JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)

ZGC:這應該是JDK11最為矚目的特性,沒有之一。但是後面帶了Experimental,說明還不建議用到生產環境。看看官方對這個特性的目標描述:

  • GC暫停時間不會超過10ms;

  • 即能處理幾百兆小堆,也能處理幾個T的大堆(OMG);

  • 和G1相比,應用吞吐能力不會下降超過15%;

  • 為未來的GC功能和利用colord指標以及Load barriers優化奠定基礎;

  • 初始只支援64位系統;

用法:-XX:+UnlockExperimentalVMOptions -XX:+UseZGC,因為ZGC還處於實驗階段,所以需要通過JVM引數UnlockExperimentalVMOptions 來解鎖這個特性。