Oracle公司JDK 17正式釋出,JDK 17屬於長期支援(LTS)版本,也就是獲得8年的技術支援,自2021年9月至2029年9月截止。

JDK 17版本更新了很多比較實用的新特性,關於此版本的新特性,詳細介紹和實際開發中的應用將在後續篇幅,這裡就不在深入贅述了,對JDK 17新特性感興趣的朋友可以留意後續文章的更新。

特性介紹

JDK 17更新了包括14個特性,具體如下表所示:

Restore Always-Strict Floating-Point Semantics

恢復始終嚴格模式(Always-Strict)的浮點語義

EnhancedPseudo-Random Number Generators

增強型偽隨機數生成器

New macOS RenderingPipeline

新增macOS渲染管道

macOS/AArch64 Port

支援將JDK移植到macOS或AArch64

Deprecate the AppletAPI for Removal

棄用待移除的Applet API

注:JDK 9中的JEP 289先前已棄用Applet API,但並未將其刪除。

Strongly EncapsulateJDK Internals

強封裝JDK內部API

Pattern Matching forswitch (Preview)

switch模式匹配進入預覽(Preview)階段

Remove RMI Activation

移除RMI(遠端方法呼叫)啟用機制

Sealed Classes

密封類

注:密封類是由JEP 360提出的,並在JDK 15中作為預覽功能提供。它們由JEP 397再次提出並進行了改進,並作為預覽功能在JDK 16中提供。該JEP建議在JDK17中完成密封類,與JDK 16沒有任何變化。

Remove theExperimental AOT and JIT Compiler

移除實驗性AOT和JIT編譯器

Deprecate theSecurity Manager for Removal

棄用待移除的安全管理器(Security Manager)

注:棄用安全管理器,在後續版本中移除。安全管理器可追溯到Java 1.0。多年來,它一直不是保護客戶端Java程式碼的主要手段,也很少用於保護伺服器端程式碼。為了推動Java向前發展,Oracle打算棄用安全管理器,以便與舊Applet API(JEP 398)一起刪除。

Foreign Function& Memory API (Incubator)

外部函式和記憶體API(孵化器)孵化階段

注:Java程式可以通過該API與Java執行時之外的程式碼和資料進行互操作。通過有效呼叫外部函式(即JVM之外的程式碼),以及安全地訪問外部記憶體(即不由JVM管理的記憶體),API使Java程式能夠呼叫本地庫和處理本地資料,而沒有JNI。

Vector API (SecondIncubator)

Vector API(第二孵化器)第二孵化階段

注:引入一個API來表達向量計算,這些計算在執行時可靠地編譯為支援的CPU架構上的最佳向量指令,從而實現優於等效標量計算的效能。

Context-SpecificDeserialization Filters

上下文特定的反序列化過濾器

注:允許應用程式通過JVM範圍的過濾器工廠配置特定於上下文和動態選擇的反序列化過濾器,該工廠被呼叫以為每個單獨的反序列化操作選擇一個過濾器。

Free Java License

根據Oracle官方釋出的最新Free Java License,Oracle JDK 可以免費用於生產環境。Free Java License 大致摘要:

1)Oracle JDK免費提供包括所有季度安全更新,含商業和生產用途。

2)新許可證屬於“Oracle 免費條款和條件”(NFTC)許可證。此Oracle JDK許可證允許所有使用者免費使用,甚至可以用於商業和生產用途。不收取費用的前提下,允許再分發。

3)開發人員和組織目前可輕鬆下載、使用、共享和重新分發Oracle JDK。

4)Oracle將從JDK 17開始提供這些免費版本和更新,並在下一個LTS版本釋出之後繼續提供整整一年。需要注意的是以前的版本不受此更改的影響。

5)Oracle將繼續按照自Java 9以來的相同版本和時間表提供GPL下的Oracle OpenJDK版本。

JDK17下載地址:https://jdk.java.net/17/

JDK17技術文件:https://docs.oracle.com/en/java/javase/17/index.html

Spring支援

Spring官方曾宣佈Spring Framework 6.0和Spring Boot 3.0將基於JDK 17版本,預計2022年,下半年釋出Spring Framework 6.0正式候選(RC)版本。

作為開發人員的你或者說你們公司,目前用的是JDK7還是JDK8呢?歡迎各位下方留言。