溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JDK11 | 第一篇 : JDK11 介紹

發(fā)布時(shí)間:2020-07-04 17:43:03 來(lái)源:網(wǎng)絡(luò) 閱讀:367 作者:程序員果果 欄目:編程語(yǔ)言

文章首發(fā)于公眾號(hào)《程序員果果》

地址 : https://mp.weixin.qq.com/s/cOqRVlDgOqfDfKtkk1JGxw

一、簡(jiǎn)介

北京時(shí)間 2018年9 月 26 日,Oracle 官方宣布 Java 11 正式發(fā)布。這是 Java 大版本周期變化后的第一個(gè)長(zhǎng)期支持版本,非常值得關(guān)注。從官網(wǎng)即可下載, 最新發(fā)布的 Java11 將帶來(lái) ZGC、Http Client 等重要特性。Java 11 新特性:

JDK11  |  第一篇 : JDK11 介紹

從時(shí)間節(jié)點(diǎn)來(lái)看,JDK 11 的發(fā)布正好處在 JDK 8 免費(fèi)更新到期的前夕,同時(shí) JDK 9、10 也陸續(xù)成為“歷史版本”。JDK 11 將是一個(gè)?企業(yè)不可忽視的版本。

二、更新的細(xì)節(jié)

在過(guò)去的很多年中,Oracle 和 OpenJDK 社區(qū)提供了接近免費(fèi)的午餐,導(dǎo)致人們忽略了其背后的海量工作和價(jià)值,這其中包括但不僅僅限于:最新的安全更新,如,安全協(xié)議等基礎(chǔ)設(shè)施的升級(jí)和維護(hù),安全漏洞的及時(shí)修補(bǔ),這是 Java 成為企業(yè)核心設(shè)施的基礎(chǔ)之一。大量的新特性、Bug 修復(fù),例如,容器環(huán)境支持,GC 等基礎(chǔ)領(lǐng)域的增強(qiáng)。很多生產(chǎn)開(kāi)發(fā)中的 Hack,其實(shí)升級(jí) JDK 就能解決了。不斷改進(jìn)的 JVM,提供接近零成本的性能優(yōu)化…

ZGC

JDK11 引入了兩種新的 GC,其中包括也許是劃時(shí)代意義的 ZGC,雖然其目前還是實(shí)驗(yàn)特性,但是從能力上來(lái)看,這是 JDK 的一個(gè)巨大突破,為特定生產(chǎn)環(huán)境的苛刻需求提供了一個(gè)可能的選擇。例如,對(duì)部分企業(yè)核心存儲(chǔ)等產(chǎn)品,如果能夠保證不超過(guò) 10ms 的 GC 暫停,可靠性會(huì)上一個(gè)大的臺(tái)階,這是過(guò)去我們進(jìn)行 GC 調(diào)優(yōu)幾乎做不到的,是能與不能的問(wèn)題。

JDK11  |  第一篇 : JDK11 介紹

對(duì)于 G1 GC,相比于 JDK 8,升級(jí)到 JDK 11 即可免費(fèi)享受到:并行的 Full GC,快速的 CardTable 掃描,自適應(yīng)的堆占用比例調(diào)整(IHOP),在并發(fā)標(biāo)記階段的類型卸載等等。這些都是針對(duì) G1 的不斷增強(qiáng),其中串行 Full GC 等甚至是曾經(jīng)被廣泛詬病的短板,你會(huì)發(fā)現(xiàn) GC 配置和調(diào)優(yōu)在 JDK11 中越來(lái)越方便。

Flight Recorder(JFR)

Flight Recorder(JFR)是 Oracle 剛剛開(kāi)源的強(qiáng)大特性。JFR 是一套集成進(jìn)入 JDK、JVM 內(nèi)部的事件機(jī)制框架,通過(guò)良好架構(gòu)和設(shè)計(jì)的框架,硬件層面的極致優(yōu)化,生產(chǎn)環(huán)境的廣泛驗(yàn)證,它可以做到極致的可靠和低開(kāi)銷。在 SPECjbb2015 等基準(zhǔn)測(cè)試中,JFR 的性能開(kāi)銷最大不超過(guò) 1%,所以,工程師可以基本沒(méi)有心理負(fù)擔(dān)地在大規(guī)模分布式的生產(chǎn)系統(tǒng)使用,這意味著,我們既可以隨時(shí)主動(dòng)開(kāi)啟 JFR 進(jìn)行特定診斷,也可以讓系統(tǒng)長(zhǎng)期運(yùn)行 JFR,用以在復(fù)雜環(huán)境中進(jìn)行“After-the-fact”分析。

在保證低開(kāi)銷的基礎(chǔ)上,JFR 提供的能力可以應(yīng)用在對(duì)鎖競(jìng)爭(zhēng)、阻塞、延遲,JVM GC、SafePoint 等領(lǐng)域,進(jìn)行非常細(xì)粒度分析。甚至深入 JIT Compiler 內(nèi)部,全面把握熱點(diǎn)方法、內(nèi)聯(lián)、逆優(yōu)化等等。JFR 提供了標(biāo)準(zhǔn)的 Java、C++ 等擴(kuò)展 API,可以與各種層面的應(yīng)用進(jìn)行定制、集成,為復(fù)雜的企業(yè)應(yīng)用?;蛘邚?fù)雜的分布式應(yīng)用,提供 All-in-One 解決方案。而這一切都是內(nèi)建在 JDK 和 JVM 內(nèi)部的,并不需要額外的依賴,開(kāi)箱即用。

