一句话介绍
Jetty.org 是一个高性能、轻量级的开源 Java Web 服务器与 Servlet 容器,由 Eclipse 基金会维护。它专为嵌入式和分布式环境设计,以极低的内存占用和灵活的模块化架构著称,开发者常将其作为替代 Tomcat 或 Undertow 的选择,用于构建 RESTful API、微服务或高并发 Web 应用。
业务详解
Jetty 项目诞生于 1995 年,最初由 Mort Bay Consulting 开发,2010 年后移交至 Eclipse 基金会管理。作为 Java 生态系统中的老牌组件,它提供 HTTP 服务器、Servlet 容器(支持 Servlet 3.1/4.0/5.0 规范)、WebSocket 支持以及异步处理能力。其核心定位是“嵌入式服务器”——即作为库直接嵌入到 Java 应用中,而非独立运行的 Web 容器。行业地位上,Jetty 与 Tomcat、Undertow 并称三大主流 Java 服务器,在云计算、物联网和大型分布式系统中广泛应用。客户类型涵盖互联网公司(如 Google、Facebook 的部分内部服务)、企业级 SaaS 平台以及需要定制化 HTTP 处理的开发者。由于是纯开源项目,Jetty 不提供商业客服或托管服务,但社区活跃,官方文档和 GitHub Issue 是主要支持渠道。
适合谁用
Jetty 最适合三类用户:
- Java 后端开发者:尤其是需要将 Web 服务器嵌入到 Spring Boot、Vert.x 等框架中的场景。Jetty 的启动速度极快(通常 <1 秒),适合开发调试和 CI/CD 流水线。
- 微服务与云原生团队:在 Docker 或 Kubernetes 环境中,Jetty 的轻量级特性(核心 JAR 仅几 MB)能显著减少镜像体积和资源消耗。
- 高并发或低延迟场景:如实时聊天、股票行情推送、游戏服务器后端,Jetty 的异步 I/O 和 NIO 支持能处理数万并发连接。
不适合:需要图形化管理界面、一键部署或企业级技术支持的用户(如传统 Java 团队习惯 Tomcat 的 Manager 应用);对 Servlet 规范兼容性要求极严格的项目(Jetty 在部分旧规范细节上不如 Tomcat 完善)。
关键功能与亮点
- 极低内存占用:默认配置下,一个 Jetty 实例仅需 64MB 堆内存,相比 Tomcat 的 128MB 起步优势明显。
- 模块化架构:通过 Jetty Maven 插件或 Gradle 依赖,可按需加载 HTTP、WebSocket、Servlet 等模块,避免冗余组件。
- 原生异步支持:基于 Java NIO 的 Continuation API,无需额外线程池即可实现非阻塞请求处理,适合长轮询和 Server-Sent Events。
- 嵌入式友好:提供 Jetty Server 类,可在 Java 代码中直接启动、停止和配置服务器,无需 XML 文件。
- HTTP/2 与 QUIC 支持:最新版本(Jetty 12)已支持 HTTP/2 和实验性 QUIC 协议,适合现代 Web 应用。
- 安全与合规:内置 SSL/TLS 支持,通过 Let's Encrypt 可快速配置 HTTPS,且通过 OWASP 安全测试。
价格分析
Jetty 是 100% 开源软件,遵循 Eclipse Public License 2.0 或 Apache License 2.0,无任何隐藏费用。用户无需支付授权费、订阅费或云服务费(除非使用第三方托管平台)。相比商业 Java 服务器(如 WebLogic、WebSphere 年费数千美元),Jetty 的“价格”为零——但需自行承担部署、运维和调优的人力成本。如果按性价比计算,Jetty 在嵌入式场景中远优于 Tomcat(因后者体积更大),但在独立服务器场景中,Tomcat 的免费社区版同样零成本,此时 Jetty 的差异化在于资源效率而非价格。
中国用户怎么用
- 网络通畅性:Jetty 官网(jetty.org)和 Maven 中央仓库在国内可直接访问,下载 JAR 或通过 Maven/Gradle 拉取依赖无阻。但 GitHub Release 页面偶尔加载缓慢,建议使用国内镜像(如阿里云 Maven 镜像)。
- 支付方式:无需支付,因此不涉及信用卡或支付宝问题。
- 是否需要科学上网:日常开发(文档、依赖下载)无需梯子;但若需访问 Eclipse 基金会论坛或 Stack Overflow 英文社区,建议准备工具。
- 国内同类替代品:Tomcat(更重但生态更熟)、Undertow(同样轻量,被 WildFly 使用)、国产的 Tengine(基于 Nginx,非 Java)。对 Java 开发者而言,Jetty 是唯一与 Spring Boot 官方推荐的 Tomcat、Undertow 并列的选项。
- 开发票:开源项目本身不开发票。若企业需要合规报销,可考虑购买第三方商业支持(如 Webtide 公司提供的 Jetty 商业订阅,但价格未公开且国内无代理),或直接使用阿里云、腾讯云上的托管版 Tomcat 服务。
优缺点对比
优点:
- ✅ 内存占用极低,适合资源受限环境(如容器、IoT 设备)
- ✅ 启动速度 <1 秒,开发体验流畅
- ✅ 模块化设计,按需加载,无冗余依赖
- ✅ 原生异步支持,高并发下性能稳定
- ✅ 完全免费且无商业限制
缺点:
- ❌ 文档质量一般,部分高级功能(如集群配置)缺乏中文示例
- ❌ 无图形化管理界面,运维需写代码或脚本
- ❌ 社区活跃度低于 Tomcat,遇到复杂 Bug 时修复周期较长
- ❌ 对 Servlet 旧规范(如 Servlet 2.5)兼容性不如 Tomcat
- ❌ 缺乏官方商业支持,企业级问题需自行解决或购买第三方服务
同类产品对比
- Apache Tomcat:最流行的 Java 服务器,生态成熟,文档和社区资源丰富,但体积大、启动慢(约 3-5 秒),默认内存占用 128MB+。适合传统 Java Web 应用和需要管理界面的团队。
- Undertow:由 Red Hat 维护,与 WildFly 深度集成,性能与 Jetty 相当,但配置更复杂。适合使用 JBoss/WildFly 生态的团队。
- Nginx + FastCGI:非 Java 方案,但国内许多团队用 Nginx 反向代理 Java 应用。优势是静态资源处理更强,劣势是需额外配置 Java 进程管理。
Jetty 的独特定位:它是三者中唯一专注于“嵌入式”的产品,在 Spring Boot 中作为可选容器(spring-boot-starter-jetty),适合追求极致资源控制和启动速度的场景。
总结建议
Jetty 最适合以下场景:
- 使用 Spring Boot 开发微服务,且希望降低容器资源开销
- 构建高并发 WebSocket 或长连接应用
- 在 Docker/K8s 中部署 Java 服务,镜像体积敏感
不适合:
- 需要图形化部署和管理工具的传统 Java 团队(建议选 Tomcat)
- 必须使用 Servlet 4.0 以下旧规范的项目(兼容性风险)
- 对商业支持有硬性要求的企业(建议考虑商业版 Tomcat 或 WebLogic)
建议:先通过 Maven 引入 jetty-server 依赖,在本地进行小规模测试(如 100 并发连接),对比 Tomcat 的性能和内存表现。由于完全免费,直接用于生产环境无需犹豫——但务必提前阅读官方配置指南,避免因默认参数不当导致性能瓶颈。