首 頁
手機版

java se development kit 21(jdk21) v21.0.6

Java開發(fā)工具包,包含Java運行環(huán)境,開發(fā)套件和基礎(chǔ)類庫源代碼。

  • 軟件大?。?63.04M
  • 軟件語言:簡體中文
  • 軟件類型:國外軟件
  • 軟件授權(quán):免費軟件
  • 更新時間:2025/04/02
  • 軟件類別:編程其它
  • 應用平臺:Windows11,Windows10,Windows8,Windows7
網(wǎng)友評分:6.5分
網(wǎng)友評論 下載地址 收藏該頁
本地下載

作為一種功能強大并簡單易用的編程語言,Java收到廣泛的歡迎,使用java開發(fā)的軟件也越來越多,而想要打開java編寫的程序,就需要在電腦中安裝java運行環(huán)境,多多小編這里給大家?guī)淼氖?strong>java se development kit 21,一般簡稱為jdk21,java 21,是全球廣受歡迎的現(xiàn)代開發(fā)平臺,也是企業(yè)應用的理想編程語言,有助于企業(yè)降低成本、縮短開發(fā)時間、推動創(chuàng)新以及改善應用服務。目前軟件已經(jīng)提供了數(shù)以千計的性能、穩(wěn)定性和安全性改進,包括平臺增強功能,可以幫助開發(fā)人員提高工作效率并推動整個組織的創(chuàng)新和增長。

與上一版本相比,java se development kit 21新增了多個新特性,比如引入的序列集合,可以為Java開發(fā)者提供一種新的、有序的、線程安全的集合實現(xiàn)。增加了三個主要的接口,包括SequencedCollection?,SequencedSet?和SequencedMap<K,V>?;增加了虛擬線程,可以創(chuàng)建大量的線程,甚至達到百萬級別,?簡化并發(fā)模式模型,簡化代碼,減少阻塞問題?;還增加了字符串模板,提供了一種更簡潔、更直觀的方式來動態(tài)構(gòu)建字符串,通過使用占位符${},可以將變量的值直接嵌入到字符串中,而不需要手動處理等等,這些特性不僅增強了Java語言的功能性,還在開發(fā)效率和程序性能上做出了質(zhì)的飛躍。

jdk21

java se development kit 21主要新特性

一、序列集合

jdk21中引入的序列集合(Sequenced Collections)為Java開發(fā)者提供了一種新的、有序的、線程安全的集合實現(xiàn)。其特性如下:

1、有序性?:每個Sequenced Collection都保持元素插入的順序。這意味著當你遍歷集合時,元素將按照它們被添加到集合中的順序出現(xiàn)。

2、?線程安全性?:Sequenced Collections提供了線程安全的集合實現(xiàn),可以在多線程環(huán)境下安全地訪問和修改集合中的數(shù)據(jù)。這是通過一種稱為“Sequenced Locks”的特殊鎖機制實現(xiàn)的,它允許多個線程同時讀取集合中的數(shù)據(jù),但只允許一個線程進行寫操作。

?3、可擴展性?:Sequenced Collections的設(shè)計考慮了可擴展性,可以處理大量數(shù)據(jù)的并發(fā)訪問。

4、?統(tǒng)一的接口?:Sequenced Collections提供了一個統(tǒng)一的接口來表示具有定義好的出現(xiàn)順序的集合,這使得在API中表達某些有用概念變得更加容易。同時,它還提供了一套統(tǒng)一的與順序相關(guān)的操作集,使得不同類型的集合在處理順序相關(guān)操作時方式更加一致。

二、主要接口

java se development kit 21為Sequenced Collections引入了三個主要的接口:

1、SequencedCollection?:這是表示具有定義好的出現(xiàn)順序的集合的基礎(chǔ)接口。它繼承了Collection接口,并添加了一系列與順序相關(guān)的方法,如reversed()、addFirst(E)、addLast(E)、getFirst()、getLast()和removeFirst()等。

