Apache Tomcat 11 预览版:值得关注的新功能


Apache Tomcat 11 的稳定版本(广泛使用的 Web 服务器和 Java Servlet 容器的下一个主要版本)预计将在大约一年后发布。alpha 版本最近发布,让开发人员了解新版本的规格、功能和变化。 

自 24 年前诞生以来, Apache Tomcat一直是占主导地位的基于 Java 的开源应用服务器。2005 年,它成为 Tomcat 5.5 和 Tomcat 6 版本之间的顶级 Apache 项目。主要 Tomcat 版本通常每三年发布一次,支持生命周期通常为 10 年。Tomcat 11 正处于其第七个里程碑 alpha 版本中,对于将当前应用程序服务器采用最新规格的用户来说,有一些有趣的变化。 

在解决所有错误并且提交者宣布 Tomcat 11 稳定后,Tomcat 11 预计将于 2024 年 6 月发布。

Tomcat 11 特性和变化
Tomcat 11 中最显着的变化是增加了 Project Loom (JEP 444) 提供的虚拟线程支持,它带来了由 Java 运行时环境管理的“易于使用、高吞吐量、轻量级并发”。 这是 Tomcat 标准线程池的替代方案,后者分配平台和操作系统内核线程。 还会有其他与 Project Loom 相关的更改,例如并发性,但这将在 Tomcat 11 开发和测试时确定。

Java 21(及更高版本)将成为 Tomcat 11 支持的版本,与 Tomcat 10.1 中的 Java 11+ 和 Tomcat 10.0 中的 Java 8 相比,这是一个显着的飞跃。 请记住,Java 21 的建议发布日期是 2023 年 9 月 19 日。 但是,您现在仍然可以使用OpenJDK 21 的早期访问版本来测试 Tomcat 11 ,但不建议用于生产用途。

Tomcat 社区计划使用巴拿马项目来简单地进行 OpenSSL 集成,并在 Tomcat 11 中添加基于 HTTP/3 的 QUIC 传输协议支持,但看来它可能仍处于 Java 21 的预览版中。这仍有待确定 。 巴拿马项目在 Java 22 中将不是预览版。 

Tomcat 10 与 Tomcat 11 
Tomcat 10 与 Tomcat 11 之间的主要区别在于,Tomcat 11 利用了新规范和 JDK 功能,使其版本之间的跳跃较小,例如,不如Tomcat 9 和 Tomcat 10 之间的跳跃那么显着。  

Tomcat 10.1 实现了 Jakarta EE 10 所需的 Servlet 6.0、JSP 3.1、EL 5.0、WebSocket 2.1 和 Authentication 3.0 规范。Tomcat 11 将包括 Jakarta Servlet 6.1、Jakarta Server Pages 4.0、Jakarta Expression Language 6.0 等最新版本的规范Jakarta EE 11 中的 Java WebSocket、Jakarta 身份验证和 Jakarta 注释。 

版本 10 和 11 之间的 Jakarta 规范变化看起来主要是为了澄清灰色区域、小的功能改进和解决技术债务。

Tomcat 11 升级和迁移注意事项
由于作为向 Eclipse Foundation 迁移的一部分而从 Java EE 迁移到 Jakarta EE,因此实现 API 的包名称从 更改javax.*为jakarta.*.  此更改从 Tomcat 10.0 开始。 使用 Tomcat 10 之前的 API 编写的任何代码都需要在迁移到此版本之前进行更改。 如果您已经使用 Tomcat 10.x,那么此更改不会影响您。 Tomcat 10.0 和 10.1 分别实现了 Jakarta EE 9 和 10 中的规范。

对未来 Tomcat 11.x 版本的期待
当前的重点是在 2024 年 3 月发布官方规范时实现 Jakarta 11 EE 中的所有规范。Servlet  6.1、JSP 4.0 和 EL 6.0 将成为该规范的一部分,WebSocket 和 Authentication 规范版本仍为待定。 

宣布主要版本稳定部分取决于项目核心提交者的判断。 Tomcat 之前的主要版本具有显着不同的代码库,并且提供了一个窗口,以便在宣布主要版本稳定之前有时间发现错误。 随着未来的版本将尝试保持代码库更加一致并减少版本之间的差异,这种情况将会发生变化。 这将使人们对代码更有信心,从而对未来版本的稳定性更有信心。