JDK18功能先知
這個版本將是JavaSE平臺版本18的參考實現(xiàn),正如Java社區(qū)進程中JSR393所指定的那樣勇凭。
狀態(tài)
JDK18當前處于Rapdown one階段。整個功能集已凍結(jié)。針對此版本將不再添加JEPs。
這個穩(wěn)定版的jdk18是開源的馅而,同樣可以根據(jù)JDK發(fā)布流程(JEP 3)進行部分bug修復(fù)和后期增強。
新功能
-
JEP 400:UTF-8作為默認
概述
- 指定 UTF-8 作為標準 Java API 的默認字符集譬圣。通過此更改瓮恭,依賴于默認字符集的 API 將在所有實現(xiàn)、操作系統(tǒng)胁镐、區(qū)域設(shè)置和配置中保持一致偎血。
目標
當Java程序的代碼依賴于默認字符集時诸衔,使其更可預(yù)測和可移植盯漂。
闡明標準JavaAPI在何處使用默認字符集。
通過標準Java API對UTF-8進行標準化笨农,控制臺I/O除外就缆。
-
JEP 408:簡單Web服務(wù)器
概述
- 引入一個簡單的 Web 服務(wù)器。提供一個命令行工具谒亦,來啟動一個只提供靜態(tài)文件的最小網(wǎng)絡(luò)服務(wù)器竭宰,它沒有 CGI 或類似 servlet 的功能可用空郊。該工具用于原型設(shè)計、臨時編碼和測試目的切揭,尤其是在教學(xué)環(huán)境中狞甚。
目標
提供一個開箱即用的靜態(tài)HTTP文件服務(wù)器,具有簡單的設(shè)置和最少的功能廓旬。
降低開發(fā)人員的激活能哼审,使JDK更容易接近。
通過命令行提供一個默認實現(xiàn)孕豹,以及一個用于編程創(chuàng)建和自定義的小API涩盾。
-
JEP 413 :Java API文檔中添加Snippet代碼
概述
- 支持在 Java API 文檔中加入代碼片段。為 JavaDoc 的 Standard Doclet 引入一個 @snippet 標記励背,以簡化 API 文檔中嵌入示例源代碼的難度春霍。
目標
通過提供對源代碼片段的API訪問,促進源代碼片段的驗證叶眉。盡管正確性最終是作者的責任址儒,但javadoc和相關(guān)工具中增強的支持可以使其更容易實現(xiàn)。
啟用現(xiàn)代樣式衅疙,例如語法高亮顯示离福,以及名稱與聲明的自動鏈接。
為創(chuàng)建和編輯代碼段提供更好的IDE支持炼蛤。
-
JEP 416 :用方法句柄重新實現(xiàn)核心反射
概述
- 用方法句柄重新實現(xiàn)核心反射妖爷。在 java.lang.invoke 的方法句柄之上,重構(gòu) java.lang.reflect 的方法理朋、構(gòu)造函數(shù)和字段絮识,使用方法句柄處理反射的底層機制將減少 java.lang.reflect 和 java.lang.invoke 兩者的 API 維護和開發(fā)成本。
-
JEP 417 :Vector API(這里是矢量還是向量嗽上,不是很確定)
概述
- Vector API(第三孵化器)次舌。引入一個 API 來表達向量計算,這些計算在運行時可以編譯為支持的 CPU 架構(gòu)上的最佳向量指令兽愤,從而實現(xiàn)優(yōu)于等效標量計算的性能彼念。
目標
清晰簡潔的API - 該API應(yīng)能夠清晰簡潔地表達廣泛的向量計算,包括循環(huán)內(nèi)的向量操作序列浅萧,可能還有控制流逐沙。應(yīng)該可以表示關(guān)于向量大小或每個向量的車道數(shù)的通用計算,從而使此類計算能夠跨支持不同向量大小的硬件進行移植洼畅。
平臺無關(guān) - API應(yīng)該是CPU架構(gòu)無關(guān)的吩案,支持在支持向量指令的多個架構(gòu)上實現(xiàn)。與Java API中的常見情況一樣帝簇,平臺優(yōu)化和可移植性之間存在沖突徘郭,因此偏向于使API可移植靠益,即使這會導(dǎo)致某些特定于平臺的習慣用法無法在可移植代碼中表達。
x64和AArch64體系結(jié)構(gòu)上的可靠運行時編譯和性能 - 在可運行Java的x64體系結(jié)構(gòu)上時残揉,特別是HotSpot C2編譯器胧后,應(yīng)將向量操作編譯為相應(yīng)的高效和性能向量指令,例如抱环,由數(shù)據(jù)流單指令多數(shù)據(jù)擴展指令集(SSE)和高級向量擴展指令集(AVX)支持的指令集绩卤。開發(fā)人員應(yīng)該確信他們所表達的向量操作將可靠地映射到相關(guān)向量指令。同樣江醇,在功能強大的ARM AArch64體系結(jié)構(gòu)上濒憋,C2將把向量操作編譯為NEON和SVE支持的向量指令。
優(yōu)雅降級 - 有時向量計算不能在運行時完全表示為向量指令序列陶夜,可能是因為體系結(jié)構(gòu)不支持某些必需的指令凛驮。在這種情況下,向量API實現(xiàn)應(yīng)該優(yōu)雅地降級条辟,并且仍能正常工作黔夭。如果向量計算無法有效編譯為向量指令,則可能會發(fā)出警告羽嫡。在沒有向量的平臺上本姥,優(yōu)雅的降級將產(chǎn)生與手動展開環(huán)路競爭的代碼,其中展開因子是選定向量中的車道數(shù)杭棵。
-
JEP 418 :互特網(wǎng)地址解析
概述
- 互聯(lián)網(wǎng)地址解析 SPI婚惫。定義用于主機名和地址解析的服務(wù)提供者接口 (SPI),以便java.net.InetAddress可以使用平臺內(nèi)置解析器以外的解析器魂爪。
-
JEP 419 :外部函數(shù)和內(nèi)存API
概述
- 外部函數(shù)和內(nèi)存 API(第二孵化器)先舷。引入了一個新 API, Java 程序可以通過它與 Java 運行時之外的代碼和數(shù)據(jù)進行互操作。通過有效地調(diào)用外部函數(shù)(即 JVM 外的代碼)滓侍,并安全地訪問外部內(nèi)存(即不由 JVM 管理的內(nèi)存)蒋川,外部函數(shù)和內(nèi)存 API 使 Java 程序能夠調(diào)用本機庫并處理本機數(shù)據(jù),而不具有 JNI 的脆弱性和危險撩笆。
目標
易用性 - 用一個優(yōu)秀的純Java開發(fā)模型替換Java本機接口(JNI)捺球。
性能 - 提供與現(xiàn)有API(如JNI和sun)相當(如果不是更好的話)的性能。非安全的夕冲。
通用性 - 提供操作不同類型的外部存儲器(例如氮兵,本地內(nèi)存、持久內(nèi)存和托管堆內(nèi)存)的方法耘擂,并且隨著時間的推移胆剧,以適應(yīng)其他平臺(例如絮姆,32位x86)和用C以外的語言編寫的外部函數(shù)(例如醉冤,C++秩霍、FORTRAN)。
安全 - 默認情況下禁用不安全操作蚁阳,僅在應(yīng)用程序開發(fā)人員或最終用戶明確選擇加入后才允許執(zhí)行這些操作铃绒。
-
JEP 420 : switch模式匹配
概述
- switch 模式匹配表達式。使用 switch 表達式和語句的模式匹配以及對模式語言的擴展來增強 Java 編程語言螺捐。將模式匹配擴展到 switch 允許針對多個模式測試表達式颠悬,每個模式都有特定的操作,可以簡潔安全地表達復(fù)雜的面向數(shù)據(jù)的查詢定血。
目標
通過允許模式出現(xiàn)在大小寫標簽中赔癌,擴展開關(guān)表達式和語句的表達能力和適用性。
允許在需要時放寬switch的歷史空值澜沟。
-
引入兩種新的模式:
- <font color=deeppink>保護模式</font> - 允許使用任意布爾表達式灾票。細化模式匹配邏輯。
- <font color=deeppink>括號模式</font> - 解決一些解析歧義茫虽。
確保所有現(xiàn)有的switch表達式和語句繼續(xù)編譯而不做任何更改刊苍,并以相同的語義執(zhí)行。
不要引入一個新的類似switch的表達式或語句濒析,該表達式或語句具有與傳統(tǒng)switch構(gòu)造分離的模式匹配語義正什。
當大小寫標簽為模式時,不要使switch表達式或語句的行為與大小寫標簽為傳統(tǒng)常量時的行為不同号杏。
-
JEP 421 :棄用 Finalization 功能
概述
- 棄用 Finalization 功能婴氮。Java 1.0 中引入的 Finalization 旨在幫助避免資源泄漏問題,然而這個功能存在延遲不可預(yù)測盾致、行為不受約束莹妒,以及線程無法指定等缺陷,導(dǎo)致其安全性绰上、性能旨怠、可靠性和可維護性方面都存在問題,因此將其棄用蜈块,用戶可選擇遷移到其他資源管理技術(shù)鉴腻,例如try-with-resources 語句和清潔器。
目標
幫助開發(fā)人員了解最終確定的危險百揭。
讓開發(fā)人員做好準備爽哎,以便在將來的Java版本中刪除。
提供簡單的工具來幫助檢測對定稿的依賴器一。