接著 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 基準測試 可查看各框架的吞吐量排名。