JDK11 | 第一篇 : JDK11 介紹

1、簡介

北京時間 2018年9 月 26 日,Oracle 官方宣佈 Java 11 正式發佈。這是 Java 大版本週期變化後的第一個長期支持版本,很是值得關注。從官網便可下載, 最新發布的 Java11 將帶來 ZGC、Http Client 等重要特性。Java 11 新特性:java

從時間節點來看,JDK 11 的發佈正好處在 JDK 8 免費更新到期的前夕,同時 JDK 九、10 也陸續成爲「歷史版本」。JDK 11 將是一個 企業不可忽視的版本。程序員

2、更新的細節

在過去的不少年中,Oracle 和 OpenJDK 社區提供了接近免費的午飯,致使人們忽略了其背後的海量工做和價值,這其中包括但不單單限於:最新的安全更新,如,安全協議等基礎設施的升級和維護,安全漏洞的及時修補,這是 Java 成爲企業核心設施的基礎之一。大量的新特性、Bug 修復,例如,容器環境支持,GC 等基礎領域的加強。不少生產開發中的 Hack,其實升級 JDK 就能解決了。不斷改進的 JVM,提供接近零成本的性能優化…shell

ZGC

JDK11 引入了兩種新的 GC,其中包括也許是劃時代意義的 ZGC,雖然其目前仍是實驗特性,可是從能力上來看,這是 JDK 的一個巨大突破,爲特定生產環境的苛刻需求提供了一個可能的選擇。例如,對部分企業核心存儲等產品,若是可以保證不超過 10ms 的 GC 暫停,可靠性會上一個大的臺階,這是過去咱們進行 GC 調優幾乎作不到的,是能與不能的問題。安全

對於 G1 GC,相比於 JDK 8,升級到 JDK 11 便可免費享受到:並行的 Full GC,快速的 CardTable 掃描,自適應的堆佔用比例調整(IHOP),在併發標記階段的類型卸載等等。這些都是針對 G1 的不斷加強,其中串行 Full GC 等甚至是曾經被普遍詬病的短板,你會發現 GC 配置和調優在 JDK11 中愈來愈方便。性能優化

Flight Recorder(JFR)

**Flight Recorder(JFR)**是 Oracle 剛剛開源的強大特性。JFR 是一套集成進入 JDK、JVM 內部的事件機制框架,經過良好架構和設計的框架,硬件層面的極致優化,生產環境的普遍驗證,它能夠作到極致的可靠和低開銷。在 SPECjbb2015 等基準測試中,JFR 的性能開銷最大不超過 1%,因此,工程師能夠基本沒有心理負擔地在大規模分佈式的生產系統使用,這意味着,咱們既能夠隨時主動開啓 JFR 進行特定診斷,也可讓系統長期運行 JFR,用以在複雜環境中進行「After-the-fact」分析。微信

在保證低開銷的基礎上,JFR 提供的能力能夠應用在對鎖競爭、阻塞、延遲,JVM GC、SafePoint 等領域,進行很是細粒度分析。甚至深刻 JIT Compiler 內部,全面把握熱點方法、內聯、逆優化等等。JFR 提供了標準的 Java、C++ 等擴展 API,能夠與各類層面的應用進行定製、集成,爲複雜的企業應用棧或者複雜的分佈式應用,提供 All-in-One 解決方案。而這一切都是內建在 JDK 和 JVM 內部的,並不須要額外的依賴,開箱即用。架構

Low-Overhead Heap Profiling

它來源於 Google 等業界前沿廠商的一線實踐,經過獲取對象分配細節,爲 JDK 補足了對象分配診斷方面的一些短板,工程師能夠經過 JVMTI 使用這個能力加強自身的工具。併發

HTTP/2 Client API

新的 HTTP API 提供了對 HTTP/2 等業界前沿標準的支持,精簡而又友好的 API 接口,與主流開源 API(如,Apache HttpClient, Jetty, OkHttp 等)對等甚至更高的性能。與此同時它是 JDK 在 Reactive-Stream 方面的第一個生產實踐,普遍使用了 Java Flow API 等,終於讓 Java 標準 HTTP 類庫在擴展能力等方面,知足了現代互聯網的需求。框架

Transport Layer Security (TLS) 1.3

就是安全類庫、標準等方面的大範圍升級,它仍是中國安全專家範學雷所領導的 JDK 項目,徹底不一樣於以往的修修補補,是個很是大規模的工程。分佈式

Dynamic Class-File Constants

動態 class 文件常量。擴展了 Java class 文件格式,支持一種新的常量池形式:CONSTANT_Dynamic。

Improve Aarch64 Intrinsics

主要是針對 ARM Aarch64 架構的優化,好比提供優化的 sin、cos 等函數。

Epsilon: A No-Op Garbage Collector(Experimental)

無操做的垃圾收集器。Epsilon 是一個特殊的垃圾收集器,只處理內存分配,不負責回收。一旦堆耗盡,就關閉 JVM。

聽上去這個收集器好像沒什麼意義。不過它仍是有很多用處的。好比:

性能測試。GC 會影響性能,有了這麼一個幾乎什麼都不幹的 GC,咱們能夠過濾掉 GC 帶來的影響因素。還有些性能因素不是 GC 引入的,好比編譯器變換,利用 Epsilon GC,咱們能夠對比。就像生物學裏作實驗,咱們能夠用它作一個對照組。

另外還有內存壓力測試、VM接口測試等。

Launch Single-File Source-Code Programs

Unicode 10

升級現有 API 支持 Unicode 10。Java SE 10 實現的是 Unicode 8.0。與 Java 10 相比,Java 11 多支持 16 018 個新字符,10 種新的文字類型。

Nest-Based Access Control

基於嵌套的訪問控制。Java 11 引入了 nest 的概念,這是一個新的訪問控制上下文(context),邏輯上處於同一代碼實體中的類,儘管會被編譯爲不一樣的 class 文件,可是能夠訪問彼此的 private 成員,再也不須要編譯器插入輔助訪問的橋方法。

Dynamic Class-File Constants

動態 class 文件常量。擴展了 Java class 文件格式,支持一種新的常量池形式:CONSTANT_Dynamic。

Remove the Java EE and CORBA Modules

將 Java SE 9 中標記爲廢棄的 Java EE 和 CORBA 正式從 Java SE 平臺中刪除。

Launch Single-File Source-Code Programs

支持運行單個文件中的源代碼。在剛學習 Java 或者編寫小的工具程序時,咱們通常要先用 javac 編譯源文件,再用 java 命令運行。有了這個功能,咱們能夠直接用 java 命令運行源程序。就像這樣:

java HelloWorld.java
複製代碼

Deprecate the Nashorn JavaScript Engine

廢棄 Nashorn JavaScript 腳本引擎、API 和 jjs 工具。Nashorn 是在 JDK 8 中引入的,當時完整實現了 ECMAScript-262 5.1。不過隨着 ECMAScript 的演進加快,Nashorn 維護愈來愈困難。

Deprecate the Pack200 Tools and API

廢棄了 pack200 和 unpack200 工具,以及 java.util.jar 包中的 Pack200 API。

歡迎掃碼或微信搜索公衆號《程序員果果》關注我,關注有驚喜~

相關文章
相關標籤/搜索