2、?SequencedSet?:這是Set接口的擴展,表示有序且不包含重復元素的集合。它繼承了Set和SequencedCollection接口,并提供了reversed()方法以返回一個反轉(zhuǎn)順序的SequencedSet。

3、?SequencedMap<K,V>?:這是Map接口的擴展,表示條目具有定義好的遍歷順序的映射。它繼承了Map接口,并添加了一系列與順序相關(guān)的方法,如reversed()、sequencedKeySet()、sequencedValues()、sequencedEntrySet()、putFirst(K, V)、putLast(K, V)、firstEntry()、lastEntry()、pollFirstEntry()和pollLastEntry()等。

三、虛擬線程

jdk21增加了虛擬線程,其特性如下:

1、輕量級且可大量創(chuàng)建?:虛擬線程開銷小,可以創(chuàng)建大量的線程,甚至達到百萬級別,相比傳統(tǒng)線程創(chuàng)建百萬級別可能導致內(nèi)存或系統(tǒng)崩潰。

2、?簡化并發(fā)模式模型?:虛擬線程的輕量特性使得在實現(xiàn)每一個請求都開一個線程來提高程序并發(fā)性能變得可行,同時簡化了編程模型。

3、?高可擴展性?:虛擬線程可以充分利用系統(tǒng)資源,提高對系統(tǒng)CPU核數(shù)的利用率。

4、?簡化代碼?:虛擬線程使得同步編程風格的代碼并發(fā)成為可能,程序員無需使用復雜的非阻塞編程手法。

5、?減少阻塞問題?:虛擬線程阻塞時會自動切換到其他正在運行的線程,充分利用CPU時間,提高效率。

?6、管理與調(diào)度不同?:平臺線程由操作系統(tǒng)進行管理和調(diào)度,而虛擬線程由JVM進行管理與調(diào)度。

7、?線程規(guī)模不同?:平臺線程的規(guī)模受到操作系統(tǒng)的限制,而虛擬線程沒有這個限制,理論上來說虛擬線程的最大數(shù)量要比平臺線程大得多。

?8、使用成本不同?:虛擬線程由JVM管理,分配不需要進行系統(tǒng)調(diào)用,也不受系統(tǒng)上下文切換的影響。

四、字符串模板

String Templates(字符串模板) 目前仍然是 JDK 21 中的一個預覽功能。String Templates 提供了一種更簡潔、更直觀的方式來動態(tài)構(gòu)建字符串。通過使用占位符${},我們可以將變量的值直接嵌入到字符串中,而不需要手動處理。其特性如下:

1、基本語法?:字符串模板使用了一種簡潔的語法來嵌入表達式。通常,這種嵌入是通過特定的標記(如$符號或{}花括號)來實現(xiàn)的。在JDK 21中,具體的語法可能因模板處理器的不同而有所差異。

?2、模板處理器?:JDK 21提供了多種內(nèi)置的模板處理器,如STR、FMT和RAW,它們各自具有不同的行為和功能。例如,STR用于執(zhí)行基礎(chǔ)的字符串插值,F(xiàn)MT支持格式化操作,而RAW則用于創(chuàng)建未處理的StringTemplate對象。

3、?動態(tài)內(nèi)容生成?:通過字符串模板,開發(fā)者可以輕松地將變量的值、方法調(diào)用的結(jié)果或其他表達式嵌入到字符串中,從而實現(xiàn)動態(tài)內(nèi)容的生成。

五、記錄模式

java se development kit 21增強了Java編程語言,引入了記錄模式,用于解構(gòu)記錄值。記錄模式可以嵌套和組合,提供了一種功能強大、聲明性和可組合的數(shù)據(jù)導向編程方式。其特性如下:

1、簡潔性?:記錄模式使用簡潔的語法來匹配和解構(gòu)記錄類型,避免了冗長的類型檢查和屬性訪問代碼。

2、?可讀性?:記錄模式的語法更加直觀易懂,使得代碼更加清晰易讀。

3、?靈活性?:記錄模式支持對記錄類型的屬性進行匹配和解構(gòu),可以根據(jù)實際需求靈活地處理不同的對象類型。

