当前位置: 首页 > news >正文

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

接着 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 MB1-3秒~100-200 MB✅ Web/Full Profile微服务、容器化
TomEE~25-40 MB3-5秒~150-300 MB✅ Full Profile中小型全功能应用
WildFly~200 MB5-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 基准测试 可查看各框架的吞吐量排名。

相关文章:

  • redis zset基本介绍以及底层实现
  • Unity音乐内存优化
  • jmeter吞吐量控制器-Throughput Controller
  • 计算机四级 - 数据库原理 - 第9章「数据库应用及安全性」
  • WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)深度解析与实战复现
  • C/C++蓝桥杯算法真题打卡(Day6)
  • 在群晖DS923+手动安装我Wordpress最新版
  • 小科普《php、jsp、asp和aspx的区别》
  • 使用JSON存储数据的场景
  • 第七章:SELinux
  • DeepSeek R1在医院后勤故障报修工单自动化处理中的路径设计
  • API调用大模型推理与第三方API实现业务整合
  • leetcode974. 和可被 K 整除的子数组
  • 现代操作系统阅读笔记(一)
  • C#语言的事务管理
  • GESP2023年12月认证C++三级( 第三部分编程题(1)小猫分鱼)
  • 时间序列建模 | 时间序列预测【项目复现】数据挖掘实战③:基于Matplotlib对空气质量监测数据进行可视化分析(附带实例代码)
  • 算法刷题记录——LeetCode篇(8) [第701~800题](持续更新)
  • 关于Redis的集群(上)
  • java构建树形结构的方式、如何组装树状结构数据
  • 保利、北京建工联合体45.45亿元竞得北京海淀区宅地,溢价率11.95%
  • 李公明 | 一周画记:德里达哲学还是接地气的
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 上市公司重大资产重组新规九要点:引入私募“反向挂钩”,压缩审核流程
  • 受贿1.29亿余元,黑龙江省原副省长王一新被判无期
  • 中方是否计划解除或调整稀土出口管制?外交部回应