☰
比 Spring Boot 快好几倍,内存还省一半的 Java 框架!
2026/10/8 23:03:13 网站建设 项目流程

大家好,我是Java1234_小锋老师。

如果你做过微服务、上过 Kubernetes,大概率遇到过这种场景:服务一扩容,内存蹭蹭涨;冷启动慢到让人抓狂。今天聊的Quarkus,就是 Red Hat 专门为云原生时代打造的 Java 框架——启动快、占内存少,写起来还像 Spring 一样顺手。


一、Quarkus 是什么?

Quarkus(读作「夸儿克斯」)是 2019 年由 Red Hat 发布的开源 Java 框架,口号很直白:Supersonic Subatomic Java——超音速、亚原子级轻量。

它不是什么「另起炉灶」的新语言,你依然写熟悉的 Java 代码,用 JAX-RS 写接口、用 CDI 做依赖注入,但底层思路变了:把大量工作从「运行时」挪到「编译时」,让应用启动更快、运行更轻。

简单说:Quarkus 是写给容器、Kubernetes、Serverless这些场景的 Java 框架。


二、为什么它比 Spring Boot 更快、更省内存?

传统 Spring Boot 的启动流程,大致是这样:

启动 JVM

扫描所有注解

反射创建 Bean

加载自动配置

JIT 预热

应用就绪

每一步都要花时间、占内存。一个中等规模的 Spring Boot 应用,冷启动2~5 秒、内存300~500 MB并不稀奇。

Quarkus 换了个思路——编译时优化:

JVM 模式

Native 模式

编写 Java 代码

Quarkus 扩展在编译期处理

生成优化后的运行时代码

是否打 Native 包?

0.3 秒左右启动

50 毫秒内启动

核心差异可以概括成一句话:

对比项Spring BootQuarkus
优化时机主要在运行时(反射 + 扫描)主要在编译时(代码生成)
JVM 启动通常 2~5 秒通常 0.3~1 秒
JVM 内存300~500 MB 常见150~200 MB 左右
Native 启动Spring Native 约 100 ms+可低至 10~50 ms
Native 内存约 150 MB约 70 MB

数据来源综合自 ITNEXT 2026 基准测试、Java Code Geeks 多篇对比文章。实际数值会因业务复杂度、依赖多少而波动,但Quarkus 在启动和内存上 consistently 更优是业界共识。


三、一张图看懂两者差异

左边是 Spring Boot 的「先启动、再干活」;右边是 Quarkus 的「编译时就准备好,启动即就绪」。这就是它快好几倍、内存省一半的根本原因。


四、5 分钟上手:写一个 REST 接口

1. 创建项目

用 Quarkus 官方脚手架,选 REST 扩展即可:

# 使用 Quarkus CLI 创建项目quarkus create app com.example:hello-quarkus\--extension=rest,rest-jacksoncdhello-quarkus

或者用 code.quarkus.io 网页勾选扩展,下载即用。

2. 写一个 REST 资源类

