當開發者深陷 Java 8 版本之際,這邊下一版本 Java 16 有了最新的消息,與 Java 15 同樣,做爲短時間版本,Oracle 僅提供 6 個月的支持。
編程
根據發佈計劃,JDK 16 將在 12 月 10 日和 2021 年 1 月 14 進入 Rampdown 階段,2021 年 2 月 4 日到 2 月 18 日進入發佈候選階段。安全
最終版本預計於 2021 年 3 月 16 日正式發佈。服務器
日前, JDK 16 揭曉了即將到來的新功能,接下來,咱們將一睹爲快:併發
之前在 JDK 15 中預覽的密封類和接口限制其餘類和接口能夠擴展或實現它們。該計劃的目標包括,容許類或接口的做者控制負責實現它的代碼,提供比訪問修飾符更聲明性的方式來限制超類的使用,以及經過提供模式分析的基礎來支持模式匹配的將來方向。app
默認狀況下,對 JDK 內部進行強封裝,但關鍵內部 API(如 misc.Unsafe ) 除外。用戶能夠選擇自 JDK 9 以來默認的寬鬆強封裝。此建議的目標包括提升 JDK 的安全性和可維護性,做爲項目 Jigsaw 的一部分,並鼓勵開發人員從使用內部元素遷移到使用標準 API,以便開發人員和最終用戶均可以輕鬆地更新到將來的 Java 版本。ide
外部連接程序 API,提供靜態類型、純 Java 對本機代碼的訪問。此 API 將在 JDK 16 中處於孵化器階段。微服務
將 ZGC(Z 垃圾收集器)線程堆棧處理從安全點移動到併發階段。此計劃的目標包括從 ZGC 安全點中刪除線程堆棧處理。工具
彈性元空間功能,它將能夠更迅速地將未使用的 HotSpot VM 類元數據(元空間)內存返回到操做系統,減小元空間佔用空間並簡化元空間代碼以下降維護成本。性能
啓用 C++ 14 語言功能,容許在 JDK C++ 源代碼中使用C++ 14功能,並提供有關部分功能可用於 HotSpot VM 代碼的特定指導。優化
孵化器階段的向量 API,其中 JDK 將安裝一個孵化器模塊,用於表示編譯爲支持的 CPU 體系結構上的最佳矢量硬件指令的矢量計算,以實現與等效標量計算更高的性能。
將 JDK 移植到 Windows/AArch64 平臺。隨着新的服務器級和使用者 AArch64 (ARM64) 硬件的發佈,Windows/AArch64 已成爲一個重要的平臺。
在 x64 和 AArch64 體系結構上,將 JDK 移植到 Alpine Linux 和其餘使用 musl 做爲主 C 庫的 Linux 發行版。Musl 是 ISO C 和 Posix 標準中描述的標準庫功能的 Linux 實現。因爲雲部署、微服務和容器環境,Alpine Linux 因爲其映像大小較小,所以被普遍採用。
爲不可變數據提供充當透明載體的記錄類。
增長 Unix 域套接字通道,其中 Unix 域 (AF_UNIX) 套接字支持添加到 nio.channels 包中的套接字通道和服務器套接字通道 API 中。該計劃還擴展了繼承的通道機制,以支持 Unix 域套接字通道和服務器套接字通道。Unix 域套接字用於同一主機上的進程間通訊。它們在不少方面與 TCP/IP 套接字相似,只是它們由文件系統路徑名稱而不是 IP 地址和端口號尋址。新功能的目標是支持 Unix 域套接字通道的全部功能,這些功能在主要 Unix 平臺和 Windows 中很常見。
一種外部存儲器訪問 API,容許 Java 程序安全地訪問 Java 堆之外的外部存儲器。這一功能將在 JDK 16 中從新孵化。優化的目標包括提供單個 API 以對各類外部存儲器(包括本機、持久和託管堆內存)進行操做,API 不該破壞 JVM 的安全性。此外,許多 Java 程序應訪問外部存儲器,如Lgnite、Memcached 和 MapDB。可是 JavaAPI 不能提供使人滿意的訪問外部內存 .MemorySegmentMemoryAddresses 的解決方案。
用於運算符的模式匹配(該功能也在 JDK 14/15 版本中實現了預覽)。在 JDK 16 上,模式匹配容許程序中的通用邏輯,即從對象中提取組件,能夠更簡潔、更安全地表達.instanceof 運算符。
提供用於打包獨立的 Java應用程序 jpackage 工具。最初做爲 JDK 14 中的孵化工具,jpackage在 JDK 15中仍然處於孵化期。預計到 JDK 16 版本,jpackage 將會進入生產環境中,支持本地包格式,併爲用戶提供流暢的安裝體驗,以及容許在打包時指定啓動時間參數。格式包括 Windows 上的 msi 和 exe、 MacOs 上的 pkg 和 dmg、以及 Linux 上的 deb 和 rpm 。該工具能夠直接從命令行調用,也能夠以編程方式調用。新的打包工具解決了許多 Java 應用程序須要以一流的方式安裝在本機平臺上,而不是放置在類路徑或模塊路徑上等問題。
OpenJDK 源代碼存儲庫從 Mercurial 遷移到 Git。推進這項工做是藉助版本控制系統元數據和可用工具及託管方面的優點。
藉助 JEP 369,託管平臺遷移到 GitHub。在今年 9 月 5 日,Mercurial JDK 和 JDK 沙盒向 Git、GitHub 和 Skara 的過渡工做已實現。
繼 Java 16 以後,Java 17 將於 2021 年 9 月發佈,這是長期支持(LTS)版本,所以身處研發前線的開發者能夠再等等。
對此,你期待新版 Java 的到來嗎?