JDK 15 2020/09/15 如期而至!
這個時間牛逼啊,和蘋果發布會同天?

OracleJDK 15 發布地址:
https://www.oracle.com/java/technologies/javase/15all-relnotes.html
OpenJDK 15 發布地址:
https://openjdk.java.net/projects/jdk/15/
OracleJDK 和 OpenJDK 兩者的區別這里不撰述了,不清楚的請點擊這里進行查看,
現在的 JDK 真變成了“版本帝”,無力吐槽啊,版本發到 15,大部分人卻都還在用著 JDK 7/8,甚至 6,不過沒關系,多了解一下,多掌握一點新東西,對你來說沒有壞處,
新特性
JDK 15 新特性一覽表:
| ID | JEP | Feature |
|---|---|---|
| 1 | 339 | Edwards-Curve Digital Signature Algorithm (EdDSA) |
| 2 | 360 | Sealed Classes (Preview) |
| 3 | 371 | Hidden Classes |
| 4 | 372 | Remove the Nashorn JavaScript Engine |
| 5 | 373 | Reimplement the Legacy DatagramSocket API |
| 6 | 374 | Disable and Deprecate Biased Locking |
| 7 | 375 | Pattern Matching for instanceof (Second Preview) |
| 8 | 377 | ZGC: A Scalable Low-Latency Garbage Collector |
| 9 | 378 | Text Blocks |
| 10 | 379 | Shenandoah: A Low-Pause-Time Garbage Collector |
| 11 | 381 | Remove the Solaris and SPARC Ports |
| 12 | 383 | Foreign-Memory Access API (Second Incubator) |
| 13 | 384 | Records (Second Preview) |
| 14 | 385 | Deprecate RMI Activation for Removal |
JDK 15 一次發布了 14 個新特性,下面堆疊長帶大家來解讀下這些新特性!
339:Edwards-Curve Digital Signature Algorithm (EdDSA)
Edwards-Curve 資料簽名演算法(EdDSA),一種根據 RFC 8032 規范所描述的 Edwards-Curve 數字簽名演算法(EdDSA)實作加密簽名,實作了一種 RFC 8032 標準化方案,但它不能代替 ECDSA,
EdDSA 是一種現代的橢圓曲線簽名方案,與 JDK 中現有的簽名方案相比,它有很多優勢,
360:Sealed Classes (Preview)
封閉類(預覽特性),可以是封閉類和或者封閉介面,用來增強 Java 編程語言,防止其他類或介面擴展或實作它們,
這個牛逼啊,有了這個特性,意味著以后不是你想繼承就繼承,想實作就實作了,你得經過允許才行,
來看這個示例:
public abstract sealed class Student
permits ZhangSan, LiSi, ZhaoLiu {
...
}
類 Student 被 sealed 修飾,說明它是一個封閉類,并且只允許指定的 3 個子類繼承,
371:Hidden Classes
隱藏類,這一看也是個很有意思的特性,
隱藏類是為框架(frameworks)所設計的,隱藏類不能直接被其他類的位元組碼使用,只能在運行時生成類并通過反射間接使用它們,
372:Remove the Nashorn JavaScript Engine
移除了 Nashorn JavaScript 腳本引擎、APIs,以及 jjs 工具,這些早在 JDK 11 中就已經被標記為 deprecated 了,JDK 15 被移除就很正常了,
Nashorn 是 JDK 1.8 引入的一個 JavaScript 腳本引擎,用來取代 Rhino 腳本引擎,Nashorn 是
ECMAScript-262 5.1的完整實作,增強了 Java 和 JavaScript 的兼容性,并且大大提升了性能,
為什么要移除?
官方的描述是,隨著 ECMAScript 腳本語言的結構、API 的改編速度越來越快,維護 Nashorn 太有挑戰性了,所以……,
373:Reimplement the Legacy DatagramSocket API
重新實作了老的 DatagramSocket API 介面,更改了 java.net.DatagramSocket 和 java.net.MulticastSocket 為更加簡單、現代化的底層實作,更易于維護和除錯,
新的底層實作將很容易使用虛擬執行緒,目前正在 Loom 專案中進行探索,這也是 JEP 353 的后續更新版本,JEP 353 已經重新實作了 Socket API,
374:Disable and Deprecate Biased Locking
準備禁用和廢除偏向鎖,在 JDK 15 中,默認情況下禁用偏向鎖,并棄用所有相關的命令列選項,
后面再確定是否需要繼續支持偏向鎖,國為維護這種鎖同步優化的成本太高了,
375:Pattern Matching for instanceof (Second Preview)
模式匹配(第二次預覽),第一次預覽是 JDK 14 中提出來的,點擊這里查看堆疊長之前寫的詳細教程,
Java 14 之前:
if (object instanceof Kid) {
Kid kid = (Kid) object;
// ...
} else if (object instanceof Kiddle) {
Kid kid = (Kid) object;
// ...
}
Java 14+:
if (object instanceof Kid kid) {
// ...
} else if (object instanceof Kiddle kiddle) {
// ...
}
Java 15 并沒有對此特性進行調整,繼續預覽特性,只是為了收集更多的用戶反饋,可能還不成熟吧,
377:ZGC: A Scalable Low-Latency Garbage Collector
ZGC:一個可伸縮、低延遲的垃圾回收器,
ZGC 最早是在 JDK 11 中集成進來的,JDK 15 只是將 ZGC 垃圾收集器從預覽特性變更為正式特性而已,沒錯,轉正了,
這個 JEP 不會更改默認的 GC,默認仍然是 G1,
378:Text Blocks
文本塊,是一個多行字串,它可以避免使用大多數轉義符號,自動以可預測的方式格式化字串,并讓開發人員在需要時可以控制格式,
文本塊最早準備在 JDK 12 添加的,但最終撤消了,然后在 JDK 13 中作為預覽特性進行了添加,然后又在 JDK 14 中再次預覽,在 JDK 15 中,文本塊終于轉正,暫不再做進一步的更改,
來看下這個示例你就懂了:
Java 13 之前:
String html = "<html>\n" +
" <body>\n" +
" <p>Hi, Java技術堆疊</p>\n" +
" <p>歡迎關注,分享更多干貨</p>\n" +
" </body>\n" +
"</html>\n";
Java 13+:
String html = """
<html>
<body>
<p>Hi, Java技術堆疊</p>
<p>歡迎關注,分享更多干貨</p>
</body>
</html>
""";
去掉那些無用的換行和拼接,是不是太爽了,,這個詳細教程計劃再出一篇,關注公眾號Java技術堆疊第一時間推送,
379:Shenandoah: A Low-Pause-Time Garbage Collector
Shenandoah:一個低停頓時間的垃圾回收器,
Shenandoah 最早是在 JDK 12 中集成進來的,JDK 15 只是將 Shenandoah 垃圾收集器從預覽特性變更為正式特性而已,沒錯,又是轉正了,
381:Remove the Solaris and SPARC Ports
移除了 Solaris 和 SPARC 埠,
移除了 Solaris/SPARC、Solaris/x64 和 Linux/SPARC 埠的源代碼及構建支持,這些埠在 JDK 14 中就已經被標記為 deprecated 了,JDK 15 被移除也不奇怪,
383:Foreign-Memory Access API (Second Incubator)
外存訪問 API(二次范訓),可以允許 Java 應用程式安全有效地訪問 Java 堆之外的外部記憶體,
這個最早在 JDK 14 中成為范訓特性,JDK 15 繼續二次范訓并對其 API 有了一些更新,
384:Records (Second Preview)
Records 最早在 JDK 14 中成為預覽特性,JDK 15 繼續二次預覽,
Records 在某些場合可以干掉 Lombok 的存在,能自動生成了類構造器、toString()、hashCode()、equals(),以及類似 getter 的變數訪問方法,
使用方式:
public record Student(String name, int id, int age) {}
實際生成:

