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