JDK18功能先知

JDK18功能先知

這個(gè)版本將是JavaSE平臺(tái)版本18的參考實(shí)現(xiàn),正如Java社區(qū)進(jìn)程中JSR393所指定的那樣。

狀態(tài)

JDK18當(dāng)前處于Rapdown one階段。整個(gè)功能集已凍結(jié)。針對(duì)此版本將不再添加JEPs。
這個(gè)穩(wěn)定版的jdk18是開源的,同樣可以根據(jù)JDK發(fā)布流程(JEP 3)進(jìn)行部分bug修復(fù)和后期增強(qiáng)。

新功能

  • JEP 400:UTF-8作為默認(rèn)

    概述

    • 指定 UTF-8 作為標(biāo)準(zhǔn) Java API 的默認(rèn)字符集。通過此更改,依賴于默認(rèn)字符集的 API 將在所有實(shí)現(xiàn)、操作系統(tǒng)、區(qū)域設(shè)置和配置中保持一致。

    目標(biāo)

    • 當(dāng)Java程序的代碼依賴于默認(rèn)字符集時(shí),使其更可預(yù)測(cè)和可移植。

    • 闡明標(biāo)準(zhǔn)JavaAPI在何處使用默認(rèn)字符集。

    • 通過標(biāo)準(zhǔn)Java API對(duì)UTF-8進(jìn)行標(biāo)準(zhǔn)化,控制臺(tái)I/O除外。

  • JEP 408:簡(jiǎn)單Web服務(wù)器

    概述

    • 引入一個(gè)簡(jiǎn)單的 Web 服務(wù)器。提供一個(gè)命令行工具,來啟動(dòng)一個(gè)只提供靜態(tài)文件的最小網(wǎng)絡(luò)服務(wù)器,它沒有 CGI 或類似 servlet 的功能可用。該工具用于原型設(shè)計(jì)、臨時(shí)編碼和測(cè)試目的,尤其是在教學(xué)環(huán)境中。

    目標(biāo)

    • 提供一個(gè)開箱即用的靜態(tài)HTTP文件服務(wù)器,具有簡(jiǎn)單的設(shè)置和最少的功能。

    • 降低開發(fā)人員的激活能,使JDK更容易接近。

    • 通過命令行提供一個(gè)默認(rèn)實(shí)現(xiàn),以及一個(gè)用于編程創(chuàng)建和自定義的小API。

  • JEP 413 :Java API文檔中添加Snippet代碼

    概述

    • 支持在 Java API 文檔中加入代碼片段。為 JavaDoc 的 Standard Doclet 引入一個(gè) @snippet 標(biāo)記,以簡(jiǎn)化 API 文檔中嵌入示例源代碼的難度。

    目標(biāo)

    • 通過提供對(duì)源代碼片段的API訪問,促進(jìn)源代碼片段的驗(yàn)證。盡管正確性最終是作者的責(zé)任,但javadoc和相關(guān)工具中增強(qiáng)的支持可以使其更容易實(shí)現(xiàn)。

    • 啟用現(xiàn)代樣式,例如語法高亮顯示,以及名稱與聲明的自動(dòng)鏈接。

    • 為創(chuàng)建和編輯代碼段提供更好的IDE支持。

  • JEP 416 :用方法句柄重新實(shí)現(xiàn)核心反射

    概述

    • 用方法句柄重新實(shí)現(xiàn)核心反射。在 java.lang.invoke 的方法句柄之上,重構(gòu) java.lang.reflect 的方法、構(gòu)造函數(shù)和字段,使用方法句柄處理反射的底層機(jī)制將減少 java.lang.reflect 和 java.lang.invoke 兩者的 API 維護(hù)和開發(fā)成本。
  • JEP 417 :Vector API(這里是矢量還是向量,不是很確定)

    概述

    • Vector API(第三孵化器)。引入一個(gè) API 來表達(dá)向量計(jì)算,這些計(jì)算在運(yùn)行時(shí)可以編譯為支持的 CPU 架構(gòu)上的最佳向量指令,從而實(shí)現(xiàn)優(yōu)于等效標(biāo)量計(jì)算的性能。

    目標(biāo)

    • 清晰簡(jiǎn)潔的API - 該API應(yīng)能夠清晰簡(jiǎn)潔地表達(dá)廣泛的向量計(jì)算,包括循環(huán)內(nèi)的向量操作序列,可能還有控制流。應(yīng)該可以表示關(guān)于向量大小或每個(gè)向量的車道數(shù)的通用計(jì)算,從而使此類計(jì)算能夠跨支持不同向量大小的硬件進(jìn)行移植。

    • 平臺(tái)無關(guān) - API應(yīng)該是CPU架構(gòu)無關(guān)的,支持在支持向量指令的多個(gè)架構(gòu)上實(shí)現(xiàn)。與Java API中的常見情況一樣,平臺(tái)優(yōu)化和可移植性之間存在沖突,因此偏向于使API可移植,即使這會(huì)導(dǎo)致某些特定于平臺(tái)的習(xí)慣用法無法在可移植代碼中表達(dá)。

    • x64和AArch64體系結(jié)構(gòu)上的可靠運(yùn)行時(shí)編譯和性能 - 在可運(yùn)行Java的x64體系結(jié)構(gòu)上時(shí),特別是HotSpot C2編譯器,應(yīng)將向量操作編譯為相應(yīng)的高效和性能向量指令,例如,由數(shù)據(jù)流單指令多數(shù)據(jù)擴(kuò)展指令集(SSE)和高級(jí)向量擴(kuò)展指令集(AVX)支持的指令集。開發(fā)人員應(yīng)該確信他們所表達(dá)的向量操作將可靠地映射到相關(guān)向量指令。同樣,在功能強(qiáng)大的ARM AArch64體系結(jié)構(gòu)上,C2將把向量操作編譯為NEON和SVE支持的向量指令。

    • 優(yōu)雅降級(jí) - 有時(shí)向量計(jì)算不能在運(yùn)行時(shí)完全表示為向量指令序列,可能是因?yàn)轶w系結(jié)構(gòu)不支持某些必需的指令。在這種情況下,向量API實(shí)現(xiàn)應(yīng)該優(yōu)雅地降級(jí),并且仍能正常工作。如果向量計(jì)算無法有效編譯為向量指令,則可能會(huì)發(fā)出警告。在沒有向量的平臺(tái)上,優(yōu)雅的降級(jí)將產(chǎn)生與手動(dòng)展開環(huán)路競(jìng)爭(zhēng)的代碼,其中展開因子是選定向量中的車道數(shù)。

  • JEP 418 :互特網(wǎng)地址解析

    概述

    • 互聯(lián)網(wǎng)地址解析 SPI。定義用于主機(jī)名和地址解析的服務(wù)提供者接口 (SPI),以便java.net.InetAddress可以使用平臺(tái)內(nèi)置解析器以外的解析器。
  • JEP 419 :外部函數(shù)和內(nèi)存API

    概述

    • 外部函數(shù)和內(nèi)存 API(第二孵化器)。引入了一個(gè)新 API, Java 程序可以通過它與 Java 運(yùn)行時(shí)之外的代碼和數(shù)據(jù)進(jìn)行互操作。通過有效地調(diào)用外部函數(shù)(即 JVM 外的代碼),并安全地訪問外部?jī)?nèi)存(即不由 JVM 管理的內(nèi)存),外部函數(shù)和內(nèi)存 API 使 Java 程序能夠調(diào)用本機(jī)庫并處理本機(jī)數(shù)據(jù),而不具有 JNI 的脆弱性和危險(xiǎn)。

    目標(biāo)

    • 易用性 - 用一個(gè)優(yōu)秀的純Java開發(fā)模型替換Java本機(jī)接口(JNI)。

    • 性能 - 提供與現(xiàn)有API(如JNI和sun)相當(dāng)(如果不是更好的話)的性能。非安全的。

    • 通用性 - 提供操作不同類型的外部存儲(chǔ)器(例如,本地內(nèi)存、持久內(nèi)存和托管堆內(nèi)存)的方法,并且隨著時(shí)間的推移,以適應(yīng)其他平臺(tái)(例如,32位x86)和用C以外的語言編寫的外部函數(shù)(例如,C++、FORTRAN)。

    • 安全 - 默認(rèn)情況下禁用不安全操作,僅在應(yīng)用程序開發(fā)人員或最終用戶明確選擇加入后才允許執(zhí)行這些操作。

  • JEP 420 : switch模式匹配

    概述

    • switch 模式匹配表達(dá)式。使用 switch 表達(dá)式和語句的模式匹配以及對(duì)模式語言的擴(kuò)展來增強(qiáng) Java 編程語言。將模式匹配擴(kuò)展到 switch 允許針對(duì)多個(gè)模式測(cè)試表達(dá)式,每個(gè)模式都有特定的操作,可以簡(jiǎn)潔安全地表達(dá)復(fù)雜的面向數(shù)據(jù)的查詢。

    目標(biāo)

    • 通過允許模式出現(xiàn)在大小寫標(biāo)簽中,擴(kuò)展開關(guān)表達(dá)式和語句的表達(dá)能力和適用性。

    • 允許在需要時(shí)放寬switch的歷史空值。

    • 引入兩種新的模式:

      • <font color=deeppink>保護(hù)模式</font> - 允許使用任意布爾表達(dá)式。細(xì)化模式匹配邏輯。
      • <font color=deeppink>括號(hào)模式</font> - 解決一些解析歧義。
    • 確保所有現(xiàn)有的switch表達(dá)式和語句繼續(xù)編譯而不做任何更改,并以相同的語義執(zhí)行。

    • 不要引入一個(gè)新的類似switch的表達(dá)式或語句,該表達(dá)式或語句具有與傳統(tǒng)switch構(gòu)造分離的模式匹配語義。

    • 當(dāng)大小寫標(biāo)簽為模式時(shí),不要使switch表達(dá)式或語句的行為與大小寫標(biāo)簽為傳統(tǒng)常量時(shí)的行為不同。

  • JEP 421 :棄用 Finalization 功能

    概述

    • 棄用 Finalization 功能。Java 1.0 中引入的 Finalization 旨在幫助避免資源泄漏問題,然而這個(gè)功能存在延遲不可預(yù)測(cè)、行為不受約束,以及線程無法指定等缺陷,導(dǎo)致其安全性、性能、可靠性和可維護(hù)性方面都存在問題,因此將其棄用,用戶可選擇遷移到其他資源管理技術(shù),例如try-with-resources 語句和清潔器。

    目標(biāo)

    • 幫助開發(fā)人員了解最終確定的危險(xiǎn)。

    • 讓開發(fā)人員做好準(zhǔn)備,以便在將來的Java版本中刪除。

    • 提供簡(jiǎn)單的工具來幫助檢測(cè)對(duì)定稿的依賴。

* 官方相關(guān)資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容