接着 next-public 源代码分析,Java 应用服务器选用 jetty。但是之前普遍使用 Tomcat,那为什么要用 jetty 么,除了这两个,Java 应用服务器开源现状并不了解,故而又是一篇科普性的笔记,以下是 又小又快的 Java 应用服务器,根据 启动速度、内存占用 和 包大小 综合排序(开源免费,支持 Jakarta EE 规范或部分模块):
1. Jetty (嵌入式场景首选)
- 包大小: ~15 MB(最小核心包)
- 启动速度: <1秒(轻量级启动)
- 内存占用: ~50 MB(基础服务)
- 支持规范: Servlet、JSP、WebSocket(仅 Web Profile,不支持 EJB/JMS 等全功能)
- 特点:
- 极致轻量,适合嵌入式系统或微服务 API 网关。
- 常用于 Spring Boot 内嵌服务器。
- 适用场景: 高并发 Web 接口、轻量级 RESTful 服务。
2. OpenLiberty (云原生全功能)
- 包大小: ~70 MB(基础包)
- 启动速度: 1-3秒(优化后)
- 内存占用: ~100-200 MB(默认堆)
- 支持规范: Jakarta EE Web Profile 或 Full Profile(按需启用模块)
- 特点:
- 模块化设计,仅加载所需功能,启动快。
- 支持微服务架构(兼容 MicroProfile)。
- 适用场景: 云原生应用、容器化部署、快速迭代的微服务。
3. Apache TomEE (轻量级全功能)
- 包大小: ~25 MB(Web Profile) / ~40 MB(Full Profile)
- 启动速度: 3-5秒
- 内存占用: ~150-300 MB
- 支持规范: Jakarta EE Full Profile(集成 EJB、JMS 等)
- 特点:
- 基于 Tomcat 扩展,全功能但保持轻量化。
- 适合需要 EJB 等企业功能的中小型项目。
- 适用场景: 中小型 Jakarta EE 应用、传统企业系统迁移。
4. Quarkus (非全功能但极致性能)
- 包大小: ~10-50 MB(根据 Native 编译优化)
- 启动速度: <0.1秒(Native 模式) / 1-2秒(JVM 模式)
- 内存占用: ~20-50 MB(Native 模式)
- 支持规范: 部分 Jakarta EE 标准(如 Servlet、CDI) + MicroProfile
- 特点:
- 专为云原生设计的超轻量框架,支持 GraalVM Native 编译。
- 非全功能 Jakarta EE,但性能碾压传统服务器。
- 适用场景: Serverless 函数、Kubernetes 原生应用、极致性能需求。
5. WildFly (高性能全功能)
- 包大小: ~200 MB(完整包)
- 启动速度: 5-10秒
- 内存占用: ~300-500 MB(默认堆)
- 支持规范: Jakarta EE Full Profile(完整企业功能)
- 特点:
- 全功能企业级服务器,性能优化出色。
- 适合需要复杂事务、分布式缓存的大型系统。
- 适用场景: 大型分布式系统、高吞吐量企业应用。
对比排序表
服务器 | 包大小 | 启动速度 | 内存占用 | 全功能支持 | 适用场景 |
---|---|---|---|---|---|
Jetty | ~15 MB | <1秒 | ~50 MB | ❌ 仅 Web Profile | 嵌入式、API 网关 |
Quarkus | ~10-50 MB | <0.1秒 (Native) | ~20-50 MB | ❌ 部分规范 | 云原生、Serverless |
OpenLiberty | ~70 MB | 1-3秒 | ~100-200 MB | ✅ Web/Full Profile | 微服务、容器化 |
TomEE | ~25-40 MB | 3-5秒 | ~150-300 MB | ✅ Full Profile | 中小型全功能应用 |
WildFly | ~200 MB | 5-10秒 | ~300-500 MB | ✅ Full Profile | 大型企业系统、高并发 |
选型建议
- 追求极致轻量和速度 → Jetty(仅 Web 服务) 或 Quarkus(云原生)。
- 需要全功能且轻量化 → Apache TomEE 或 OpenLiberty(按需模块化)。
- 大型复杂企业应用 → WildFly(性能与功能平衡)。
附加说明
- Native 编译:Quarkus 和 OpenLiberty 支持 GraalVM Native Image,可进一步减少内存占用并提升启动速度(适合 Serverless 场景)。
- 容器优化:OpenLiberty 和 Quarkus 提供官方 Docker 镜像,优化容器部署。
- 性能测试数据参考: Techempower 基准测试 可查看各框架的吞吐量排名。