2026 年 5 月的 Java 生态迎来一波密集发布——Micronaut 5.0 跃升正式版、WildFly 40 GA 落地、Apache Fory 1.0 出炉,Spring AI 2.0 则持续推进里程碑。这些版本背后各有值得关注的工程决策,下面逐项拆解。
Micronaut 5.0:大版本升级的代价与收益
Micronaut 5.0 从里程碑走到 GA,意味着 API 变动已冻结,生产环境可以跟进。大版本号跳升通常伴随不兼容变更,迁移前需要确认几件事:
- 依赖基线升级——Micronaut 每个大版本都会抬升 JDK 最低要求或核心依赖版本。5.0 大概率要求 JDK 17+,并可能更新 Netty、Jackson 等底层库版本。
- 编译时 AOT 变化——Micronaut 的核心竞争力是编译时注入和 AOT,5.0 如果调整了注解处理器行为,之前靠反射绕过的代码可能编译报错。
- 模块拆分——大版本常做模块重组,检查
micronaut-*依赖坐标是否改名或移包。
快速验证 5.0 是否能跑起来,最直接的方式是用 Micronaut Launch 生成骨架:
# 用 CLI 生成一个最小 Micronaut 5.0 项目
mn create-app my-micronaut5-app --features=http-client,annotation-api
cd my-micronaut5-app
./mvnw mn:run
如果已有 4.x 项目,迁移第一步是改 pom.xml 或 build.gradle 里的 BOM 版本号,然后跑一遍编译,看哪些 import 报红。Micronaut 官方通常会发布 migration guide,建议逐条对照而非批量替换。
Spring AI 2.0 M7:离正式版还有多远?
第七个里程碑意味着核心 API 在反复打磨。Spring AI 的定位是给 Spring 生态提供统一的 AI/LLM 集成层——从模型调用、向量存储到 Prompt 模板,都走 Spring 的抽象风格。
M7 阶段的代码可以用于验证架构思路,但 API 随后仍可能变动,不建议直接上生产。如果想提前试水,可以这样引入:
<!-- pom.xml 中引入 Spring AI 2.0 M7 BOM -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>2.0.0-M7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 以 OpenAI 为例,其他模型供应商有对应模块 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
</dependencies>
# application.yml 最小配置
spring:
ai:
openai:
api-key: ${OPENAI_API_KEY}
base-url: https://api.openai.com
// 一个最简的 ChatClient 调用示例
@RestController
public class AiController {
private final ChatClient chatClient;
public AiController(ChatClient chatClient) {
this.chatClient = chatClient;
}
@GetMapping("/ask")
public String ask(@RequestParam String question) {
return chatClient.prompt()
.user(question)
.call()
.content();
}
}
启动前设置环境变量 OPENAI_API_KEY,然后访问 /ask?question=你好 即可验证链路。M7 的价值在于确认 Spring AI 的抽象是否适配你的业务场景——比如是否需要流式响应、RAG 管道、或多模型切换。这些能力 Spring AI 都在构建,但具体 API 形态可能到 GA 才稳定。
WildFly 40 与 Open Liberty:应用服务器仍在迭代
WildFly 40 GA 和 Open Liberty 2026 年 5 月版同步发布,说明传统应用服务器市场仍有持续需求。WildFly 40 的关注点通常在:
- Jakarta EE 对齐——跟进最新 Jakarta EE 11 规范的实现进度。
- MicroProfile 支持——对配置、健康检查、指标等 MicroProfile API 的版本更新。
- 运行时优化——子系统启动顺序、内存占用的渐进改善。
Open Liberty 的月度发布节奏更频繁,每次更新都附带具体的 feature 增补和 fix 列表。如果你的团队在 Jakarta EE 生态里,这两个项目值得定期跟踪 release notes,尤其是安全补丁和配置兼容性变更。
Apache Fory 1.0:新序列化框架入场
Apache Fory 从孵化走到 1.0 GA,意味着它认为自己已经可以承担生产负载。Fory 的定位是高性能、跨语言序列化——与 Protobuf、Avro 等成熟方案同赛道。
1.0 版本的关注点:
- 跨语言 IDL 是否稳定——跨语言序列化的核心是 schema 定义和兼容性规则,1.0 应该已经锁定。
- 性能基准——官方大概率提供了与 Protobuf/FlatBuffers 的对比数据,但建议用自己的数据模型跑一遍。
- Java 集成难度——看是否提供了与主流框架(Spring、Flink 等)的适配模块。
// Apache Fory 1.0 最简序列化/反序列化示例(假设已引入 fury-core 依赖)
import org.apache.fory.Fory;
import org.apache.fory.config.Language;
public class ForyDemo {
public static void main(String[] args) {
Fory fory = Fory.builder()
.withLanguage(Language.JAVA)
.requireClassRegistration(true)
.build();
// 注册要序列化的类(安全要求)
fory.register(User.class);
User user = new User("张三", 28);
byte[] bytes = fory.serialize(user);
User restored = (User) fory.deserialize(bytes);
System.out.println(restored.name + " - " + restored.age);
}
static class User {
String name;
int age;
User(String name, int age) {
this.name = name;
this.age = age;
}
}
}
requireClassRegistration(true) 是 Fory 的安全默认值——只允许序列化已注册的类,防止反序列化攻击。如果你的场景需要序列化任意类型,可以关掉,但务必评估风险。
其他版本更新
- Maven Embedded GlassFish Plugin 8.0——用于集成测试中嵌入式启动 GlassFish,8.0 对齐了最新 GlassFish 运行时。如果你的项目还在用 GlassFish 做测试容器,升级后注意
pom里的 plugin 配置是否需要调整。 - Gatherers4j——Java Stream Gatherers 的实用扩展库,point release 通常是 bug 修复和小功能增补。
- Apache Kafka point release——小版本更新,重点看安全修复和客户端兼容性说明,尤其是如果你在用 KRaft 模式。
升级决策清单
面对这一波发布,建议按优先级排动作:
- 安全补丁优先——Kafka、WildFly 等如果涉及安全修复,立刻评估是否受影响。
- 大版本观望——Micronaut 5.0 和 Apache Fory 1.0 是大版本,先在非核心项目试跑,确认依赖兼容后再推广。
- 里程碑尝鲜——Spring AI 2.0 M7 适合做技术预研,验证 AI 集成架构是否走 Spring 抽象路线,但暂不绑定生产 API。
- 小版本顺手升——Gatherers4j、Kafka point release 这类更新风险低,随常规依赖升级一起推进即可。
每个版本的具体 release notes 是最终依据——本文基于摘要信息梳理方向,细节请回源确认。