您好,登錄后才能下訂單哦!
今年三月份,Java發(fā)布了最新的版本Java14。本次發(fā)布的Java14更新了大量的內(nèi)容,包括了JEP364、JEP365、JEP366、JEP367、打包功能、Nul、lPointerException異常信息、File API、switch語句、NUMA、JFR、Record、Solaris和SPARC端口、CMS垃圾收集器和instanceof。下面我們一起來看看這些更新的特性吧!
1、JEP364
JEP 364針對(duì)MacOS提供了ZGC垃圾收集器。它將ZGC垃圾收集器移植到了macOS。正如JEP351中的描述,該JEP的功能還包括使用收集器釋放未使用的設(shè)備內(nèi)存。自Java13開始就支持此功能。ZGC的macOS實(shí)現(xiàn)包含兩個(gè)部分:在macOS上支持多重映射(multi-mapping)內(nèi)存;ZGC支持不連續(xù)預(yù)留內(nèi)存。
2、JEP365
JEP 365實(shí)際上和JEP 364一樣。JEP 365針對(duì)Windows提供了ZGC垃圾收集器支持。大多數(shù)ZGC代碼都與平臺(tái)無關(guān),不需要為Windows修改。由于早期版本沒有預(yù)留內(nèi)存必須的API,因此不支持Windows 10和Windows Server 1803之前的版本。ZGC的Windows實(shí)現(xiàn)進(jìn)行了以下工作:支持多重映射內(nèi)存、堆內(nèi)存任意區(qū)域映射與取消映射操作和堆內(nèi)存任意區(qū)域提交和撤銷提交操作等等。
3、JEP366
JEP366包含垃圾收集器,它的目標(biāo)是棄用Parallel Scavenge和Serial Old垃圾收集算法的組合。除了棄用-XX:+UseParallelGC-XX :- UseParallelOldGC組合之外,-XX:UseParallelOld GC選項(xiàng)也被棄用,因?yàn)樗淖饔檬侨∠夏甏⑿?span>GC,支持老年代串行GC。因此,任何與UseUseParallelOldGC選項(xiàng)有關(guān)的用法都會(huì)輸出警告。
4、 JEP367
Pack 200是JavaSE 5.0中JSR 200實(shí)現(xiàn)的JAR文件壓縮方案。Java14從java.util.jar包中移除了pack200和unpack200工具以及pack200 API。這些工具和API在JavaSE 11中已廢棄,會(huì)在隨后的版本中移除。該JEP最終會(huì)從JDK主版本中移除3種類型。即之前標(biāo)記 @Deprecated(forRemoval = true) 注解的基礎(chǔ)模塊:java.util.jar.Pack200、java.util.jar.Pack200.Packer、java.util.jar.Pack200.Unpacker
5、JEP368
在Java中,想要把HTML、XML、SQL或JSON代碼片段嵌入到代碼中通常難以閱讀和保留。并且為了克服此問題,Java14 引入了文本塊(Text Block)。文本塊包含零個(gè)或多個(gè)字符,這些字符由開始分隔符和結(jié)束分隔符包圍。
6、JEP370
許多流行的Java庫(kù)和程序都支持訪問外部存儲(chǔ)器,例如Ignite、MapDB、Memcached和Netty的ByteBuf API。這樣可以避免垃圾回收(比如維護(hù)大型緩存)、跨進(jìn)程共享內(nèi)存、通過將文件內(nèi)存映射進(jìn)行序列化和反序列化帶來的開銷以及引入的不可預(yù)測(cè)性。然而,Java API沒有提供適合的外存訪問解決方案。Java14通過JEP 370引入了高效的Java API,使得Java應(yīng)用程序能夠安全有效地訪問Java堆外內(nèi)存。外部存儲(chǔ)API提出了三個(gè)重要的抽象:MemorySegment、MemoryAddress和MemoryLayout。
7、打包功能
該特性是一種能夠簡(jiǎn)化安裝過流程的打包功能,能解決應(yīng)用所需的各種依賴項(xiàng)。有時(shí)僅提供一個(gè)JAR文件是不夠的,還需要提供原生安裝包。打包工具還可以作為其它技術(shù)的補(bǔ)充。jpackage工具把Java應(yīng)用打包成平臺(tái)特定格式的包,其中包含應(yīng)用所有的依賴項(xiàng)。即一組普通JAR文件或模塊的集合。支持的包格式: Linux:deb和rpm、macOS:pkg和dmg、Windows:MSI和EXE。
8、NullPointerException異常信息
Java14對(duì)JVM生成的NullPointerException異常信息進(jìn)行了改進(jìn)。程序提前終止時(shí),新特性將為開發(fā)者和技術(shù)支持人員提供有用的信息。由于NPE幾乎可以出現(xiàn)在程序中的任何位置,嘗試捕獲它們并從中恢復(fù)通常不太可行。開發(fā)人員只能靠JVM確認(rèn)NPE實(shí)際的發(fā)生時(shí)間。
9、File API
Java 14對(duì)MappedByteBuffer進(jìn)行了更新,將部分文件數(shù)據(jù)加載到非易失性存儲(chǔ)器(NVM)中。NVM非易失性存儲(chǔ)是指類似ROM(只讀存儲(chǔ)器)、閃存、硬盤等存儲(chǔ)器,即使關(guān)閉電源數(shù)據(jù)也不會(huì)丟失。易失性存儲(chǔ)器比如RAM,如果關(guān)閉電源則無法保存數(shù)據(jù)。API唯一的變化是加入了一個(gè)新枚舉供FileChannel客戶端使用。表示請(qǐng)求映射位于NVM支持的文件系統(tǒng)而非傳統(tǒng)文件系統(tǒng)。
10、switch語句
Java14擴(kuò)展了switch語句的功能,可以把switch作為表達(dá)式使用。支持箭頭(->)操作符生成或返回值。該特性在JDK12和JDK13中是預(yù)覽功能。
11、NUMA
非一致性內(nèi)存訪問是一種將微處理器集群配置為多處理系統(tǒng)的方式,因此可以在本地共享內(nèi)存、提高性能并擴(kuò)展系統(tǒng)能力。Java14實(shí)現(xiàn)了NUMA內(nèi)存分配優(yōu)化,提升G1在大型計(jì)算機(jī)上表現(xiàn)。G1中的堆是一組固定大小區(qū)域。雖然指定-XX:+UseLargePages選項(xiàng)可以使用大頁(yè)面,多個(gè)區(qū)域可以組成一個(gè)物理頁(yè)面,但是一個(gè)區(qū)域通常是一組物理頁(yè)面。如果指定+XX:+UseNUMA選項(xiàng),初始化JVM時(shí)上述將把區(qū)域平均分布在所有可用NUMA節(jié)點(diǎn)上。
12、JFR
Java14提供了一個(gè)新的API,JDK Flight Recorder(JFR)可以通過它持續(xù)監(jiān)視進(jìn)程內(nèi)與進(jìn)程外部應(yīng)用程序。使用非Stream方式記錄相同的事件集,開銷可能甚至小于1%。事件流將與非Stream方式同時(shí)執(zhí)行。jdk.jfr.consumer包位于 jdk.jfr模塊中,擴(kuò)展了異步訂閱事件的功能。
13、Record
這是JDK14中一個(gè)預(yù)覽功能。使用record精簡(jiǎn)類聲明代碼。定義一個(gè)數(shù)據(jù)類需要編寫很多低效重復(fù)的模板代碼:構(gòu)造函數(shù)、accessor、equals()、hashCode()、toString()等。Java計(jì)劃使用record精簡(jiǎn)這些重復(fù)代碼。
14、Solaris和SPARC端口
Java14棄用了Solaris/SPARC、Solaris/x64和Linux/SPARC端口,未來可能將它們移除。取消對(duì)這些端口的支持,能讓OpenJDK社區(qū)的貢獻(xiàn)者加速開發(fā)新功能,推動(dòng)平臺(tái)向前發(fā)展。
15、CMS垃圾收集器
Java14刪除了CMS垃圾收集器。不僅停用CMS編譯,從源代碼中刪除了gc/cms目錄中的內(nèi)容,而且刪除了僅限CMS的選項(xiàng)。
16、instanceof
instanceof操作符用來檢查對(duì)象引用是否為指定的Type實(shí)例,檢查的結(jié)果使用boolean返回。Java14對(duì)instanceof操作符進(jìn)行了改進(jìn),加入了模式匹配。改進(jìn)后的instanceof讓實(shí)現(xiàn)邏輯變得清晰,不用在條件判斷后再為對(duì)象強(qiáng)制類型轉(zhuǎn)換。
if (!(obj instanceof String str))
.. str.contains(..)..// 不必再聲明str對(duì)象進(jìn)行強(qiáng)制類型轉(zhuǎn)換
} else
.. str....
}
關(guān)于Java14發(fā)布有哪些新的內(nèi)容更新就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過小編可以保證其準(zhǔn)確性是絕對(duì)沒問題的。希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責(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)容。