【Java代碼之美】 -- Java17新特性初探


1.背景

Oracle與9月中旬正式宣布推出Java17,正如官方所說:

  • JDK17是最新的長期穩定支持的版本作為JDK11之后的下一個長期支持的版本;
  • 也是Spring Framework6與SpringBoot 3在運行時至少需要運行的JDK版本環境;
  • JDK17提供了數以千計的性能、穩定性和安全更新,以及14個JEP(JDK增強建議),用於幫助開發人員提高效率

 下面來簡單地介紹一下其中主要的特性。

 

2.新特性說明

2.1.密封類轉正

密封類(Sealed Classes)是 Java 15 引入的, Java 17 正式轉正。

密封類可以對繼承或者實現它們的類進行限制

比如抽象類 Person 只允許 Employee 和 Manager 繼承。

public abstract sealed class Person
    permits Employee, Manager {

    //...
}

另外,任何擴展密封類的類本身都必須聲明為 sealednon-sealed 或 final

public final class Employee extends Person {
}

public non-sealed class Manager extends Person {
}

2.2.JDK內部元素強封裝

很多程序員以損害安全性和可維護性的方式使用 JDK 的內部元素比如一些非public類、方法和字段。

為了繼續提高 JDK 的安全性和可維護性,默認強封裝 JDK 的所有內部元素,從而限制對它們的訪問,除了關鍵的內部 API 如sun.misc.Unsafe

2.3.macOS/AArch64 平台支持

由於 JDK 在 macOS/AArch64 的廣泛需求,Oracle 宣布將 JDK 移植到 macOS/AArch64 平台,增加了 Apple 去年發布的新 CPU 系列 (M1) 的支持。

2.4.標記刪除Applet API

Applet API 提供了一種將 Java AWT/Swing 控件嵌入到瀏覽器網頁中的方法。不過,目前 Applet 已經被淘汰。大部分人應該和我一樣,壓根就沒有用過 Applet。

Java 9 的時候,Applet API 已經被標記為啟用,Java 17 的時候終於標記為刪除了。

2.5.刪除RMI Activation

RMI 即 Remote Method Invocation ,其為 Java 提供了遠程方法調用的能力,不過,比較雞肋,基本不會用到。RMI Activation 為激活分布式對象提供支持,不過,一般也不會用到。

Java 15 的時候, RMI Activation 已經被棄用,Java 17 的時候終於被刪除了。

 

參考博文:

JavaGuide -- Java17來了!YYDS!

再見,Java8!Java17發布,堪稱史上最快的JDK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM