| 失效链接处理 |
|
Jetty 12 到底有多强大?
相关截图:
![]() 主要内容:
01 先认识一下 Jetty
Jetty 是 Eclipse 基金会旗下的一个开源项目,用纯 Java 写成,既是 HTTP 服务器,也是 Servlet 容器,同时还自带一个功能完整的 HTTP 客户端。它的历史比很多程序员的工龄还长——1995 年就诞生了,一路走到今天已经快 30 年。
如果只用一个词形容 Jetty,我会选"可嵌入"。
Tomcat 的传统用法是"先装好容器,再把 war 包丢进去";而 Jetty 从一开始就被设计成一个可以塞进你程序里的组件。你写个 main 方法,new 一个 Server,几行代码就能把 Web 服务跑起来。正因为这个特点,很多大名鼎鼎的项目都悄悄用着它:
Spring Boot:官方支持把内嵌容器从 Tomcat 换成 Jetty;
Hadoop、Spark、Zeppelin:它们的 Web 管理界面背后都有 Jetty;
Maven 的 jetty 插件:很多人第一次跑 Java Web 项目,用的就是 mvn jetty:run;
还有大量网关、IoT 平台、开发工具,把 Jetty 当成"内置的小引擎"。
总结一下 Jetty 的几个标签:轻量、可嵌入、模块化、异步优先、协议支持全面(HTTP/1.1、HTTP/2、HTTP/3、WebSocket 一个不落)。
02 Jetty 12 的底子:一次彻底的重构
要聊 12.1,得先说说 Jetty 12。2023 年发布的 Jetty 12 不是一次普通的版本升级,而是一次"彻底重构"。
以前的 Jetty(9、10、11)和 Servlet 规范是深度绑定的,Servlet API 一变,Jetty 就得跟着大改。Jetty 12 干了一件很漂亮的事:把核心层和 Servlet 彻底解耦。
最底层是 Jetty Core:负责网络 I/O、HTTP 协议解析、请求处理,完全不依赖 Servlet;
上面是一个个 EE 环境:EE8(javax.servlet)、EE9/EE10(jakarta.servlet),到了 12.1 又加上了 EE11;
这些环境可以同时跑在同一个 Jetty 实例里。老系统用 javax,新系统用 jakarta,互不打扰。
这一点对企业来说太实用了。很多公司都有一堆"不敢动"的老项目,以前要升级容器就得先改包名、改依赖;现在可以让老项目继续留在 EE8 环境里,新项目直接上 EE11,同一台服务器一起托管。
另外,Jetty 12 还有几个"底子"上的硬实力:
最低要求 Java 17,代码现代化程度高;
原生支持 HTTP/3(基于 QUIC);
支持虚拟线程,配合 JDK 21+ 可以轻松应对高并发阻塞场景;
全新的 Handler API,彻底异步化,性能和灵活性都上了一个台阶。
|


苏公网安备 32061202001004号
