Java20于2023年3月21日由甲骨文發(fā)布,是標(biāo)準(zhǔn)Java的最新升級(jí)。JDK20中的版本要么是尚未完全成熟的孵化器功能,要么是各種功能的預(yù)覽版,包括虛擬線(xiàn)程和結(jié)構(gòu)化并發(fā)。
盡管這個(gè)版本沒(méi)有重大更新,但我們希望Java用戶(hù)繼續(xù)從遺留Java版本過(guò)渡到Java生態(tài)系統(tǒng)中的新技術(shù)。想要學(xué)習(xí)java技術(shù)的同學(xué),可以考慮參加Java培訓(xùn),全面系統(tǒng)的理論知識(shí)和實(shí)操項(xiàng)目學(xué)習(xí),讓你快速學(xué)有所成。
Java20特性
該短期Java版本將在2022年9月20日發(fā)布后的六個(gè)月內(nèi)得到支持JDK19。我們預(yù)計(jì)Java21的長(zhǎng)期支持(LTS)版本將于9月發(fā)布,在多年支持的基礎(chǔ)上提供更好的更新。在此之前,讓我們深入了解JDK20的新功能。
Java20發(fā)布版已經(jīng)正式標(biāo)記了7個(gè)特性,包括:虛擬線(xiàn)程、vectorAPI提議、結(jié)構(gòu)化并發(fā)、作用域值、外部函數(shù)和內(nèi)存API、記錄模式、switch語(yǔ)句和表達(dá)式的模式匹配,以及vectorAPI提議。
虛擬線(xiàn)程
虛擬線(xiàn)程是結(jié)構(gòu)化并發(fā)的先決條件。自JDK19的第一個(gè)預(yù)覽版以來(lái),已經(jīng)做了一些小的改動(dòng),包括少量的API更改,以及對(duì)ThreadGroup的降級(jí)?,F(xiàn)在,在第二個(gè)預(yù)覽階段,這些輕量級(jí)線(xiàn)程減少了編寫(xiě)和維護(hù)并發(fā)應(yīng)用程序的工作量。據(jù)Oracle稱(chēng),這將從根本上改變Java應(yīng)用程序的擴(kuò)展方式。參加java培訓(xùn)是入門(mén)學(xué)習(xí)的最佳選擇,有經(jīng)驗(yàn)豐富的專(zhuān)業(yè)老師面授指導(dǎo)教學(xué),通過(guò)理論結(jié)合實(shí)戰(zhàn)的方式教授java基礎(chǔ)知識(shí),幫助你更好的理解與運(yùn)用java。
VectorAPI提案
以前,VectorAPI是在JDK16,JDK17,JDK18,以及JDK19。這個(gè)新的API提議是在Java20發(fā)布前幾周作為重新孵化而添加的,相對(duì)于JDK19沒(méi)有任何變化。該實(shí)現(xiàn)包括少量的錯(cuò)誤修復(fù)和性能增強(qiáng),包括表達(dá)向量計(jì)算的能力,這些向量計(jì)算在運(yùn)行時(shí)可靠地編譯,并在受支持的CPU上充當(dāng)最佳向量指令。
結(jié)構(gòu)化并發(fā)
在JDK19版中,結(jié)構(gòu)化并發(fā)作為一個(gè)孵化API,通過(guò)將不同線(xiàn)程中運(yùn)行的多個(gè)任務(wù)視為一個(gè)工作單元來(lái)工作。這有助于簡(jiǎn)化錯(cuò)誤處理和取消,從而提高可靠性和可觀(guān)察性。重新孵化的唯一變化是StructuredTaskScope被更新以支持在任務(wù)范圍內(nèi)創(chuàng)建的線(xiàn)程對(duì)范圍值的繼承。
范圍值
作用域值使不可變數(shù)據(jù)能夠在線(xiàn)程間和線(xiàn)程內(nèi)共享。它們優(yōu)于線(xiàn)程局部變量,尤其是在使用大量虛擬線(xiàn)程時(shí)。這個(gè)孵化API的目標(biāo)包括易用性、可理解性、健壯性和性能。參加以實(shí)戰(zhàn)項(xiàng)目為主要教學(xué)方法的java培訓(xùn),可以有效地縮短同企業(yè)具體用人需求之間的差距,快速提升自己。
外部函數(shù)和內(nèi)存API
外部函數(shù)和內(nèi)存(FFM)API結(jié)合了兩個(gè)早期的孵化API:外部?jī)?nèi)存訪(fǎng)問(wèn)API和外部鏈接器API。FFMAPI首先在JDK17號(hào)孵化,然后在JDK18號(hào)再次孵化;然后在JDK19號(hào)進(jìn)行了首次預(yù)演。根據(jù)用戶(hù)反饋,JDK20重新預(yù)覽了FFMAPI,包括以下改進(jìn):
lMemorySegment和MemoryAddress抽象是統(tǒng)一的(內(nèi)存地址現(xiàn)在由零長(zhǎng)度內(nèi)存段建模)
l密封的MemoryLayout增強(qiáng)了層次結(jié)構(gòu),以便于在中使用模式匹配switch表達(dá)和陳述
lMemorySession已經(jīng)分裂成Arena和SegmentScope為了便于跨維護(hù)邊界共享段
記錄模式
記錄模式的第二次預(yù)覽的主要目標(biāo)是擴(kuò)展模式匹配,以表達(dá)更復(fù)雜、可組合的數(shù)據(jù)查詢(xún),以及維護(hù)類(lèi)型模式的語(yǔ)法或語(yǔ)義。自從JDK19版發(fā)布了這一語(yǔ)言特性的第一個(gè)預(yù)覽版以來(lái),Java20中有了以下變化:增加了對(duì)一般記錄模式的類(lèi)型參數(shù)推斷的支持,支持記錄模式出現(xiàn)在增強(qiáng)的for語(yǔ)句的頭中,以及取消了對(duì)命名記錄模式的支持。通過(guò)參加java培訓(xùn),學(xué)習(xí)最新java技能,可以讓你的實(shí)力一直保持領(lǐng)先水平,提升行業(yè)競(jìng)爭(zhēng)力。
Switch語(yǔ)句和表達(dá)式的模式匹配
模式匹配最初是作為預(yù)覽版提出的,并于17年在JDK發(fā)布,18年在JDK提出了第二次預(yù)覽版并發(fā)布,19年在JDK提出了第三次預(yù)覽版并發(fā)布。這一語(yǔ)言特性在JDK20中的第四次預(yù)覽版使其能夠繼續(xù)與記錄模式預(yù)覽版一起發(fā)展,并包括圍繞switch語(yǔ)句的語(yǔ)法的基本更新。
關(guān)于Java20的最終想法
Java20的特性正朝著更加標(biāo)準(zhǔn)化的方向發(fā)展,這些特性是由各種Java研究項(xiàng)目決定的。雖然JDK20沒(méi)有引入任何新的JEP或重大更新,但它仍然有多個(gè)值得測(cè)試和留下反饋的預(yù)覽和孵化器功能。如果你也對(duì)java感興趣,不妨報(bào)個(gè)java培訓(xùn)班,有專(zhuān)業(yè)講師面授指導(dǎo)教學(xué),還有更加系統(tǒng)全面的課程,讓學(xué)習(xí)更科學(xué),更有效。