Java19新特性

程式設計師大彬發表於2023-04-06

本文已經收錄到Github倉庫,該倉庫包含計算機基礎、Java基礎、多執行緒、JVM、資料庫、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分散式、微服務、設計模式、架構、校招社招分享等核心知識點,歡迎star~

Github地址

如果訪問不了Github,可以訪問gitee地址。

gitee地址

JDK 19 / Java 19 已正式釋出。

新版本總共包含 7 個新的 JEP:

405:Record Patterns (Preview)
422:Linux/RISC-V Port
424:Foreign Function & Memory API (Preview)
425:Virtual Threads (Preview)
426:Vector API (Fourth Incubator)
427:Pattern Matching for switch (Third Preview)
428:Structured Concurrency (Incubator)
  • 405:記錄模式 (Record Patterns) 進入預覽階段

Record Patterns 可對 record 的值進行解構,Record patterns 和 Type patterns 透過巢狀能夠實現強大的、宣告性的、可組合的資料導航和處理形式。

該特性目前處於預覽階段。

  • 422:將 JDK 移植到 Linux/RISC-V 平臺

目前只支援 RISC-V 的 RV64GV 配置,它是一個通用的 64 位 ISA。將來會考慮支援其他的 RISC-V 配置,例如通用的 32 位配置 (RV32G)。

  • 424:外部函式和記憶體 API (Foreign Function & Memory API) 進入預覽階段

Java 程式可以透過該 API 與 Java 執行時之外的程式碼和資料進行互操作。透過高效地呼叫外部函式(即 JVM 之外的程式碼)和安全地訪問外部記憶體(即不受 JVM 管理的記憶體),該 API 使 Java 程式能夠呼叫本機庫並處理本機資料,而不會像 JNI 那樣危險和脆弱。

一句話總結:該特性讓 Java 呼叫普通 native 程式碼更加方便和高效。

  • 425:虛擬執行緒 (Virtual Threads) 進入預覽階段

為 Java 引入虛擬執行緒,虛擬執行緒是 JDK 實現的輕量級執行緒,它在其他多執行緒語言中已經被證實是十分有用的,比如 Go 中的 Goroutine、Erlang 中的程式。另外,最新 Java 面試題整理好了,大家可以在Java面試庫小程式線上刷題。

虛擬執行緒避免了上下文切換的額外耗費,兼顧了多執行緒的優點,簡化了高併發程式的複雜,可以有效減少編寫、維護和觀察高吞吐量併發應用程式的工作量。

  • 426:向量 API (Vector API) 進入第 4 孵化階段

向量計算由對向量的一系列操作組成。向量 API 用來表達向量計算,該計算可以在執行時可靠地編譯為支援的 CPU 架構上的最佳向量指令,從而實現優於等效標量計算的效能。向量 API 的目標是為使用者提供簡潔易用且與平臺無關的表達範圍廣泛的向量計算。

  • 427:switch 模式匹配 (Pattern Matching for switch) 進入第 3 預覽階段

switch 表示式和語句的模式匹配,以及對模式語言的擴充套件來增強 Java 程式語言。將模式匹配擴充套件到 switch 中,允許針對一些模式測試表示式,這樣就可以簡明而安全地表達複雜的面向資料的查詢。

  • 428:結構化併發 (Structured Concurrency) 進入孵化階段

JDK 19 引入了結構化併發,這是一種多執行緒程式設計方法,目的是為了透過結構化併發 API 來簡化多執行緒程式設計,並不是為了取代 java.util.concurrent,目前處於孵化階段。

結構化併發將不同執行緒中執行的多個任務視為單個工作單元,從而簡化錯誤處理、提高可靠性並增強可觀察性。也就是說,結構化併發保留了單執行緒程式碼的可讀性、可維護性和可觀察性。

下載地址:https://jdk.java.net/19/

Release Note:https://jdk.java.net/19/release-notes

最全面的Java面試網站