比SpringBoot快5倍的Java框架!
前言
最近缺项目经历想快速提升项目实战能力(包含多个AI项目),或者最近找工作,或者想学习AI的小伙伴,可以看看下面👇🏻的这个链接(或许真的能够帮到你)。
云原生时代的Java性能革命者,你还在等什么?
最近有球友反馈说——他们正在把生产环境里跑了三年的Spring Boot微服务,一批一批地往Quarkus迁移。
我问他们为什么要迁,技术负责人跟他说了三个数字:启动时间从8秒变成0.3秒,内存占用从500MB降到150MB,Kubernetes集群的Pod密度提升了3倍。
说实话,这不是我第一次看到这样的案例了。
2026年的Java技术圈,Quarkus已经不是一个“新玩具”,而是一个经过大规模生产验证的云原生Java框架。
今天这篇文章就专门跟大家一起聊聊Quarkus,希望对你会有所帮助。
一、先看一组让人震惊的数据
在正式介绍Quarkus之前,我们先看一组官方发布的基准测试数据。
在2026年3月发布的最新基准测试中,Quarkus和Spring Boot的性能差距是这样的:
| 指标 | Quarkus | Spring Boot | 提升 |
|---|---|---|---|
| 吞吐量(TPS) | 19,255 | 7,238 | ↑ 2.7倍 |
| 启动时间 | 2.9秒 | 6.6秒 | ↑ 2.3倍 |
| 内存占用 | 269MB | 583MB | ↓ 54% |
这不是实验室的“特调数据”。这个基准测试是完全透明、可复现的,代码已开源在GitHub上。
更惊人的是冷启动场景下的差距。
在Kubernetes环境中,Spring Boot应用需要10秒才能启动,而Quarkus只需要0.5秒。
在Serverless场景(如AWS Lambda)中,Quarkus原生镜像的冷启动时间稳定在200ms以内,而Spring Boot传统JVM模式需要3-5秒。
如果你用数字来算一笔账:Quarkus的吞吐量是Spring Boot的2.7倍,启动速度是2.3倍,内存占用只有一半。
单个指标可能看不出什么,但三个维度同时碾压,这就是架构层面的代际优势了。
但数据归数据,为什么会有这么大的差距?
这才是问题的关键。
二、运行时 vs 构建时
Spring Boot和Quarkus的根本差异,不在代码写法上,而在设计哲学上。
2.1 Spring Boot:运行时反射 + JIT编译
Spring Boot的核心机制大家都很熟悉:运行时反射 + 动态代理 + JIT编译。

