作為一種功能強大并簡單易用的編程語言,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ì)的飛躍。
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地圖未更改。
其它版本下載
-
查看詳情
java se development kit 24(jdk24) v24.0.0官方版
204.11M
-
查看詳情
java se development kit 12 v12.0.1
157.01M
-
查看詳情
java se development kit 17(jdk) v17.0.14官方版
152.32M
-
查看詳情
java se development kit 9(jdk9) v9.0.4 64位32位官方版
356.94M
-
查看詳情
Java SE Development Kit(JDK)7.0官方正式版 32位&64位
277.34M
-
查看詳情
jdk1.8 8u202
209.67M
-
查看詳情
java se development kit 23官方版 v23.0.1.0
203.58M
-
查看詳情
java se development kit 8(jdk1.8) 8u202官方版
209.67M
-
查看詳情
java 11(java se development kit 11) 附安裝教程
149.59M
- 下載地址
- Mac版
發(fā)表評論
0條評論軟件排行榜
- 1Java SE Development Kit(JDK)7.0官方正式版 32位&64位
- 2x64dbg程序調(diào)試工具 v2025.03.15
- 3Dependency Walker官方版 v2.2.6000
- 4Markdown Monster(代碼編輯器) v3.7.8.1
- 5NotepadNext官方版 v0.11綠色版
- 6RedisInsight官方版 v2.68
- 7ResScope(程式資源編輯器) v1.96官方版
- 8MSXML6.0 官方版
- 9eclipse memory analyzer(eclipse mat插件) v1.15.0
- 10python最新版本 v3.13.1
熱門推薦
node.js安裝包 v22.14.028.04M / 簡體中文
dotCover 2024官方版 v2024.3.564.81M / 多國語言
jdk1.6 32位/64位官方版 附環(huán)境變量配置教程128.75M / 簡體中文
jdk17官方版 附安裝教程159.72M / 簡體中文
python最新版本 v3.13.127.08M / 簡體中文
微軟visual c++運行庫合集包 v3.0.22.0317官方版85.82M / 簡體中文
dwin dgus(開發(fā)配置工具) v5.04官方版6.87M / 簡體中文
RegEx Tester(正則表達式調(diào)試工具) v3.2.0.0綠色版26K / 英文
Report Builder v3.0官方版32.16M / 簡體中文
Convert.NET(代碼翻譯器) v8.4.6675.71官方版4.48M / 多國語言[中文]