2026 年 5 月初的 Java 生态相当热闹——从 JDK 27 的 JEP 提案到 GraalVM 发布节奏提速,再到 Spring AI 2.0 第六个里程碑和全新的 Quarkus Agent MCP Server,多条线路同时推进。下面挑几条对日常开发影响最大的变化展开聊聊。
JDK 27:JEP 提案落地,关注点在哪
OpenJDK 本周公布了面向 JDK 27 的 JEP 目标清单。虽然 JDK 27 还在早期阶段,但几个提案方向值得提前留意:
- 结构化并发(Structured Concurrency) 的持续演进——从孵化到正式 API 的路径越来越清晰,对写异步服务的人来说是件大事。
- 值类型(Value Classes) 相关提案的推进,直接影响集合框架和内存布局的未来形态。
如果你还在用 JDK 21/23 做生产部署,现在就可以在测试环境里试用这些孵化 API,提前感受 API 风格的变化,别等到正式发布才手忙脚乱。
GraalVM:发布节奏提速意味着什么
GraalVM 宣布加速发布火车——从过去的节奏缩短到更频繁的版本交付。这对用 GraalVM Native Image 做云原生部署的团队影响最直接:
- Bug 修复更快落地——过去 Native Image 的一些边缘问题可能要等大版本才修,现在周期缩短。
- 新 JDK 特性适配更及时——JDK 25/26 的语言特性在 Native Image 上的支持窗口变短。
- CI/CD 管线需要跟上——更频繁的 GraalVM 版本意味着你的 native-image 构建脚本要定期验证兼容性。
实操建议:在 CI 里固定 GraalVM 版本号,同时设一个定期(比如每月)的"版本升级"流水线任务,自动拉最新版跑一遍 native 构建测试。
# 在 CI 中固定 GraalVM 版本,避免意外升级导致构建失败
export GRAALVM_HOME="$HOME/.graalvm/graalvm-jdk-25_25.0.2"
# 升级验证流水线:拉最新版并跑 native 构建
gu install native-image
mvn -Pnative package -DskipTests
# 构建成功后跑集成测试
./target/myapp --server.port=8081 &
curl -sf http://localhost:8081/actuator/health || exit 1
kill %1
Spring AI 2.0 M6:离正式版越来越近
Spring AI 2.0 已经到了第六个里程碑,API 稳定性明显提升。几个关键变化:
- ChatClient 的流式响应 API 更加完善,
Flux<String>的用法和生产级错误处理基本定型。 - Tool/Function Calling 的注册方式从手动配置转向自动扫描,和 Spring Boot 的 auto-configuration 体系对齐。
- 多模型切换 的抽象层更成熟,同一个
ChatClient可以在 OpenAI、Azure OpenAI、Ollama 之间零代码切换。
下面是一个可以直接跑的 Spring AI 2.0 M6 示例——用 Ollama 本地模型做简单问答:
# application.yml — Spring AI 2.0 M6 + Ollama 本地模型
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: llama3.2
options:
temperature: 0.7
// ChatController.java — 最简问答端点
@RestController
@RequestMapping("/chat")
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping
public String ask(@RequestParam String question) {
return chatClient.prompt()
.user(question)
.call()
.content();
}
// 流式响应端点,适合前端逐字渲染
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> stream(@RequestParam String question) {
return chatClient.prompt()
.user(question)
.stream()
.content();
}
}
运行前确保本地 Ollama 已启动并拉取了模型:
# 启动 Ollama 并拉取模型
ollama serve
ollama pull llama3.2
# 启动 Spring Boot 应用
mvn spring-boot:run
# 测试
curl "http://localhost:8080/chat?question=Java%20值类型%20和%20普通类%20有什么区别"
Quarkus Agent MCP Server:让 AI Agent 有标准接口
本周最引人注目的新项目是 Quarkus Agent MCP Server——基于 Model Context Protocol(MCP)规范,让 Quarkus 应用能直接暴露 Agent 工具给外部 AI 客户端调用。
MCP 的核心思路很简单:AI 模型不直接操作你的系统,而是通过一个标准协议调用你注册的"工具"(tool),每个工具声明自己的输入 schema 和输出格式。Quarkus Agent MCP Server 把这套协议搬进了 Java 生态,用 Quarkus 的扩展机制做工具注册。
一个最小 MCP Tool 示例:
// McpTools.java — 在 Quarkus 中注册一个 MCP 工具
@McpTool(name = "query_order", description = "根据订单 ID 查询订单状态")
public class OrderQueryTool {
@Inject
OrderService orderService;
@ToolOperation
public ToolResult query(@ToolParam(name = "orderId", description = "订单 ID") String orderId) {
Order order = orderService.findById(orderId);
if (order == null) {
return ToolResult.error("订单不存在: " + orderId);
}
return ToolResult.success(Map.of(
"orderId", order.getId(),
"status", order.getStatus().name(),
"total", order.getTotal()
));
}
}
# 添加 Quarkus MCP Agent 扩展
quarkus extension add quarkus-agent-mcp-server
# 开发模式启动
mvn quarkus:dev
# MCP Server 默认暴露 SSE 端点,AI 客户端可连接
# 端点地址:http://localhost:8080/mcp/sse
这个方向的意义在于:你的业务系统不需要自己集成大模型 SDK,只需要按 MCP 规范暴露工具,任何支持 MCP 的客户端(Claude Desktop、IDE 插件、自建 Agent)都能直接调用。职责边界清晰,安全审计也更容易做。
其他版本更新速览
| 项目 | 版本 | 要点 |
|---|---|---|
| Grails | 8.0-M1 | 基于 Spring Boot 3.x,Groovy 5.x 兼容,框架现代化第一步 |
| Groovy | 6.0-alpha1 | 对齐 JDK 25+ 特性,语法层面开始支持值类型前缀 |
| JobRunr | 点版本 | 修复后台任务调度在集群模式下的竞态条件 |
| GlassFish | 维护版本 | Jakarta EE 11 兼容性补丁 |
| Tomcat / TomEE | 维护版本 | 安全修复和 HTTP/2 小改进 |
Grails 8.0 和 Groovy 6.0 都是早期版本,不建议上生产,但如果你维护老项目,现在就该在分支上跑一遍兼容性测试。
采纳建议清单
- GraalVM 用户:立即在 CI 里固定版本号,设立月度升级验证流水线。
- Spring AI 用户:M6 可以开始做功能验证了,但别用于生产——API 还可能微调。重点试 ChatClient 流式接口和 Tool Calling。
- Quarkus 用户:如果你在做 AI Agent 相关项目,Quarkus Agent MCP Server 值得现在就 fork 一份跑 demo,理解 MCP 协议的交互模式。
- Grails/Groovy 老项目:用 8.0-M1 / 6.0-alpha1 做兼容性探测,记录哪些语法或依赖需要改,正式版出来时能快速跟进。
- JDK 关注者:在 JDK 23+ 测试环境里试用结构化并发和值类型孵化 API,写点小实验代码,提前建立手感。