应用启动的时候,Spring容器通过反射扫描所有类,解析注解,创建Bean,注入依赖。
这个过程在运行时完成,所以启动慢、内存大。
代码跑起来之后,JVM的JIT编译器(C2)会监测热点代码,在后台线程里把字节码编译成机器码。
这个编译过程是懒的——你不跑热点,它就不编译。
所以Spring Boot需要一段“预热时间”才能达到峰值性能。
在基准测试中,Spring Boot在预热阶段只能跑到约3,300 req/s,在30秒冷却后C2编译器才“追上”了,吞吐量跳到约7,800 req/s。
2.2 Quarkus:构建时优化 + AOT编译
Quarkus走的是另一条路:构建时优化 + AOT(提前编译)。
Quarkus的设计哲学是“容器优先”。 
它在构建阶段就完成了大部分工作——解析依赖、处理注解、生成代码、优化配置。
应用启动时,这些工作已经做完了,只需要“加载”而不是“计算”。
在预热阶段,Quarkus只需要60秒就能达到约14,700 req/s的峰值吞吐量,而Spring Boot在整个预热期间都停留在3,300 req/s左右。
一句话说清两者的区别:Spring Boot把工作放在运行时做,所以启动慢、内存大,但开发体验好。Quarkus把工作放在构建时做,所以启动快、内存小,但构建时间稍长。
三、Quarkus到底“快”在哪里?
3.1 启动速度:从秒级到毫秒级
Quarkus在JVM模式下的启动时间约为Spring Boot的1/2到1/3。
而在原生镜像(Native Image)模式下,Quarkus可以把Java应用编译成独立的可执行文件,启动时间被压缩到毫秒级。
在Kubernetes环境中,这个差距尤为明显:Spring Boot应用需要10秒才能启动,而Quarkus只需要0.5秒。
在Serverless场景中,Quarkus原生镜像的冷启动时间稳定在200ms以内。
这意味着什么?
你的Pod可以在几秒内完成弹性伸缩,而不是等上半分钟。
3.2 内存占用:从GB级到MB级
Spring Boot应用在Kubernetes环境中的内存占用通常在700-1000MB之间。
而Quarkus在JVM模式下只需要200-400MB,在原生模式下更是低至100-200MB。
在原生镜像模式下,Quarkus的堆内存仅需3MB,总RSS内存约70MB,而Spring Boot原生模式约149MB。
这也意味着:同样的服务器资源,你能部署的微服务数量直接翻倍。
3.3 预热速度:启动即巅峰
这是Quarkus最容易被忽视的优势。
Spring Boot需要JIT编译器“追上来”才能达到峰值性能。
而Quarkus在构建时已经把代码优化好了,启动就直接是峰值性能。
在基准测试中,Quarkus的预热曲线是“陡峭上升→早期平台期”,而Spring Boot的曲线是“平缓上升→冷却→跳跃式恢复”。
对于需要频繁弹性伸缩的云原生应用来说,这个差异是决定性的。
四、底层原理:GraalVM原生镜像
Quarkus之所以能做到这些,核心武器是GraalVM原生镜像。
4.1 什么是GraalVM原生镜像?
GraalVM是一个高性能的通用虚拟机,其最引人注目的特性就是Native Image。
它可以将JVM字节码提前编译(AOT) 成一个独立的、包含所有依赖的本地可执行文件。
这个可执行文件不依赖JVM,直接运行在操作系统上。
最近缺项目经历想快速提升项目实战能力(包含多个AI项目),或者最近找工作,或者想学习AI的小伙伴,可以看看下面👇🏻的这个链接(或许真的能够帮到你)。
4.2 为什么原生镜像这么快?
传统JVM模式:启动JVM → 加载类 → 解释执行字节码 → JIT编译热点 → 机器码。每一步都有开销。

原生镜像模式:构建时就把字节码编译成机器码 → 运行时直接执行。没有JVM启动开销,没有类加载开销,没有JIT编译等待。

Quarkus从3.31版本开始,已经将GraalVM/Mandrel 25.0作为默认版本。
4.3 但原生镜像也有代价
原生镜像不是银弹。它的代价是构建时间更长——Quarkus原生镜像的构建时间明显高于Spring Boot。
而且,原生镜像对反射、动态代理、序列化等运行时动态特性支持有限。如果你的代码大量使用这些特性,可能需要额外配置。
五、从零搭建一个Quarkus应用
光说不练假把式。
我们花5分钟搭一个Quarkus REST应用看看。
5.1 创建项目
用Quarkus CLI创建项目:
# 安装Quarkus CLI
brew install quarkusio/tap/quarkus
# 创建项目
quarkus create app com.example:quarkus-demo \
--extension='resteasy-reactive,resteasy-reactive-jackson' \
--maven或者直接用Maven:
mvn io.quarkus.platform:quarkus-maven-plugin:3.33.0:create \
-DprojectGroupId=com.example \
-DprojectArtifactId=quarkus-demo \
-Dextensions='resteasy-reactive,resteasy-reactive-jackson'5.2 写一个REST接口
package com.example.resource;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from Quarkus!";
}
}5.3 跑起来看看
# 开发模式(支持热加载)
./mvnw quarkus:dev
# 访问 http://localhost:8080/hello开发模式有一个杀手级特性:修改代码后,Quarkus会自动重新加载,不需要手动重启。
这个体验,用过就回不去了。
5.4 打成原生镜像
# 安装GraalVM(或使用Mandrel)
# 然后执行
./mvnw package -Pnative
# 运行原生镜像
./target/quarkus-demo-1.0.0-SNAPSHOT-runner一个Spring Boot应用启动可能要3-5秒,Quarkus原生镜像启动只需要0.1秒以内。这就是差距。
六、一张图看懂Quarkus的技术全景