4、?安全性?:通過編譯時檢查確保訪問的正確性,避免錯誤的字段訪問或類型不匹配問題。

六、分代ZGC

jdk21中對 ZGC 進行了功能擴展,增加了分代 GC 功能。不過,默認是關(guān)閉的,需要通過配置打開。其特性如下:

1、低延遲和高吞吐量?:

- 分代ZGC通過并發(fā)處理和分代回收的策略,實現(xiàn)了非常低的停頓時間,適合對響應時間要求高的應用場景。

- 在盡可能減少停頓時間的同時,分代ZGC也能保持較高的垃圾回收吞吐量。

?2、大堆支持?:

- 分代ZGC可以處理非常大的堆內(nèi)存,適用于需要大內(nèi)存容量的應用程序。在JDK 21中,ZGC支持的最大堆大小已經(jīng)增加到了16TB以上。

3、?分代收集機制?:

- 分代ZGC在邏輯上將堆內(nèi)存劃分為年輕代和老年代。年輕代用于存放新創(chuàng)建的對象,老年代則用于存放生命周期較長的對象。

- 通過頻繁掃描年輕代,分代ZGC可以更高效地利用CPU資源,并減少分配停滯的風險和所需的堆內(nèi)存開銷。

4、?并發(fā)處理?:

- 在年輕代和老年代的垃圾回收過程中,分代ZGC都采用了并發(fā)處理的方式。這意味著在垃圾回收期間,應用程序線程可以繼續(xù)執(zhí)行,從而減少了停頓時間。

?5、染色指針和讀屏障?:

- 分代ZGC使用了染色指針技術(shù)來標記指針,幫助識別跨區(qū)域的引用,并減少額外的元數(shù)據(jù)開銷。

- 讀屏障技術(shù)則用于在讀取對象引用時自動更新指針,以反映對象的新位置。

6、?動態(tài)內(nèi)存布局?:

- 分代ZGC的內(nèi)存布局是動態(tài)的,可以根據(jù)應用程序的實際內(nèi)存需求動態(tài)創(chuàng)建和銷毀內(nèi)存區(qū)域。這種設(shè)計使得ZGC能夠更好地適應不同的工作負載和對象分布模式。

七、Switch模式

增強 Java 中的 switch 表達式和語句,允許在 case 標簽中使用模式。當模式匹配時,執(zhí)行 case 標簽對應的代碼。其特性如下:

1、類型模式匹配?:

- 在JDK 21中,switch語句支持類型模式匹配,允許在case標簽中直接進行類型檢查和模式匹配。這意味著開發(fā)者可以針對不同類型的對象編寫不同的處理邏輯,而無需使用顯式的類型轉(zhuǎn)換或if-else語句。

2、?守衛(wèi)模式?:

- 守衛(wèi)模式進一步增強了switch語句的匹配能力。它允許在case標簽中添加額外的條件檢查,從而實現(xiàn)更加精細的控制流。這使得switch語句能夠處理更復雜的條件邏輯。

3、?模式匹配的switch表達式?:

- 除了switch語句外,JDK 21還增強了switch表達式的功能,使其支持類型模式和守衛(wèi)模式。模式匹配的switch表達式使得代碼更加簡潔和直觀,同時提高了代碼的可讀性和可維護性。

?4、改進的類型推斷?:

- JDK 21中的switch語句和表達式在類型推斷方面進行了改進,編譯器能夠更好地推斷出switch表達式的返回類型,從而減少顯式類型聲明的需求。這有助于簡化代碼,并減少潛在的錯誤。

5、?增強的錯誤檢測能力?:

- JDK 21對switch語句和表達式的錯誤檢測能力進行了增強,可以更早地捕捉潛在的錯誤和不一致。例如,如果switch語句或表達式中的所有可能情況都沒有被處理,編譯器將發(fā)出警告或錯誤提示。

八、程序集模塊化

jdk 21還增強了程序集模塊化,其特性如下:

1、通過引入java.assembly模塊,為Java程序集提供了一種新的模塊化方式。這種方式允許開發(fā)者定義程序集的依賴關(guān)系、導出模塊等,從而實現(xiàn)了代碼的有效隔離和重用。

