等等黨有福了, Java21 來了
一、前言
Java 21 于 2023 年 9 月 20 日正式發(fā)布,它是 Java 17 之后的下一個(gè) LTS(長期維護(hù))版本。虛擬線程將成為 Java 21 中的正式功能。在 Spring Boot 3.2 中,可以通過將 spring.threads.virtual.enabled=true 設(shè)置為開啟虛擬線程。預(yù)計(jì) Java 21 將成為繼 Java 8 之后又一個(gè)流行的 Java 版本。
二、Java 21 功能更新
2.1 正式功能
-
虛擬線程(Virtual Threads) -
順序集合(Sequenced Collections) -
記錄模式(Record Patterns) -
switch 的模式匹配(Pattern Matching for switch) -
分代式 ZGC(Generational ZGC) -
廢棄 Windows 32 位版本(Deprecate the Windows 32-bit x86 Port for Removal) -
準(zhǔn)備禁止動(dòng)態(tài)加載代理(Prepare to Disallow the Dynamic Loading of Agents) -
密鑰封裝機(jī)制 API(Key Encapsulation Mechanism API)
切換開發(fā)環(huán)境至 Java 21
-
筆者使用的是 Azul Zulu 發(fā)行版
-
IDEA 需要使用最新版本 2023.2.2
Lombok 不兼容 Java 21
在編譯 PIGX 項(xiàng)目時(shí),會(huì)出現(xiàn)以下錯(cuò)誤提示:
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
at lombok.javac.JavacImportList.getFullyQualifiedNameForSimpleNameNoAliasing(JavacImportList.java:53)
at lombok.core.TypeResolver.typeRefToFullyQualifiedName(TypeResolver.java:60)
at lombok.javac.HandlerLibrary.handleAnnotation(HandlerLibrary.java:247)
at lombok.javac.JavacTransformer$AnnotationVisitor.visitAnnotationOnType(JavacTransformer.java:79)
at lombok.javac.JavacNode.traverse(JavacNode.java:132)
at lombok.javac.JavacAST.traverseChildren(JavacAST.java:222)
需要將 Lombok 更新至最新版本 1.18.30 以兼容,由于 PIGX 采用統(tǒng)一的 bom 依賴管理,只需要在 common-bom 中進(jìn)行維護(hù)即可全局覆蓋版本并統(tǒng)一升級(jí)。

等等黨有福了~
評(píng)論
圖片
表情
