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 { //... }
另外,任何擴展密封類的類本身都必須聲明為 sealed、non-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 的時候終於被刪除了。
參考博文:
