【JDK17】开源应用服务器大比对

发布于:2025-03-19 ⋅ 阅读:(13) ⋅ 点赞:(0)

接着 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 大型企业系统、高并发

选型建议

  1. 追求极致轻量和速度Jetty(仅 Web 服务) 或 Quarkus(云原生)。
  2. 需要全功能且轻量化Apache TomEEOpenLiberty(按需模块化)。
  3. 大型复杂企业应用WildFly(性能与功能平衡)。

附加说明

  • Native 编译:Quarkus 和 OpenLiberty 支持 GraalVM Native Image,可进一步减少内存占用并提升启动速度(适合 Serverless 场景)。
  • 容器优化:OpenLiberty 和 Quarkus 提供官方 Docker 镜像,优化容器部署。
  • 性能测试数据参考: Techempower 基准测试 可查看各框架的吞吐量排名。