核心适配表(官方标准 + 生产推荐)
| Tomcat 版本 | 最低 JDK 要求 | 官方推荐 JDK | 生产首选 | 不建议 / 不支持版本 |
|---|---|---|---|---|
| Tomcat 9 | JDK 8 | JDK 8 / 11 | JDK 8(传统项目) | JDK ≤7;JDK ≥17(非官方支持) |
| Tomcat 10 | JDK 11(10.1+ 起) | JDK 17 / 21 | JDK 17(主流新项目) | JDK ≤7;JDK 8(10.1+ 不支持) |
| Tomcat 11 | JDK 17 | JDK 17 / 21 | JDK 21(全新高性能项目) | JDK ≤11 |
注: Tomcat 11 基于 Jakarta EE 11,而 Jakarta EE 11 规范明确要求 Java SE 17+,因此 JDK 17 是硬性门槛。
分版本详细说明(适配逻辑 + 实践建议)
为便于横向对比,以下各版本均按统一结构说明:规范支持、命名空间、JDK 兼容性、生产适用性、迁移要求。
1. Tomcat 9
- 规范支持:Servlet 4.0 / JSP 2.3 / EL 3.0 / WebSocket 1.1(Java EE 8)
- 命名空间:javax.*(无需代码修改)
- JDK 兼容性:
- ✅ JDK 8(LTS):完全兼容,零适配成本,推荐用于所有传统系统。
- ⚠️ JDK 11(LTS):功能可用,但需添加 JVM 参数绕过模块封装限制:
需避免使用 sun.misc.* 等内部 API。JAVA_OPTS="--add-opens=java.base/java.lang=ALL-UNNAMED \ --add-opens=java.base/java.io=ALL-UNNAMED" - ❌ JDK 17+:非官方支持,存在反射、JNDI、安全策略等兼容性风险,不推荐用于生产。
生产适用性:✅ 强烈推荐用于维护中的传统应用;官方支持将持续至 2027 年 3 月。
迁移要求:无。适用于未进行 Jakarta EE 迁移的存量系统。
2. Tomcat 10
- 规范支持:Servlet 5.0 / Jakarta Pages 3.0 / WebSocket 2.1(Jakarta EE 9.1)
- 命名空间:jakarta.(原 javax. 已废弃)
- JDK 兼容性:
- ✅ JDK 17(LTS):官方主力支持版本,深度优化,支持 ZGC、密封类、JFR 增强等现代特性。
- ✅ JDK 21(LTS):完全兼容,可启用虚拟线程(需应用层适配),适合高性能场景。
- ⚠️ JDK 11(LTS):功能完整,但无法使用 JDK 17+ 的新特性。

