等等党有福了, Java21 来了
一、前言
Java 21 于 2023 年 9 月 20 日正式发布,它是 Java 17 之后的下一个 LTS(长期维护)版本。虚拟线程将成为 Java 21 中的正式功能。在 Spring Boot 3.2 中,可以通过将 spring.threads.virtual.enabled=true
设置为开启虚拟线程。预计 Java 21 将成为继 Java 8 之后又一个流行的 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) -
准备禁止动态加载代理(Prepare to Disallow the Dynamic Loading of Agents) -
密钥封装机制 API(Key Encapsulation Mechanism API)
切换开发环境至 Java 21
-
笔者使用的是 Azul Zulu 发行版
-
IDEA 需要使用最新版本 2023.2.2
Lombok 不兼容 Java 21
在编译 PIGX 项目时,会出现以下错误提示:
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 采用统一的 bom 依赖管理,只需要在 common-bom 中进行维护即可全局覆盖版本并统一升级。
等等党有福了~
评论