JDK15正式發布 新增功能預覽

2022-10-06 02:48:11 字數 2290 閱讀 3162

jdk 15 在 2020 年 9 月 15 號正式發布了,這次發布的主要功能有:

nbpolyuhnd

jep:jdk enhancement proposals,jdk 增強建議,也就是 jdk 的特性新增和改進提案。

這些年發布的版本對應的 jeps 數量如下圖所示:

發布版本說明

根據發布的規劃,這次發布的 jdk 15 將是乙個短期的過度版,只會被 oracle 支援(維護)6 個月,直到明年 3 月的 jdk 16 發布此版本將停止維護。而 oracle 下乙個長期支援版(lts 版)會在明年的 9 月份候發布(j**a 17),lts 版每 3 年發布乙個,上一次長期支援版是 18 年 9 月發布的 jdk 11。

jdk 15 新功能說明

jdk 15 為使用者提供了十四項主要的增強/更改,包括乙個孵化器模組,三個預覽功能,兩個不推薦使用的功能以及兩個刪除功能。

1、eddsa 數字簽名演算法

新加入 edwards-curve 數字簽名演算法(eddsa)實現加密簽名。在許多其它加密庫(如 openssl 和 boringssl)中得到支援。與 jdk 中的現有簽名方案相比,eddsa 具有更高的安全性和效能。這是乙個新的功能。

2、隱藏類

此功能可幫助需要在執行時生成類的框架。框架生成類需要動態擴充套件其行為,但是又希望限制對這些類的訪問。隱藏類很有用,因為它們只能通過反射訪問,而不能從普通位元組碼訪問。此外,隱藏類可以獨立於其他類載入,這可以減少框架的記憶體占用。這是乙個新的功能。

3、重新實現 datagramsocket api

重新實現舊版 datagramsocket api,更簡單、更現代的實現來代替j**a.net.datagramsocket和j**a.net.multicastsocketapi 的基礎實現,提高了 jdk 的可維護性和穩定性。

4、zgc 功能轉正

zgc 已由jep 333整合到jdk 11 中,其目標是通過減少 gc 停頓時間來提高效能。借助 jep 377,zgc 從預覽功能轉變為生產功能。

5、文字塊功能轉正

文字塊由jep 355在 2019 年提出,文字塊是一種多行字串文字,它避免了大多數轉義序列的需要,以一種可**的方式自動設定字串的格式,並在需要時使開發人員可以控制格式。借助 jep 378,文字塊已成為 j**a 語言的永久功能。

6、shenandoah 垃圾**演算法轉正

shenandoah 垃圾**從實驗特性變為產品特性。這是乙個從 jdk 12 引入的**演算法,該演算法通過與正在執行的 j**a 執行緒同時進行疏散工作來減少 gc 暫停時間。shenandoah 的暫停時間與堆大小無關,無論堆疊是 200 mb 還是 200 gb,都具有相同的一致暫停時間。

7、密封類(預覽)

通過密封的類和介面來增強 j**a 程式語言,用於限制超類的使用,密封的類和介面限制其它可能繼承或實現它們的其它類或介面。

8、instanceof 自動匹配模式(預覽)

舊寫法:

// 先判斷型別

if (obj instanceof string)

新寫法:

if (obj instanceof string s) else

這是第二次預覽該功能,我們已經在 j**a 14 中首次預覽過該特性。

9、records class(預覽)

records class 也是第二次出現的預覽功能,它在 jdk 14 中也出現過一次了,使用 record 可以更方便的建立乙個常量類,使用的前後**對比如下。

舊寫法:

class point

int x()

int y()

public boolean equals(object o)

public int hashcode()

public string tostring()

}新寫法:

record point(int x, int y)

也就是說在使用了 record 之後,就可以用一行**編寫出乙個常量類,並且這個常量類還包含了構造方法、tostring()、equals() 和 hashcode() 等方法。

10、外部儲存器訪問 api(預覽)

目的是引入乙個 api,以允許 j**a 程式安全有效地訪問 j**a 堆之外的外部記憶體。這同樣是 j**a 14 的乙個預覽特性。

11、其它功能

其它功能裡面還有一些棄用和不建議使用的程式設計客棧功能,比如移除了 nashorn j**ascript 引擎,同時也移除了刪除 solaris 和 sparc 埠,並標記了一些棄用功能。

參考 & 鳴謝

碼農小胖哥:

官方日誌:

JDK 1 5中新增的語言特性

1 泛型generics 支援引數化型別,安全方便 2 註解annotation inte ce,註解式程式設計 3 列舉enum 增加了enum型別,支援switch 4 變長引數 variable arguments 方法的引數數目可變 5 自動拆裝箱automatic boxing and u...

JDK1 5的可變引數

乙個方法接收的引數個數不固定。可變引數的特點 1 只能出現在引數列表的最後 2 位於變數型別和變數名之間。前後有空格都可以。3 呼叫可變引數的方法時,編譯器為該可變引數隱含建立乙個陣列,在方法體中以陣列的形式訪問可變引數。例如 package com.howlaa.day02 public clas...

JDK1 5的拆裝箱

integer i1 100 integer i2 100 integer i3 200 integer i4 200 integer類內部有乙個快取,其實就是乙個integer,大小為256,它儲存了 128 127之間的所有integer物件。當使用valueof 100 方法時,該方法判斷10...