等等党有福了, Java21 来了

JAVA架构日记

共 2300字,需浏览 5分钟

 · 2023-09-27

一、前言

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

使用基于 Java 21 的 PIGX 运行
  • 笔者使用的是 Azul Zulu 发行版
Azul Zulu 发行版
  • IDEA 需要使用最新版本 2023.2.2
IDEA 配置 Java 21 环境

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 中进行维护即可全局覆盖版本并统一升级。

维护BOM依赖

关于PIGX 微服务开发平台

等等党有福了~



浏览 1925
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报