Java 17 新特性,快到起飛?驚呆了!
大家好,我是鋒哥,今天來談談Java 17新特性,以及推薦一本Java神書 !
特性介紹
JDK 17更新了包括14個特性,具體如下表所示:
-
306:恢復始終嚴格模式(Always-Strict)的浮點語義
Restore Always-StrictFloating-Point Semantics0
恢復始終執(zhí)行嚴格模式的浮點定義,修復25年前英特爾的浮點指令存在的一些問題;
-
356:增強型偽隨機數發(fā)生器
EnhancedPseudo-Random Number Generators
增加了偽隨機數相關的類和接口來讓開發(fā)者使用stream流進行操作,
RandomGenerator generator = RandomGeneratorFactory.all()
.filter(RandomGeneratorFactory::isJumpable)
.filter(factory -> factory.stateBits() > 128)
.findAny()
.map(RandomGeneratorFactory::create)
// if you need a `JumpableGenerator`:
// .map(JumpableGenerator.class::cast)
.orElseThrow(); -
RandomGenerator -
RandomGeneratorFactory -
382:新增macOS渲染管道
New macOS RenderingPipeline
-
391:支持將JDK移植到macOS或AArch64
macOS/AArch64 Port
-
398:棄用待移除的Applet API
Deprecate the AppletAPI for Removal
棄用、刪除標準 Java API 的這些類和接口:
棄用或刪除任何引用上述類和接口的 API 元素,包括以下中的方法和字段:
-
java.beans.Beans -
javax.swing.RepaintManager -
javax.naming.Context -
java.applet.Applet -
java.applet.AppletStub -
java.applet.AppletContext -
java.applet.AudioClip -
javax.swing.JApplet -
java.beans.AppletInitializer -
403:強封裝JDK內部API
Strongly EncapsulateJDK Internals
-
406:switch模式匹配進入預覽(Preview)階段
Pattern Matching forswitch (Preview)
引入switch模式匹配的preview版本
// Old code
if (o instanceof String) {
String s = (String)o;
... use s ...
}
// New code
if (o instanceof String s) {
... use s ...
}switch的寫法:
static String formatterPatternSwitch(Object o) {
return switch (o) {
case Integer i -> String.format("int %d", i);
case Long l -> String.format("long %d", l);
case Double d -> String.format("double %f", d);
case String s -> String.format("String %s", s);
default -> o.toString();
};
} -
407:移除RMI(遠程方法調用)激活機制
Remove RMI Activation
-
409:密封類
Sealed Classes
密封類是由JEP 360提出的,并在JDK 15中作為預覽功能提供。它們由JEP 397再次提出并進行了改進,并作為預覽功能在JDK 16中提供。該JEP建議在JDK17中完成密封類,與JDK 16沒有任何變化。
-
410:移除實驗性AOT和JIT編譯器
Remove theExperimental AOT and JIT Compiler
-
411:棄用待移除的安全管理器(Security Manager)
Deprecate theSecurity Manager for Removal
棄用安全管理器,在后續(xù)版本中移除。安全管理器可追溯到Java 1.0。多年來,它一直不是保護客戶端Java代碼的主要手段,也很少用于保護服務器端代碼。為了推動Java向前發(fā)展,Oracle打算棄用安全管理器,以便與舊Applet API(JEP 398)一起刪除。
-
412:外部函數和內存API(孵化器)孵化階段
Foreign Function& Memory API (Incubator)
Java程序可以通過該API與Java運行時之外的代碼和數據進行互操作。通過有效調用外部函數(即JVM之外的代碼),以及安全地訪問外部內存(即不由JVM管理的內存),API使Java程序能夠調用本地庫和處理本地數據,而沒有JNI。[關于JDK17新特性開發(fā)應用,關注公眾號Java精選,后續(xù)文章更新]
-
414:Vector API(第二孵化器)第二孵化階段
Vector API (SecondIncubator)
引入一個API來表達向量計算,這些計算在運行時可靠地編譯為支持的CPU架構上的最佳向量指令,從而實現優(yōu)于等效標量計算的性能。
-
415:上下文特定的反序列化過濾器
Context-SpecificDeserialization Filters
允許應用程序通過JVM范圍的過濾器工廠配置特定于上下文和動態(tài)選擇的反序列化過濾器,該工廠被調用以為每個單獨的反序列化操作選擇一個過濾器。
Spring Boot 3.0 最低只支持JDK 17,已經不再向下兼容,這就意味著未來很多的開發(fā)者必定逐步從JDK8 轉到JDK17。
如何快速掌握全部Java17新特性?
Java 誕生 27 年來,這本享譽全球的 Java 經典著作《Core Java》一路伴隨著 Java 的成長,得到了百萬 Java 開發(fā)者的青睞,幾乎出現在每個“學Java要看什么書”類似的書單里,影響了幾代技術人。
27年間,每當 Java 有新的 LTR 版本發(fā)布,這本書都會隨之更新,這次也不例外?,F在,針對 Java 17 新特性的《Java核心技術》第 12 版 中文版(卷1)終于上市了!
《Java核心技術》第 12 版涵蓋了 Java 17 的最新特性,相應調整了部分內容結構,同時延續(xù)之前版本的優(yōu)良傳統(tǒng),利用清晰明了的示例加以解釋,并提供了全部示例代碼,以便讀者學習和靈活應用。它將續(xù)寫從前的輝煌,使開發(fā)者能及時跟上 Java 前進的步伐。
我們尋找了50位曾經看著《Java核心技術》這本書成長起來的KOL推薦本書!大家的寄語全部收錄在第12版新書中!
這本書究竟是怎樣的一本書,得到眾多開發(fā)者的一致推薦呢?
●《Java核心技術》并非市面那些零基礎速成的書,很好地避免了開發(fā)基礎書容易犯的“大而泛”的問題,盡管內容繁多,但對知識點的介紹并非泛泛而過。通過周密組織,從Java繁雜的內容中整理出一條清晰的主線,構成一個完整的知識體系。
● 整本書不僅讓你深入了解設計和實現Java應用涉及的所有基礎知識和Java特性,還會幫助你掌握開發(fā)Java程序所需的全部基本技能。
● 作者凱.霍斯特曼是Java技術堅定的倡導者,至今仍常年在國際上的各類計算機峰會上進行技術分享。在位于硅谷中心的圣何塞州立大學教學30余年,為硅谷的頂尖科技公司培養(yǎng)了大量計算機專業(yè)人才。非常熟知大廠要什么!所以他的書也是非常有針對性。
● 為幫助大家更輕松地學習Java,作者還親自錄制了配套視頻講解課程,視頻配有中文配音+中文字幕,與紙書涵蓋內容基本一致,適配Java SE8以后的版本。紙書+視頻搭配學習,學習Java更輕松。(B站搜索“Java核心技術站”直達)。
......
相信在學習Java的道路上有了《Java核心技術》這本書的輔助,你一定可以做到事半功倍。
