Quarkus vs Spring Boot:云原生 Java 框架对比
Alex Chen | 2026-09-01T08:56:48 | Java, Cloud
从启动速度、内存占用、GraalVM 原生镜像、开发体验、生态系统等维度对比 Quarkus 与 Spring Boot 的优劣。
# Quarkus vs Spring Boot:云原生 Java 框架对比 ## 启动速度与内存 Quarkus 通过编译时处理(build-time augmentation)将大量运行时初始化工作提前到编译阶段,启动速度和内存占用显著优于传统 Spring Boot。 | 指标 | Spring Boot | Quarkus JVM | Quarkus Native | |------|------------|-------------|----------------| | 启动时间 | ~2.5s | ~0.8s | ~0.02s | | 内存占用 | ~250MB | ~130MB | ~30MB | | 打包体积 | ~40MB | ~25MB | ~50MB | ## Quarkus 快速上手 ```java @Path("/api/users") @Produces(MediaType.APPLICATION_JSON) public class UserResource { @Inject UserService userService; @GET public List list(@QueryParam("page") @DefaultValue("1") int page) { return userService.findAll(page); } @POST @Transactional public Response create(@Valid UserCreateRequest req) { User user = userService.create(req); return Response.status(Status.CREATED).entity(user).build(); } } ``` ## 开发者体验对比 ```bash # Quarkus 的 Dev Mode 支持热重载 mvn quarkus:dev # 内置 Dev UI 提供可视化管理 # 访问 http://localhost:8080/q/dev/ ``` Quarkus 的 Dev Services 可以自动启动数据库、消息队列等依赖容器,无需手动配置 docker-compose。 ## GraalVM 原生镜像 ```bash # 构建原生镜像 mvn package -Dnative -Dquarkus.native.container-build=true # Dockerfile 示例 FROM quay.io/quarkus/quarkus-micro-image:2.0 COPY target/*-runner /application EXPOSE 8080 CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] ``` ## 如何选择 - 已有 Spring 生态投入、团队熟悉 Spring:选 Spring Boot - 追求极致启动速度、Serverless 场景:选 Quarkus - 需要 GraalVM 原生编译:Quarkus 支持更成熟 - 第三方库兼容性:Spring Boot 生态更丰富 两者并非对立关系,Quarkus 兼容大量 Spring API(`quarkus-spring-*` 扩展),迁移成本可控。