2020 年是 Java 誕生的第 25 個(gè)年頭。在過去的這些年中,Java 在過去增強(qiáng)功能的推動(dòng)下為用戶提供了超過二十年的創(chuàng)新,例如 Java 5 中的泛型,Java 8 中的 Lambda 和 Java 9 中的模塊,這些迭代提高了 Java 平臺(tái)的性能,穩(wěn)定性和安全性。
Java 雖然 25 歲了,但是依然持續(xù)著創(chuàng)新之道。九月 15 日 Oracle 宣布 JDK15 正式發(fā)布。這是 Java 迭代周期縮短為六個(gè)月以后的第六個(gè)版本。隨著迭代速度的加快,讓 Java 的設(shè)計(jì)開發(fā)測(cè)試人員能夠更加輕松的面對(duì)迭代中的變化。
在六個(gè)月的節(jié)奏下,交付可用于生產(chǎn)的 JDK 新版本的速度已大大提高。而不是每隔幾年在大型主要版本中發(fā)布成千上萬的修復(fù)程序和大約一百個(gè) JDK 增強(qiáng)建議(JEP)。
Java JEP數(shù)量隨著迭代的加速更加容易應(yīng)對(duì)
JDK Enhancement Proposals : 簡(jiǎn)稱 JEP,JDK 增強(qiáng)建議,就是 JDK 的特性新增和改進(jìn)提案。
中國(guó)企業(yè)做出杰出貢獻(xiàn)
另外 OpenJDK 社區(qū)也對(duì) JDK15 的誕生做出了重要貢獻(xiàn),里面除了我們耳熟能詳?shù)?a target="_blank">科技巨頭還有一些小組織機(jī)構(gòu)和獨(dú)立開發(fā)者。
參與JDK15 ISSUES修復(fù)的組織
Oracle 依舊是 JDK 開發(fā)的主力軍,完成了 79.68%的工作量,其次是開源巨頭紅帽。國(guó)內(nèi)企業(yè)貢獻(xiàn)最多的居然是騰訊公司,被 Oracle 點(diǎn)名感謝。阿里巴巴和華為也做出了不可磨滅的貢獻(xiàn)。Java 有中國(guó)科技力量的貢獻(xiàn)能大大提升中國(guó) IT 的硬實(shí)力。
Java 15
Java 15 為用戶提供了十四項(xiàng)主要的增強(qiáng)/更改,包括一個(gè)孵化器模塊,三個(gè)預(yù)覽功能,兩個(gè)不推薦使用的功能以及兩個(gè)刪除功能。
EdDSA 數(shù)字簽名算法
新加入 Edwards-Curve 數(shù)字簽名算法(EdDSA)實(shí)現(xiàn)加密簽名。在許多其它加密庫(kù)(如 OpenSSL 和 BoringSSL)中得到支持。與 JDK 中的現(xiàn)有簽名方案相比,EdDSA 具有更高的安全性和性能。這是一個(gè)新的功能。
隱藏類
此功能可幫助需要在運(yùn)行時(shí)生成類的框架。框架生成類需要?jiǎng)討B(tài)擴(kuò)展其行為,但是又希望限制對(duì)這些類的訪問。隱藏類很有用,因?yàn)樗鼈冎荒芡ㄟ^反射訪問,而不能從普通字節(jié)碼訪問。此外,隱藏類可以獨(dú)立于其他類加載,這可以減少框架的內(nèi)存占用。這是一個(gè)新的功能。
重新實(shí)現(xiàn) DatagramSocket API
重新實(shí)現(xiàn)舊版 DatagramSocket API,更簡(jiǎn)單、更現(xiàn)代的實(shí)現(xiàn)來代替java.net.DatagramSocket和java.net.MulticastSocketAPI 的基礎(chǔ)實(shí)現(xiàn),提高了 JDK 的可維護(hù)性和穩(wěn)定性。
ZGC 功能轉(zhuǎn)正
ZGC 已由JEP 333集成到JDK 11 中,其目標(biāo)是通過減少 GC 停頓時(shí)間來提高性能。借助 JEP 377,ZGC 從預(yù)覽功能轉(zhuǎn)變?yōu)樯a(chǎn)功能。
文本塊功能轉(zhuǎn)正
文本塊由JEP 355在 2019 年提出。文本塊是一種多行字符串文字,它避免了大多數(shù)轉(zhuǎn)義序列的需要,以一種可預(yù)測(cè)的方式自動(dòng)設(shè)置字符串的格式,并在需要時(shí)使開發(fā)人員可以控制格式。借助 JEP 378,文本塊已成為 Java 語言的永久功能。
Shenandoah 垃圾回收算法轉(zhuǎn)正
Shenandoah 垃圾回收從實(shí)驗(yàn)特性變?yōu)?a target="_blank">產(chǎn)品特性。這是一個(gè)從 JDK 12 引入的回收算法,該算法通過與正在運(yùn)行的 Java 線程同時(shí)進(jìn)行疏散工作來減少 GC 暫停時(shí)間。Shenandoah 的暫停時(shí)間與堆大小無關(guān),無論堆棧是 200 MB 還是 200 GB,都具有相同的一致暫停時(shí)間。
密封類(預(yù)覽)
用于限制超類的使用,密封的類和接口限制其它可能繼承或?qū)崿F(xiàn)它們的其它類或接口。這是新的預(yù)覽特性。
instanceof 自動(dòng)匹配模式(預(yù)覽)
在此之前 Java 中:
// 先判斷類型if (obj instanceof String) { // 然后轉(zhuǎn)換 String s = (String) obj; // 然后才能使用}
自動(dòng)匹配模式中:
if (obj instanceof String s) { // 如果類型匹配 直接使用} else { // 如果類型不匹配則不能直接使用}
這是第二次預(yù)覽該功能,我們已經(jīng)在 Java 14 中首次預(yù)覽過該特性。
Records Class(預(yù)覽)
這個(gè)也是第二次預(yù)覽,我對(duì)這個(gè)功能做過詳細(xì)的介紹,你可以在 Java 14 新特性之 JEP 359 Records 一文中詳細(xì)了解它。
外部存儲(chǔ)器訪問 API(預(yù)覽)
目的是引入一個(gè) API,以允許 Java 程序安全有效地訪問 Java 堆之外的外部?jī)?nèi)存。這同樣是 Java 14 的一個(gè)預(yù)覽特性。
其它
其它還有一些棄用和不建議使用的功能,比如移除了 Nashorn JavaScript 引擎,同時(shí)也移除了刪除 Solaris 和 SPARC 端口。并標(biāo)記了一些棄用功能。
責(zé)任編輯:pj
-
JAVA
+關(guān)注
關(guān)注
19文章
2970瀏覽量
104810 -
騰訊
+關(guān)注
關(guān)注
7文章
1656瀏覽量
49468 -
JDK
+關(guān)注
關(guān)注
0文章
81瀏覽量
16600
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論