Low-Overhead Heap Profiling

它來(lái)源于 Google 等業(yè)界前沿廠商的一線實(shí)踐,通過(guò)獲取對(duì)象分配細(xì)節(jié),為 JDK 補(bǔ)足了對(duì)象分配診斷方面的一些短板,工程師可以通過(guò) JVMTI 使用這個(gè)能力增強(qiáng)自身的工具。

HTTP/2 Client API

新的 HTTP API 提供了對(duì) HTTP/2 等業(yè)界前沿標(biāo)準(zhǔn)的支持,精簡(jiǎn)而又友好的 API 接口,與主流開(kāi)源 API(如,Apache HttpClient, Jetty, OkHttp 等)對(duì)等甚至更高的性能。與此同時(shí)它是 JDK 在 Reactive-Stream 方面的第一個(gè)生產(chǎn)實(shí)踐,廣泛使用了 Java Flow API 等,終于讓 Java 標(biāo)準(zhǔn) HTTP 類庫(kù)在擴(kuò)展能力等方面,滿足了現(xiàn)代互聯(lián)網(wǎng)的需求。

Transport Layer Security (TLS) 1.3

就是安全類庫(kù)、標(biāo)準(zhǔn)等方面的大范圍升級(jí),它還是中國(guó)安全專家范學(xué)雷所領(lǐng)導(dǎo)的 JDK 項(xiàng)目,完全不同于以往的修修補(bǔ)補(bǔ),是個(gè)非常大規(guī)模的工程。

Dynamic Class-File Constants

動(dòng)態(tài) class 文件常量。擴(kuò)展了 Java class 文件格式,支持一種新的常量池形式:CONSTANT_Dynamic。

Improve Aarch74 Intrinsics

主要是針對(duì) ARM Aarch74 架構(gòu)的優(yōu)化,比如提供優(yōu)化的 sin、cos 等函數(shù)。

Epsilon: A No-Op Garbage Collector(Experimental)

無(wú)操作的垃圾收集器。Epsilon 是一個(gè)特殊的垃圾收集器,只處理內(nèi)存分配,不負(fù)責(zé)回收。一旦堆耗盡,就關(guān)閉 JVM。

聽(tīng)上去這個(gè)收集器好像沒(méi)什么意義。不過(guò)它還是有不少用處的。比如:

性能測(cè)試。GC 會(huì)影響性能,有了這么一個(gè)幾乎什么都不干的 GC,我們可以過(guò)濾掉 GC 帶來(lái)的影響因素。還有些性能因素不是 GC 引入的,比如編譯器變換,利用 Epsilon GC,我們可以對(duì)比。就像生物學(xué)里做實(shí)驗(yàn),我們可以用它做一個(gè)對(duì)照組。

另外還有內(nèi)存壓力測(cè)試、VM接口測(cè)試等。

Launch Single-File Source-Code Programs

Unicode 10

升級(jí)現(xiàn)有 API 支持 Unicode 10。Java SE 10 實(shí)現(xiàn)的是 Unicode 8.0。與 Java 10 相比,Java 11 多支持 16 018 個(gè)新字符,10 種新的文字類型。

Nest-Based Access Control

基于嵌套的訪問(wèn)控制。Java 11 引入了 nest 的概念,這是一個(gè)新的訪問(wèn)控制上下文(context),邏輯上處于同一代碼實(shí)體中的類,盡管會(huì)被編譯為不同的 class 文件,但是可以訪問(wèn)彼此的 private 成員,不再需要編譯器插入輔助訪問(wèn)的橋方法。

Dynamic Class-File Constants

動(dòng)態(tài) class 文件常量。擴(kuò)展了 Java class 文件格式,支持一種新的常量池形式:CONSTANT_Dynamic。

Remove the Java EE and CORBA Modules

將 Java SE 9 中標(biāo)記為廢棄的 Java EE 和 CORBA 正式從 Java SE 平臺(tái)中刪除。

Launch Single-File Source-Code Programs

支持運(yùn)行單個(gè)文件中的源代碼。在剛學(xué)習(xí) Java 或者編寫(xiě)小的工具程序時(shí),我們一般要先用 javac 編譯源文件,再用 java 命令運(yùn)行。有了這個(gè)功能,我們可以直接用 java 命令運(yùn)行源程序。就像這樣:

java HelloWorld.java

Deprecate the Nashorn JavaScript Engine

廢棄 Nashorn JavaScript 腳本引擎、API 和 jjs 工具。Nashorn 是在 JDK 8 中引入的,當(dāng)時(shí)完整實(shí)現(xiàn)了 ECMAScript-262 5.1。不過(guò)隨著 ECMAScript 的演進(jìn)加快,Nashorn 維護(hù)越來(lái)越困難。

Deprecate the Pack200 Tools and API

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

歡迎關(guān)注我的公眾號(hào)《程序員果果》,關(guān)注有驚喜~~
JDK11  |  第一篇 : JDK11 介紹

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI