JDK 16 新特性:
JDK 16 為用戶提供了17項(xiàng)主要的增強(qiáng)/更改,包括全新的 Java 語(yǔ)言改進(jìn),工具和內(nèi)存管理,以及還有一些孵化和預(yù)覽特性,有了這些新功能,Java 會(huì)進(jìn)一步提高開發(fā)人員的生產(chǎn)力。值得關(guān)注的變化是,JDK 14 中提供的預(yù)覽特性:模式匹配和記錄(Records),經(jīng)過一年的社區(qū)反饋和實(shí)際應(yīng)用,終于在 JDK 16 中完成最終落地了。
另外,Oracle 還為 Java SE 訂閱服務(wù)中免費(fèi)提供 GraalVM 企業(yè)版服務(wù),GraalVM 可以幫助提高應(yīng)用程序的性能并減少資源消耗,尤其是在微服務(wù)和云原生架構(gòu)中。
1. 338: Vector API (孵化)
這個(gè)不是集合中的Vector,而是一個(gè)新的初始迭代孵化器模塊jdk.incubator.vector,用于表示在運(yùn)行時(shí)可靠地編譯到支持的 CPU 架構(gòu)上的最佳矢量硬件指令的矢量計(jì)算。
2. 347: Enable C++14 Language Features
允許在 JDK 底層的C++源代碼中使用C++14的新語(yǔ)言特性,并且提供了在HotSpot虛擬機(jī)代碼中,哪些代碼使用了這些新特性的指南。
3. 357: Migrate from Mercurial to Git
將 OpenJDK 社區(qū)的源代碼存儲(chǔ)庫(kù)從 Mercurial 遷移到 Git。
4. 369: Migrate to GitHub
在 GitHub 上托管 OpenJDK 社區(qū)的 Git 存儲(chǔ)庫(kù)。
GitHub 是世界流行的Git代碼托管平臺(tái)。在國(guó)內(nèi),托管代碼推薦 Gitee哦。
5. 376: ZGC: Concurrent Thread-Stack Processing
ZGC 最早是在 JDK 11 中集成進(jìn)來的,在 JDK 15 中正式轉(zhuǎn)正。
這個(gè)版本則是為了讓 ZGC 支持并發(fā)棧處理,解決了最后一個(gè)重大瓶頸,把 ZGC 中的線程棧處理從安全點(diǎn)移到了并發(fā)階段。并且還提供了一種機(jī)制,使得其他 HotSpot 子系統(tǒng)可以通過該機(jī)制延遲處理線程棧。
6. 380: Unix-Domain Socket Channels
UNIX 域套接字通道,為 java.nio.channels 包中的套接字通道和服務(wù)端套接字通道 APIs 增加 Unix 域套接字通道所有特性支持。
UNIX 域套接字主要用于同一主機(jī)上的進(jìn)程間通信(IPC),大部分方面與 TCP/IP套接字類似,不同的是 UNIX 域套接字是通過文件系統(tǒng)路徑名尋址,而不是通過 IP 地址和端口號(hào)。
7. 386: Alpine Linux Port
在 x64 和 AArch64 平臺(tái)體系結(jié)構(gòu)上,將 JDK 移植到 Alpine Linux 以及使用 musl 作為其主要 C 語(yǔ)言庫(kù)的其他 Linux 發(fā)行版中。
8. 387: Elastic Metaspace
彈性的元空間,可以幫助 HotSpot 虛擬機(jī),將元空間中未使用的 class 元數(shù)據(jù)內(nèi)存更及時(shí)地返回給操作系統(tǒng),以減少元空間的內(nèi)存占用空間。
另外,還簡(jiǎn)化了元空間的代碼,以降低維護(hù)成本。
9. 388: Windows/AArch64 Port
將 JDK 移植到 Windows/ AArch64 平臺(tái)系列。
10. 389: Foreign Linker API (孵化)
引入了一個(gè)新的 API,該 API 提供了對(duì)本地 native 代碼的靜態(tài)類型訪問支持。
11. 390: Warnings for Value-Based Classes
基于值的類的警告,將基礎(chǔ)類型包裝類指定為基于值的類,廢除其構(gòu)造函數(shù)以進(jìn)行刪除,從而提示新的棄用警告。并且提供了在任何基于值的類的實(shí)例上不正常進(jìn)行同步的警告。
12. 392: Packaging Tool
提供了 jpackage 打包工具,可用于打包獨(dú)立的 Java 應(yīng)用程序。
jpackage 打包工具是在 JDK 14 中首次作為孵化工具引入的新特性,到了 JDK 15 它仍然還在孵化中,現(xiàn)在它終于轉(zhuǎn)正了。
13. 393: Foreign-Memory Access API (三次孵化)
該 API 允許 Java 應(yīng)用程序安全有效地訪問 Java 堆之外的外部?jī)?nèi)存。
這個(gè)最早在 JDK 14 中成為孵化特性,JDK 15/ JDK 16 中繼續(xù)二、三次孵化并對(duì)其 API 有了一些更新,這個(gè)可以在 JDK 17 中好好期待一下轉(zhuǎn)正。
14. 394: Pattern Matching for instanceof
模式匹配 for instanceof,相當(dāng)于是增強(qiáng)的 instanceof,在 JDK 14 中首次成為預(yù)覽特性,在 JDK 16 中正式轉(zhuǎn)正。
模式匹配的到來將使得 instanceof 變得更簡(jiǎn)潔、更安全
15. 395: Records
簡(jiǎn)單來說,Records 就是一種新的語(yǔ)法糖,目的還是為了簡(jiǎn)化代碼,在 JDK 14 中首次成為預(yù)覽特性,在 JDK 16 中正式轉(zhuǎn)正。
Records 可以在一定程度上避免低級(jí)冗余的代碼,比如:constructors, getters, equals(), hashCode(), toString() 方法等,相當(dāng)于 Lombok 的 @Data 注解,但又不能完全替代。
16. 396: Strongly Encapsulate JDK Internals by Default
JDK 內(nèi)部默認(rèn)強(qiáng)封裝,JDK 16 開始對(duì) JDK 內(nèi)部大部分元素默認(rèn)進(jìn)行強(qiáng)封裝,sun.misc.Unsafe 之類的關(guān)鍵內(nèi)部 API 除外,從而限制對(duì)它們的訪問。
此外,用戶仍然可以選擇自 JDK 9 以來的默認(rèn)的寬松的強(qiáng)封裝,這樣可以幫助用戶毫不費(fèi)力地升級(jí)到未來的 Java 版本。
17. 397: Sealed Classes (二次預(yù)覽)
封閉類(二次預(yù)覽),可以是封閉類和或者封閉接口,用來增強(qiáng) Java 編程語(yǔ)言,防止其他類或接口擴(kuò)展或?qū)崿F(xiàn)它們
???????
JDK環(huán)境變量配置方法
JDK(TM)7 32位安裝成功,還需要對(duì)JDK的環(huán)境變量進(jìn)行配置才能正常使用,具體操作如下:
右擊【計(jì)算機(jī)】,選擇【屬性】,進(jìn)入系統(tǒng)頁(yè)面,點(diǎn)擊【高級(jí)系統(tǒng)設(shè)置】,然后進(jìn)入系統(tǒng)屬性頁(yè)面,點(diǎn)擊【高級(jí)】——【環(huán)境變量】,
如圖,在【系統(tǒng)變量】下點(diǎn)擊【新建】,彈出對(duì)話框,變量名為【JAVA_HOME】,變量值是指安裝JDK的路徑,小編安裝在C:\Program Files (x86)\Java\jre7,點(diǎn)擊確定,
在系統(tǒng)變量中找到Path變量,進(jìn)行編輯,彈出對(duì)話框,變量名為Path,在變量值中添加輸入【;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;】,
注意,不要?jiǎng)h除原來Path的變量值,直接在后面輸入代碼,點(diǎn)擊確定,
找到CLASSPATH,沒有就要新建,變量名為CLASSPATH,變量值為【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 】,點(diǎn)擊確定,
返回桌面,檢測(cè)JDK是否配置成功,按【W(wǎng)in+R】,彈出運(yùn)行窗口,輸入cmd,打開命令提示符
輸入java -version(java 和 -version之間有空格),出現(xiàn)如圖信息,說明配置成功了。