本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
Spring Boot 不香了,它的老对手 Quarkus 近日发布了 3.37 版本,启动快 50 倍、内存省 70%,这让 Serverless 终于敢用 Java 大展拳脚了。
这么香的 Quarkus,在 2026 年 6 月 24 日正式发布了 3.37 版本,迎来了 Java 云原生的新里程碑,AI 时代的性能利器。
作为红帽(Red Hat)主导的云原生 Java 框架,它备受争议。Quarkus 这次更新带来了多项重磅特性,基于 Extension 的模块化(JLink 打包)、Hibernate ORM 7.4 全面升级、Jackson 反射-free 序列化器默认启用,以及对AI 开发的原生支持。截至目前,Quarkus 社区贡献者已达 1203 人,生态日趋成熟。
Quarkus 3.37 核心新特性
新特性不多,好多特性 Spring Boot 也早已支持。
基于 Extension 的模块化
Quarkus 3.37 引入了实验性的 quarkus-jlink 扩展,标志着 Quarkus 正式向 Java Platform Module System (JPMS)迈进。这一特性允许开发者构建仅包含所需 JDK 模块的自定义运行时镜像,显著减小容器体积。
JLink 打包实验性登场,和 Spring Boot 的模块化一样成为未来架构的不二选择。
它具备的核心能力如下。
- 编译时构建完整的模块依赖图,替代传统扁平类路径
- 生成自包含的 JLink 镜像,无需外部 JDK
- 容器镜像可采用
ubi-micro或distroless等极简基础镜像 - 支持容器层共享:多个 Quarkus 应用可复用同一套 JDK + Quarkus Core 层
在技术细节上,它有以下特点。
- 依赖
quarkus-modularity扩展计算模块图 - 需要 Java 25+(早期 JDK 版本的 JLink 工具存在兼容性问题)
- 启动模块(Boot Modules)与动态模块(Dynamic Modules)分层加载
- 与 Project Leyden AOT 预编译天然契合
对应的尝鲜命令如下所示。
quarkus extension add quarkus-jlink
quarkus build
# 输出位于 target/jlink-output/image/
这一特性目前标记为 Experimental,API 可能会有调整,但方向明确,Quarkus 4.x 的长期目标是将模块化打包作为默认方案。
文章配图参见 https://mp.weixin.qq.com/s/4oKwdvzd_kEmUpaQvNfaQA。
Hibernate ORM 7.4 全面升级
Quarkus 3.37 将 Hibernate 技术栈全面升级,这属于常规依赖升级。
| 组件 | 旧版本 | 新版本 |
|---|---|---|
| Hibernate ORM | 7.3 | 7.4 |
| Hibernate Reactive | 3.3 | 3.4 |
| Hibernate Search | 8.3 | 8.4 |
需要注意的是,Hibernate ORM 7.4 关键行为变更。
- SQL 级分页限制:分页查询现在在 SQL 层面强制执行限制,行为更严格
- 时间戳列 NOT NULL 约束:
@CreationTimestamp和@UpdateTimestamp自动添加NOT NULL - PostgreSQL 最低版本提升至 14:旧版本 PostgreSQL 需升级
- Jakarta Persistence 3.2 / Jakarta Data 1.0 / Jakarta EE 11 兼容
另外,还有一个实验性的 Quarkus Data Hibernate。为此 3.37 还引入了 quarkus-data-hibernate 扩展,提供新一代数据访问层。
- 编译时生成 Repository 实现(基于接口)
@Find和@HQL查询在编译期验证实体模型- 支持 Managed(脏检查)和 Stateless(显式写入)两种模式
- 与 Jakarta Data 注解对齐
- REST 集成:分页和排序参数自动从 HTTP Query 参数映射
同样值得注意的是,quarkus-data-hibernate 在 3.37 中仍为实验性,API 可能变动。现有 Panache 代码无需恐慌迁移,经典 Panache 将继续维护。
Jackson 反射-free 序列化器默认启用
这是 3.37 中最值得关注的性能优化之一。
要知道,传统的 Jackson 序列化依赖运行时反射,带来两个成本。
- 每次请求都进行字段内省(Field Introspection)
- GraalVM Native Image 需要额外的反射配置
而 Quarkus 的改进方案是,利用 Jandex 索引和 Gizmo 字节码生成,在编译时为每个 DTO 生成 StdSerializer 实现,运行时直接调用,完全跳过反射。
这样做带来的性能收益是:
- 合成基准测试显示吞吐量提升约 12%
- Native Image 体积和启动时间进一步优化
- 减少 GraalVM 的
@RegisterForReflection配置负担
同时还有兼容性保障,Quarkus 的智能回退机制确保:如果 DTO 使用了生成器不支持的 Jackson 注解(如复杂 @JsonSubTypes),自动回退到标准反射模式,不会破坏功能。
虽然默认启用,但官方还是建议通过 JSON 契约测试验证所有响应类型。
// 如需显式控制(通常不需要)
quarkus.rest.jackson.optimization.enable-reflection-free-serializers=true
REST Client 流式响应元数据提取
针对 Server-Sent Events (SSE)、NDJSON 等流式场景,3.37 引入了 RestMultiResponse。
@GET
@Path("/stream")
RestMultiResponse<MyEvent> streamEvents();
开发者们现在可以从流式响应中提取 HTTP 状态码和 Header,而不仅仅是消息体。
其他重要更新
这次版本发布,还有以下几项更新。
- Micrometer 1.16.6:可观测性增强
- Jackson BOM 2.21.3/2.21.4:序列化器兼容性改进
- Agroal 3.1.2/3.2:连接池稳定性
- Vert.x 4.5.28 / Netty 4.1.135:网络层更新
- Spring
@Transactional兼容性扩展:降低 Spring 迁移成本
Bug 修复与稳定性
除了新特性,3.37 还带来了以下关键修复。
| Issue | 描述 |
|---|---|
| #54084 | 修复 gRPC 虚拟线程并发严重 Bug(INTERNAL half-close 错误) |
| #54089 | Spring 兼容性库支持 @Transactional 注解 |
| #54053 | 修复 DevUI 在 OIDC RP 自引用场景下的阻塞问题 |
| #54054 | 新增基于 DN 的受信任代理检查(IP 检查不可用时) |
Quarkus 如何拥抱 AI
2026 年,Java AI 开发已进入生产就绪阶段。Quarkus 通过 Quarkus LangChain4j 扩展,为 Java 开发者提供了与 Python 生态媲美的 AI 开发体验。
Quarkus LangChain4j
声明式 AI 服务简单用法如下所示。
@RegisterAiService
public interface CustomerSupportBot {
@SystemMessage("You are a helpful car rental assistant.")
@UserMessage("Help the customer with: {{question}}")
String chat(@MemoryId String sessionId, @V("question") String question);
}
对应的核心特性如下。
- 声明式编程:通过注解定义 AI 服务,CDI 自动注入
- 20+ LLM 提供商:OpenAI、Anthropic、Ollama、Azure、Google Gemini 等
- 30+ 向量存储:pgvector、Weaviate、Redis、Elasticsearch、Qdrant 等
- 聊天记忆管理:自动管理会话上下文,支持 Token 窗口控制
- 工具调用(Tool Calling):AI Agent 可动态调用 Java 方法
RAG(检索增强生成)
RAG(检索增强生成)也支持。
@Inject
EmbeddingStore<TextSegment> embeddingStore;
@Inject
EmbeddingModel embeddingModel;
public String answerWithContext(String question) {
Embedding questionEmbedding = embeddingModel.embed(question).content();
List<EmbeddingMatch<TextSegment>> relevant =
embeddingStore.findRelevant(questionEmbedding, 5);
// 将检索到的上下文注入 Prompt
}
持久化有 Hibernate EmbeddingStore(LangChain4j 1.12.1+)。
- 直接在 PostgreSQL/MySQL 中存储向量嵌入
- 复用现有 Hibernate Session 和事务管理
- 无需引入独立的向量数据库
当然,MCP(Model Context Protocol)与 Agent 生态也算丰富,这里就不细表了。
总结
简单来说,Quarkus 3.37 是云原生 Java 发展的重要里程碑。
- 模块化(JLink)为 Java 应用瘦身开辟了新路径
- Hibernate 7.4 带来了更现代化的数据访问层
- 反射-free Jackson 让性能优化成为默认体验
- AI 原生支持让 Java 在 LLM 时代保持竞争力
对于 Java 开发者而言,Quarkus 已经证明,Java 不仅能跑 AI,还能跑得更快、更省、更云原生。但 Spring 始终是它迈不过去的“一道坎”。

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » SpringBoot 不香了,Quarkus 3.37 发布,启动快 50 倍、内存省 70%