packagecom.example;importjakarta.ws.rs.GET;importjakarta.ws.rs.Path;importjakarta.ws.rs.Produces;importjakarta.ws.rs.core.MediaType;importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;/** * 示例 REST 接口 * 访问路径:/hello */@Path("/hello")publicclassHelloResource{privatestaticfinalDateTimeFormatterFORMATTER=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");/** * 返回问候语和当前时间 */@GET@Produces(MediaType.APPLICATION_JSON)publicGreetinghello(){returnnewGreeting("Hello, Quarkus!",LocalDateTime.now().format(FORMATTER));}/** 响应数据对象 */publicrecordGreeting(Stringmessage,Stringtime){}}

3. 用 CDI 做依赖注入

Quarkus 默认用 CDI(Contexts and Dependency Injection),写法和 Spring 很像:

packagecom.example;importjakarta.enterprise.context.ApplicationScoped;importjakarta.inject.Inject;importjakarta.ws.rs.GET;importjakarta.ws.rs.Path;importjakarta.ws.rs.Produces;importjakarta.ws.rs.core.MediaType;/** * 带依赖注入的 REST 接口 */@Path("/users")publicclassUserResource{@InjectUserServiceuserService;@GET@Produces(MediaType.APPLICATION_JSON)publicStringlist(){returnuserService.getUserCount();}}/** * 业务服务层 */@ApplicationScopedpublicclassUserService{publicStringgetUserCount(){return"当前用户数:128";}}

4. 本地开发模式(热重载)

# 开发模式:改代码自动生效,不用重启./mvnw quarkus:dev

浏览器访问http://localhost:8080/hello,就能看到 JSON 响应。开发体验和 Spring Boot 的spring-boot-devtools类似,但启动更快。

5. 配置文件

application.properties写法也很熟悉:

# 服务端口 quarkus.http.port=8080 # 应用名称 quarkus.application.name=hello-quarkus # 开启 OpenAPI 文档(需添加 quarkus-smallrye-openapi 扩展) quarkus.swagger-ui.always-include=true

五、几个值得记住的核心特性

① 扩展机制(Extension)

Quarkus 的功能以「扩展」形式提供,比如quarkus-hibernate-orm-panache(数据库)、quarkus-resteasy-reactive(响应式 REST)。扩展在编译期就把配置、反射信息处理好了,运行时几乎零开销。

② Panache:更简洁的数据库操作

packagecom.example.entity;importio.quarkus.hibernate.orm.panache.PanacheEntity;importjakarta.persistence.Entity;/** * 用户实体 —— 继承 PanacheEntity 后自带 CRUD */@EntitypublicclassUserextendsPanacheEntity{publicStringname;publicStringemail;/** 按名称查询 */publicstaticUserfindByName(Stringname){returnfind("name",name).firstResult();}}

一行User.findByName("张三")就能查库,比 JPA + Repository 省不少样板代码。

③ 响应式优先

Quarkus 底层基于 Vert.x,天然支持响应式编程。高并发场景下,Reactive 栈的吞吐量往往比传统阻塞式高出一截。

④ 开发体验友好

  • quarkus:dev热重载
  • 内置 Dev UI(http://localhost:8080/q/dev/)
  • 和 Spring 类似的注解风格,学习成本低

六、Native 镜像:启动快到毫秒级

如果你要把应用部署到 AWS Lambda、Knative 这类按次计费的环境,Native 镜像是杀手锏。

# 打包成 Native 可执行文件(需要 GraalVM)./mvnw package-Pnative# 运行./target/hello-quarkus-1.0.0-SNAPSHOT-runner

打包后是一个独立二进制,不需要 JVM,启动时间可压到10~50 毫秒,内存占用约70 MB。

Java 源码

Maven/Gradle 编译

Quarkus 扩展处理

GraalVM Native Image

独立可执行文件 .exe / 无扩展名

毫秒级启动 + 极低内存

当然,Native 编译时间比 JVM 包长一些(通常几分钟),适合生产部署,不适合每次改一行代码就编一次。


七、适合用 Quarkus 的场景

场景为什么选 Quarkus
Kubernetes 微服务Pod 多、密度高,内存省 = 省钱
Serverless / FaaS冷启动快,不会被计费拖垮
边缘计算 / IoT资源有限,跑不动臃肿的 JVM 应用
高并发 API 网关响应式栈吞吐高、延迟低
新项目、云原生优先没有历史包袱,直接享受编译时优化

八、和 Spring Boot 怎么选?

这不是「谁取代谁」的问题,而是「什么场景用什么工具」。

选 Quarkus,如果你:

  • 新项目,目标就是 K8s / 云原生
  • 对启动时间和内存敏感(Serverless、弹性伸缩)
  • 团队愿意接受相对小一些的生态(但主流中间件都有扩展)

继续用 Spring Boot,如果你:

  • 大型企业项目,深度依赖 Spring Cloud、Spring Security 全家桶
  • 团队 Spring 经验丰富,迁移成本是首要考量
  • 应用长期运行、对冷启动不敏感(比如单体后台)

两个框架的代码风格有相似之处,有 Spring 基础的开发者,通常一两周就能上手 Quarkus。


九、写在最后

Quarkus 不是来「干掉」Spring Boot 的。它解决的是一个很实际的问题:Java 在云原生时代太重了。

通过把反射、扫描、配置这些脏活累活提前到编译期,Quarkus 让 Java 应用也能像 Go、Rust 那样轻快启动、省内存运行。对于微服务、容器化、Serverless 这些越来越主流的场景,它确实是一个值得认真考虑的选项。

如果你正被启动慢、内存高折磨,不妨花一个下午试试:

quarkus create app com.example:my-first-quarkus--extension=restcdmy-first-quarkus ./mvnw quarkus:dev

亲身体验一下,那个启动速度,可能会让你对 Java 刮目相看。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询