您好,登錄后才能下訂單哦!
小編給大家分享一下Java 11新特性有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
北京時(shí)間 2018年9 月 26 日,Oracle 官方宣布 Java 11 正式發(fā)布。這是 Java 大版本周期變化后的第一個(gè)長期支持版本,非常值得關(guān)注。從官網(wǎng)即可下載, 最新發(fā)布的 Java11 將帶來 ZGC、Http Client 等重要特性。Java 11 新特性:
從時(shí)間節(jié)點(diǎn)來看,JDK 11 的發(fā)布正好處在 JDK 8 免費(fèi)更新到期的前夕,同時(shí) JDK 9、10 也陸續(xù)成為“歷史版本”。JDK 11 將是一個(gè) 企業(yè)不可忽視的版本。
在過去的很多年中,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)開發(fā)中的 Hack,其實(shí)升級(jí) JDK 就能解決了。不斷改進(jìn)的 JVM,提供接近零成本的性能優(yōu)化…
JDK11 引入了兩種新的 GC,其中包括也許是劃時(shí)代意義的 ZGC,雖然其目前還是實(shí)驗(yàn)特性,但是從能力上來看,這是 JDK 的一個(gè)巨大突破,為特定生產(chǎn)環(huán)境的苛刻需求提供了一個(gè)可能的選擇。例如,對(duì)部分企業(yè)核心存儲(chǔ)等產(chǎn)品,如果能夠保證不超過 10ms 的 GC 暫停,可靠性會(huì)上一個(gè)大的臺(tái)階,這是過去我們進(jìn)行 GC 調(diào)優(yōu)幾乎做不到的,是能與不能的問題。
對(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 中越來越方便。
Flight Recorder(JFR)是 Oracle 剛剛開源的強(qiáng)大特性。JFR 是一套集成進(jìn)入 JDK、JVM 內(nèi)部的事件機(jī)制框架,通過良好架構(gòu)和設(shè)計(jì)的框架,硬件層面的極致優(yōu)化,生產(chǎn)環(huán)境的廣泛驗(yàn)證,它可以做到極致的可靠和低開銷。在 SPECjbb2015 等基準(zhǔn)測試中,JFR 的性能開銷最大不超過 1%,所以,工程師可以基本沒有心理負(fù)擔(dān)地在大規(guī)模分布式的生產(chǎn)系統(tǒng)使用,這意味著,我們既可以隨時(shí)主動(dòng)開啟 JFR 進(jìn)行特定診斷,也可以讓系統(tǒng)長期運(yùn)行 JFR,用以在復(fù)雜環(huán)境中進(jìn)行“After-the-fact”分析。
在保證低開銷的基礎(chǔ)上,JFR 提供的能力可以應(yīng)用在對(duì)鎖競爭、阻塞、延遲,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)部的,并不需要額外的依賴,開箱即用。
它來源于 Google 等業(yè)界前沿廠商的一線實(shí)踐,通過獲取對(duì)象分配細(xì)節(jié),為 JDK 補(bǔ)足了對(duì)象分配診斷方面的一些短板,工程師可以通過 JVMTI 使用這個(gè)能力增強(qiáng)自身的工具。
新的 HTTP API 提供了對(duì) HTTP/2 等業(yè)界前沿標(biāo)準(zhǔn)的支持,精簡而又友好的 API 接口,與主流開源 API(如,Apache HttpClient, Jetty, OkHttp 等)對(duì)等甚至更高的性能。與此同時(shí)它是 JDK 在 Reactive-Stream 方面的第一個(gè)生產(chǎn)實(shí)踐,廣泛使用了 Java Flow API 等,終于讓 Java 標(biāo)準(zhǔn) HTTP 類庫在擴(kuò)展能力等方面,滿足了現(xiàn)代互聯(lián)網(wǎng)的需求。
就是安全類庫、標(biāo)準(zhǔn)等方面的大范圍升級(jí),它還是中國安全專家范學(xué)雷所領(lǐng)導(dǎo)的 JDK 項(xiàng)目,完全不同于以往的修修補(bǔ)補(bǔ),是個(gè)非常大規(guī)模的工程。
動(dòng)態(tài) class 文件常量。擴(kuò)展了 Java class 文件格式,支持一種新的常量池形式:CONSTANT_Dynamic。
主要是針對(duì) ARM Aarch74 架構(gòu)的優(yōu)化,比如提供優(yōu)化的 sin、cos 等函數(shù)。
無操作的垃圾收集器。Epsilon 是一個(gè)特殊的垃圾收集器,只處理內(nèi)存分配,不負(fù)責(zé)回收。一旦堆耗盡,就關(guān)閉 JVM。
聽上去這個(gè)收集器好像沒什么意義。不過它還是有不少用處的。比如:
性能測試。GC 會(huì)影響性能,有了這么一個(gè)幾乎什么都不干的 GC,我們可以過濾掉 GC 帶來的影響因素。還有些性能因素不是 GC 引入的,比如編譯器變換,利用 Epsilon GC,我們可以對(duì)比。就像生物學(xué)里做實(shí)驗(yàn),我們可以用它做一個(gè)對(duì)照組。
另外還有內(nèi)存壓力測試、VM接口測試等。
升級(jí)現(xiàn)有 API 支持 Unicode 10。Java SE 10 實(shí)現(xiàn)的是 Unicode 8.0。與 Java 10 相比,Java 11 多支持 16 018 個(gè)新字符,10 種新的文字類型。
基于嵌套的訪問控制。Java 11 引入了 nest 的概念,這是一個(gè)新的訪問控制上下文(context),邏輯上處于同一代碼實(shí)體中的類,盡管會(huì)被編譯為不同的 class 文件,但是可以訪問彼此的 private 成員,不再需要編譯器插入輔助訪問的橋方法。
動(dòng)態(tài) class 文件常量。擴(kuò)展了 Java class 文件格式,支持一種新的常量池形式:CONSTANT_Dynamic。
將 Java SE 9 中標(biāo)記為廢棄的 Java EE 和 CORBA 正式從 Java SE 平臺(tái)中刪除。
支持運(yùn)行單個(gè)文件中的源代碼。在剛學(xué)習(xí) Java 或者編寫小的工具程序時(shí),我們一般要先用 javac 編譯源文件,再用 java 命令運(yùn)行。有了這個(gè)功能,我們可以直接用 java 命令運(yùn)行源程序。就像這樣:
java HelloWorld.java
廢棄 Nashorn JavaScript 腳本引擎、API 和 jjs 工具。Nashorn 是在 JDK 8 中引入的,當(dāng)時(shí)完整實(shí)現(xiàn)了 ECMAScript-262 5.1。不過隨著 ECMAScript 的演進(jìn)加快,Nashorn 維護(hù)越來越困難。
廢棄了 pack200 和 unpack200 工具,以及 java.util.jar 包中的 Pack200 API。
以上是“Java 11新特性有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。