JDK 16 即將發(fā)布,新特性速覽!
閱讀本文大概需要 3.5 分鐘。
來(lái)自:blog.csdn.net/csdnnews/article/details/110483909
你還能追上 Java 的更新速度嗎?
以前在 JDK 15 中預(yù)覽的密封類(lèi)和接口限制其他類(lèi)和接口可以擴(kuò)展或?qū)崿F(xiàn)它們。該計(jì)劃的目標(biāo)包括,允許類(lèi)或接口的作者控制負(fù)責(zé)實(shí)現(xiàn)它的代碼,提供比訪問(wèn)修飾符更聲明性的方式來(lái)限制超類(lèi)的使用,以及通過(guò)提供模式分析的基礎(chǔ)來(lái)支持模式匹配的未來(lái)方向。 默認(rèn)情況下,對(duì) JDK 內(nèi)部進(jìn)行強(qiáng)封裝,但關(guān)鍵內(nèi)部 API(如 misc.Unsafe ) 除外。用戶可以選擇自 JDK 9 以來(lái)默認(rèn)的寬松強(qiáng)封裝。此建議的目標(biāo)包括提高 JDK 的安全性和可維護(hù)性,作為項(xiàng)目 Jigsaw 的一部分,并鼓勵(lì)開(kāi)發(fā)人員從使用內(nèi)部元素遷移到使用標(biāo)準(zhǔn) API,以便開(kāi)發(fā)人員和最終用戶都可以輕松地更新到未來(lái)的 Java 版本。 外部鏈接程序 API,提供靜態(tài)類(lèi)型、純 Java 對(duì)本機(jī)代碼的訪問(wèn)。此 API 將在 JDK 16 中處于孵化器階段。 將 ZGC(Z 垃圾收集器)線程堆棧處理從安全點(diǎn)移動(dòng)到并發(fā)階段。此計(jì)劃的目標(biāo)包括從 ZGC 安全點(diǎn)中刪除線程堆棧處理。 彈性元空間功能,它將可以更迅速地將未使用的 HotSpot VM 類(lèi)元數(shù)據(jù)(元空間)內(nèi)存返回到操作系統(tǒng),減少元空間占用空間并簡(jiǎn)化元空間代碼以降低維護(hù)成本。 啟用 C++ 14 語(yǔ)言功能,允許在 JDK C++ 源代碼中使用C++ 14功能,并提供有關(guān)部分功能可用于 HotSpot VM 代碼的特定指導(dǎo)。 孵化器階段的向量 API,其中 JDK 將安裝一個(gè)孵化器模塊,用于表示編譯為支持的 CPU 體系結(jié)構(gòu)上的最佳矢量硬件指令的矢量計(jì)算,以實(shí)現(xiàn)與等效標(biāo)量計(jì)算更高的性能。 將 JDK 移植到 Windows/AArch64 平臺(tái)。隨著新的服務(wù)器級(jí)和使用者 AArch64 (ARM64) 硬件的發(fā)布,Windows/AArch64 已成為一個(gè)重要的平臺(tái)。 在 x64 和 AArch64 體系結(jié)構(gòu)上,將 JDK 移植到 Alpine Linux 和其他使用 musl 作為主 C 庫(kù)的 Linux 發(fā)行版。Musl 是 ISO C 和 Posix 標(biāo)準(zhǔn)中描述的標(biāo)準(zhǔn)庫(kù)功能的 Linux 實(shí)現(xiàn)。由于云部署、微服務(wù)和容器環(huán)境,Alpine Linux 由于其映像大小較小,因此被廣泛采用。 為不可變數(shù)據(jù)提供充當(dāng)透明載體的記錄類(lèi)。 增加 Unix 域套接字通道,其中 Unix 域 (AF_UNIX) 套接字支持添加到 nio.channels 包中的套接字通道和服務(wù)器套接字通道 API 中。該計(jì)劃還擴(kuò)展了繼承的通道機(jī)制,以支持 Unix 域套接字通道和服務(wù)器套接字通道。Unix 域套接字用于同一主機(jī)上的進(jìn)程間通信。它們?cè)诤芏喾矫媾c TCP/IP 套接字類(lèi)似,只是它們由文件系統(tǒng)路徑名稱而不是 IP 地址和端口號(hào)尋址。新功能的目標(biāo)是支持 Unix 域套接字通道的所有功能,這些功能在主要 Unix 平臺(tái)和 Windows 中很常見(jiàn)。 一種外部存儲(chǔ)器訪問(wèn) API,允許 Java 程序安全地訪問(wèn) Java 堆以外的外部存儲(chǔ)器。這一功能將在 JDK 16 中重新孵化。優(yōu)化的目標(biāo)包括提供單個(gè) API 以對(duì)各種外部存儲(chǔ)器(包括本機(jī)、持久和托管堆內(nèi)存)進(jìn)行操作,API 不應(yīng)破壞 JVM 的安全性。此外,許多 Java 程序應(yīng)訪問(wèn)外部存儲(chǔ)器,如Lgnite、Memcached 和 MapDB。但是 JavaAPI 不能提供令人滿意的訪問(wèn)外部?jī)?nèi)存 .MemorySegmentMemoryAddresses 的解決方案。 用于運(yùn)算符的模式匹配(該功能也在 JDK 14/15 版本中實(shí)現(xiàn)了預(yù)覽)。在 JDK 16 上,模式匹配允許程序中的通用邏輯,即從對(duì)象中提取組件,可以更簡(jiǎn)潔、更安全地表達(dá).instanceof 運(yùn)算符。 提供用于打包獨(dú)立的 Java應(yīng)用程序 jpackage 工具。最初作為 JDK 14 中的孵化工具,jpackage在 JDK 15中仍然處于孵化期。預(yù)計(jì)到 JDK 16 版本,jpackage 將會(huì)進(jìn)入生產(chǎn)環(huán)境中,支持本地包格式,并為用戶提供流暢的安裝體驗(yàn),以及允許在打包時(shí)指定啟動(dòng)時(shí)間參數(shù)。格式包括 Windows 上的 msi 和 exe、 MacOs 上的 pkg 和 dmg、以及 Linux 上的 deb 和 rpm 。該工具可以直接從命令行調(diào)用,也可以以編程方式調(diào)用。新的打包工具解決了許多 Java 應(yīng)用程序需要以一流的方式安裝在本機(jī)平臺(tái)上,而不是放置在類(lèi)路徑或模塊路徑上等問(wèn)題。 OpenJDK 源代碼存儲(chǔ)庫(kù)從 Mercurial 遷移到 Git。推動(dòng)這項(xiàng)工作是借助版本控制系統(tǒng)元數(shù)據(jù)和可用工具及托管方面的優(yōu)勢(shì)。 借助 JEP 369,托管平臺(tái)遷移到 GitHub。在今年 9 月 5 日,Mercurial JDK 和 JDK 沙盒向 Git、GitHub 和 Skara 的過(guò)渡工作已實(shí)現(xiàn)。
推薦閱讀:
為什么不建議把數(shù)據(jù)庫(kù)部署在Docker容器內(nèi)
微信掃描二維碼,關(guān)注我的公眾號(hào)
朕已閱?
評(píng)論
圖片
表情