七、优缺点
Quarkus的优点
1. 极致的启动速度 JVM模式下是Spring Boot的1/2到1/3,原生模式下是毫秒级。
2. 超低内存占用 内存占用仅为Spring Boot的1/2到1/4。
3. 更高的吞吐量 相同业务逻辑下,吞吐量是Spring Boot的2.7倍。
4. 启动即峰值性能 不需要JIT预热,启动直接达到峰值性能。
5. 云原生原生支持 从设计之初就为容器和Kubernetes优化。在Kubernetes上资源请求量仅为Spring Boot的1/4,冷启动速度提升10倍以上。
6. 活跃的版本迭代 2026年以来,Quarkus已发布3.31到3.37等多个版本,3.33 LTS版本稳定支持至2027年3月。Quarkus 4.0预计2026年11月GA,将引入JPMS模块化架构、Project Leyden AOT优化等重磅特性。
7. 扩展生态不断壮大 社区Quarkiverse已托管大量扩展,2026年新增了对Qdrant向量数据库、Langfuse AI可观测性、MCP服务器等AI相关扩展的支持。
Quarkus的缺点
1. 构建时间更长 AOT编译需要额外时间,构建速度不如Spring Boot。
2. 原生镜像有兼容性限制 反射、动态代理、序列化等动态特性需要额外配置。
3. 生态不如Spring Boot成熟 Spring Boot有20年的生态积累,Quarkus的第三方库覆盖度仍有差距。
4. 学习曲线 构建时优化、原生镜像等概念需要一定的学习成本。
5. 调试复杂度 原生镜像的调试不如JVM模式方便。
八、适用场景
| 场景 | 推荐程度 | 理由 |
|---|---|---|
| Kubernetes微服务 | ✅✅✅ 强烈推荐 | 容器优先设计,资源占用极低 |
| Serverless/FaaS | ✅✅✅ 强烈推荐 | 冷启动毫秒级,200ms以内 |
| 高密度部署 | ✅✅✅ 强烈推荐 | 内存占用仅为Spring Boot一半 |
| 金融交易系统 | ✅✅✅ 强烈推荐 | 高吞吐+低延迟,某企业迁移后QPS提升300% |
| AI推理服务 | ✅✅ 推荐 | Quarkus 4将深度集成AI |
| 边缘计算 | ✅✅ 推荐 | 原生镜像体积小、启动快 |
| 传统企业应用 | ⚠️ 需评估 | Spring Boot生态更成熟 |
| 大量使用反射/动态代理 | ⚠️ 需评估 | 原生镜像兼容性需额外配置 |
九、写在最后
回到最初的问题:Quarkus凭什么比Spring Boot快5倍?
答案不在“代码写得更好”上,而在**“干活的时间点不同”**上。
Spring Boot在运行时干活——启动时反射扫描、运行时JIT编译。Quarkus在构建时干活——编译期注解处理、AOT提前编译。
一个把活留到最后一刻才干,一个在开工前就把活干完了。这就是2.7倍吞吐量、2.3倍启动速度、54%内存节省的全部秘密。
但我要说的是:Quarkus不是来取代Spring Boot的。
Spring Boot依然是Java生态中最成熟、最全面、生态最丰富的企业级框架。
如果你的应用是传统的、业务逻辑复杂、对启动速度不敏感——Spring Boot依然是稳妥的选择。
但如果你在云原生环境里跑微服务,需要快速弹性伸缩、高密度部署、低成本运行——Quarkus值得你认真评估。
2026年的Java技术圈,已经是百花争鸣的时代了。
Quarkus、Micronaut、Helidon等新一代框架正在重新定义Java在云原生时代的可能性。
我的建议是:花一个下午,把Quarkus的官方Quickstart跑一遍。感受一下0.1秒启动、70MB内存的Java应用是什么体验。
然后根据你的实际场景,做出选择。
技术选型没有银弹,但多一个选项,就多一条路。
开源地址:
- Quarkus GitHub:https://github.com/quarkusio/quarkus
- 官方文档:https://quarkus.io
- 性能基准测试代码:https://github.com/quarkusio/spring-quarkus-perf-comparison
最近缺项目经历想快速提升项目实战能力(包含多个AI项目),或者最近找工作,或者想学习AI的小伙伴,可以看看下面👇🏻的这个链接(或许真的能够帮到你)。