甲骨文公司Oracle Java Development Kit(JDK)是一款Java開(kāi)發(fā)工具包,包含Java運(yùn)行環(huán)境(java運(yùn)行庫(kù)),Java開(kāi)發(fā)套件和Java基礎(chǔ)類(lèi)庫(kù)源代碼.Java Runtime Environment(JRE)是運(yùn)行Java程序的運(yùn)行環(huán)境,不管是做Java開(kāi)發(fā)還是從事安卓開(kāi)發(fā),都必須在系統(tǒng)安裝JRE運(yùn)行環(huán)境.Java語(yǔ)言的貢獻(xiàn)力量是其他任何技術(shù)無(wú)可比擬的.
JDK20新特性:
- Scoped values是處于孵化器開(kāi)發(fā)階段的 API,它支持在線程內(nèi)和線程間共享不可變數(shù)據(jù)。這些變量?jī)?yōu)于線程局部變量,尤其是在使用大量虛擬線程時(shí)。作用域值允許在大型程序中的組件之間安全有效地共享數(shù)據(jù),而無(wú)需求助于方法參數(shù)。目標(biāo)包括易用性、可理解性和性能。
- 記錄模式,在第二個(gè)預(yù)覽中,使用模式增強(qiáng) Java 編程語(yǔ)言以解構(gòu)記錄值??梢郧短子涗浤J胶皖?lèi)型模式,以實(shí)現(xiàn)聲明式、強(qiáng)大且可組合的數(shù)據(jù)導(dǎo)航和處理形式。目標(biāo)包括擴(kuò)展模式匹配以表達(dá)更復(fù)雜、可組合的數(shù)據(jù)查詢,并且不改變類(lèi)型模式的語(yǔ)法或語(yǔ)義。自JDK 19中的第一個(gè)預(yù)覽版以來(lái)的主要變化包括添加對(duì)通用記錄模式的類(lèi)型參數(shù)推斷的支持,支持記錄模式出現(xiàn)在增強(qiáng)for語(yǔ)句的標(biāo)頭中,以及刪除對(duì)命名記錄模式的支持。
- 外部函數(shù)和內(nèi)存 API引入了一種 API,Java 程序可以通過(guò)該 API 與 Java 運(yùn)行時(shí)之外的代碼和數(shù)據(jù)進(jìn)行互操作。API 使 Java 程序能夠調(diào)用本機(jī)庫(kù)并處理本機(jī)數(shù)據(jù),而沒(méi)有 JNI(Java 本機(jī)接口)的脆弱性和危險(xiǎn)性。該 API 之前在 JDK 版本 17 和 18 中孵化,并在 JDK 19 中進(jìn)行了預(yù)覽。自 JDK 19 以來(lái)添加的改進(jìn)包括統(tǒng)一和MemorySegment抽象MemoryAddress、增強(qiáng)的MemoryLayout層次結(jié)構(gòu)以及拆分MemorySession和Arena促進(jìn)SegmentScope 跨維護(hù)邊界的段共享。
- 虛擬線程 是輕量級(jí)線程,可減少編寫(xiě)、維護(hù)和觀察高吞吐量并發(fā)應(yīng)用程序的工作量。自 JDK 19 中的第一個(gè)預(yù)覽版以來(lái)的微小變化包括少量 API 更改(在 JDK 19 中永久化)和降級(jí)ThreadGroup(也在 JDK 19 中永久化)。
- 結(jié)構(gòu)化并發(fā)具有一個(gè) API 來(lái)簡(jiǎn)化多線程編程,并將在不同線程中運(yùn)行的多個(gè)任務(wù)視為一個(gè)工作單元。簡(jiǎn)化了錯(cuò)誤處理和取消,提高了可靠性并增強(qiáng)了可觀察性。自從在 JDK 19 中孵化以來(lái),唯一的變化是它StructuredTaskScope已經(jīng)更新為支持在任務(wù)范圍內(nèi)創(chuàng)建的線程繼承范圍值。
- switch 語(yǔ)句和表達(dá)式的模式匹配可以簡(jiǎn)潔、安全地表達(dá)復(fù)雜的面向數(shù)據(jù)的查詢。之前在JDK 17、JDK 18和JDK 19中進(jìn)行過(guò)預(yù)覽,第四次預(yù)覽將實(shí)現(xiàn)與[url=https://openjdk.org/jeps/432]Record Patterns 的[/url]持續(xù)共同進(jìn)化,允許根據(jù)經(jīng)驗(yàn)和反饋進(jìn)行持續(xù)改進(jìn)。自第三次預(yù)覽以來(lái),switch 模式匹配的主要變化包括簡(jiǎn)化 switch 標(biāo)簽的語(yǔ)法,支持推斷 switch 語(yǔ)句和表達(dá)式中通用模式和記錄模式的類(lèi)型參數(shù)。此外,現(xiàn)在會(huì)拋出對(duì)枚舉類(lèi)的詳盡切換MatchException,而不是IncompatibleClassChangeError在運(yùn)行時(shí)沒(méi)有應(yīng)用切換標(biāo)簽時(shí)拋出。
JDK20特點(diǎn):
OpenJDK Java 20 引入了作用域(scope)值作為孵化 API。Java 的作用域值允許在線程內(nèi)和線程間共享不可變數(shù)據(jù),并且優(yōu)先于線程局部變量。Java 作用域值旨在易于使用、易于理解、增強(qiáng)可靠性且高性能。
作用域值是一種新的語(yǔ)言結(jié)構(gòu),它允許聲明一個(gè)只能在當(dāng)前范圍(extent)內(nèi)訪問(wèn)的變量。一個(gè)范圍是一個(gè)代碼塊或一個(gè)方法調(diào)用棧,它可以包含多個(gè)線程。作用域值只能被當(dāng)前范圍內(nèi)的代碼讀取,不能被其他范圍內(nèi)的代碼讀取或修改。因此,作用域值是不可變的,并且可以安全地在線程之間共享。
Java 20 還對(duì) Vector API 進(jìn)行了第四次孵化更新,以便在運(yùn)行時(shí)編譯為支持的 CPU 架構(gòu)上的最佳 vector 指令。與 JDK 19 相比,Java 20 的 Vector API 沒(méi)有變化,只是修復(fù)了一些錯(cuò)誤 Bug 并提高了性能。
Java / JDK 20 的第二個(gè)預(yù)覽形式是虛擬線程功能,作為高吞吐量并發(fā)應(yīng)用程序的輕量級(jí)線程。JDK 19 上的虛擬線程有一些小的 API 更改以及此預(yù)覽功能的其他基本改進(jìn)。
新版本還對(duì)記錄模式、switch 語(yǔ)句的模式匹配、外部函數(shù)和內(nèi)存 API 以及 JDK / Java 20 的結(jié)構(gòu)化并發(fā)進(jìn)行了更新。
JDK和JRE的區(qū)別:
如果在學(xué)習(xí)或從事Java開(kāi)發(fā)、編譯java程序,那么安裝JDK
如果僅需運(yùn)行java程序,只需要Java運(yùn)行庫(kù),那么安裝JRE
Java Development Kit(簡(jiǎn)稱(chēng)JDK)= Java開(kāi)發(fā)套件,Java開(kāi)發(fā)工具包,面向Java語(yǔ)言開(kāi)發(fā)者。
Java Runtime Environment(簡(jiǎn)稱(chēng)JRE)= Java運(yùn)行庫(kù),Java運(yùn)行環(huán)境,面向Java程序用戶們。
JDK JAVA環(huán)境變量配置:
此電腦->右鍵->屬性->高級(jí)系統(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(安裝目錄版本號(hào)路徑)
2、「系統(tǒng)變量」雙擊->Path->編輯環(huán)境變量 -> 分別新建3條
%JAVA_HOME%\bin
C:\Program Files\Java\jdk20.0_1\bin
C:\Program Files\Java\jre20.0_1
# 檢查JDK環(huán)境配置命令:
CMD 輸入 java -version