2、提高代碼的可維護性?:通過模塊化,可以將代碼拆分成更小的、更易于管理的部分,從而降低了代碼的復雜度。

3、?增強代碼的可重用性?:模塊化的代碼可以被不同的項目共享和重用,避免了重復勞動。

4、?便于構(gòu)建和部署?:模塊化使得構(gòu)建和部署過程更加自動化和標準化,提高了開發(fā)效率。

JAVA環(huán)境變量配置:

此電腦->右鍵->屬性->高級系統(tǒng)設(shè)置->環(huán)境變量:

1、「用戶變量」和「系統(tǒng)變量」分別新建2條變量

變量名:CLASSPATH  變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

變量名:JAVA_HOME  變量值:C:\Program Files\Java\jdk1.8.0_311(安裝目錄版本號路徑)

2、「系統(tǒng)變量」雙擊->Path->編輯環(huán)境變量 -> 分別新建3條

%JAVA_HOME%\bin

C:\Program Files\Java\jdk21.0\bin

C:\Program Files\Java\jre21.0

3、# 檢查JDK環(huán)境配置命令:

CMD 輸入 java -version

JRE和JDK的區(qū)別?

如果在學習或從事Java開發(fā)、編譯java程序,那么安裝JDK

如果僅需運行java程序,只需要Java運行庫,那么安裝JRE

Java Development Kit(簡稱JDK)= Java開發(fā)套件,Java開發(fā)工具包,面向Java語言開發(fā)者。

Java Runtime Environment(簡稱JRE)= Java運行庫,Java運行環(huán)境,面向Java程序用戶們。

JDK:Java核心,含Java運行環(huán)境(JRE)、編譯器(javac.exe)、開發(fā)工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和Java工具類庫(如tools.jar)源代碼等java語言編譯所需的工具包。

JRE:Java語言開發(fā)的程序運行所需要的運行環(huán)境,包括JVM標準實現(xiàn)(java.exe等)及 Java核心類庫(rt.jar等),它不包含開發(fā)工具(編譯器、調(diào)試器等)

更新日志

v21.0.6版本

一、JDK 21.0.6包含IANA時區(qū)數(shù)據(jù)2024b,其中包含以下更改:

改進墨西哥、蒙古和葡萄牙的歷史數(shù)據(jù)。

System V名稱現(xiàn)已過時。

主數(shù)據(jù)表單現(xiàn)在使用%z。

該代碼現(xiàn)在符合早期時間戳的RFC 8536。

支持POSIX.1-2024,它刪除了asctime_r和ctime_r。

二、Windows上的ProcessBuilder引用包含任何空格字符的參數(shù)字符串(JDK-8335428(非公共))

在Windows上,ProcessBuilder在啟動進程時擴展了參數(shù)字符串的引用,以確保它們被應用程序識別為單個命令參數(shù)??崭褡址褟目崭瘢?x20)擴展到包括java.lang.Character.isSpaceChar定義的所有空格字符,其中包括所有Unicode空格分隔符字符,如EN-space(0x2002),以及行分隔符和段落分隔符字符。

三、支持時區(qū)數(shù)據(jù)庫2024b(JDK-8339637)

IANA時區(qū)數(shù)據(jù)庫已升級至2024b。此版本主要包括改進墨西哥、蒙古和葡萄牙歷史數(shù)據(jù)的更改。它還更改了時區(qū)“MET”的一個時間戳縮寫。此外Asia/Choibalsan現(xiàn)在是Asia/Ulaanbaatar的別名。

新的tzdata更改也會影響一些舊的時區(qū)ID。根據(jù)2024b的規(guī)定,“EST”鏈接更改為“美洲/巴拿馬”,“HST”鏈接為“太平洋/檀香山”,“MST”鏈接為”美洲/鳳凰城“。為了保持與Java SE規(guī)范的兼容性,Java.time。區(qū)域Id。SHORT_IDS地圖未更改。

收起介紹展開介紹

發(fā)表評論

0條評論