看完是不是有點 Lombok 的感覺?具體可以點擊這里查看堆疊長之前寫的詳細教程,
385:Deprecate RMI Activation for Removal
廢除 RMI 激活,以便在將來進行洗掉,
需要說明的是,RMI 激活是 RMI 中一個過時的組件,自 Java 8 以來一直是可選的,
總結
本文主要介紹了 JDK/Java 15 的 14 個新特性,后面堆疊長有時間也會繼續出一些 JDK 15 詳細教程,關注公眾號Java技術堆疊第一時間推送哦,如果你想看歷史 Java 8 - 14 新特性教程,也可以在公眾號選單中進行閱讀,
最后,來看下 Oracle Java 支持路線圖:

JDK 15 并不是一個長期支持的版本,只支持 6 個月到 2021 年 3 月,上一個長期支持版本還是 JDK 11,所以千萬不要把非長期支持版本用在生產,
JDK 15 下載地址:
https://www.oracle.com/java/technologies/javase-downloads.html
有興趣的可以下載嘗鮮了!!
寫了大半天,點個在看、轉發支持下哦,分享給你的更多朋友們~
關注Java技術堆疊,持續分享最新、最主流的Java技術~
近期熱文推薦:
1.終于靠開源專案弄到 IntelliJ IDEA 激活碼了,真香!
2.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看,,
3.吊打 Tomcat ,Undertow 性能很炸!!
4.國人開源了一款超好用的 Redis 客戶端,真香!!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64340.html
標籤:Java
