Tomcat, Java & Jakarta EE Version Compatibility Matrix
Official release lifecycle, supported servlet specifications, namespace transitions, and JDK requirements.
| Tomcat Version | Minimum Java | Recommended Java | Specification / Servlet Support | Package Namespace | Lifecycle Status |
|---|---|---|---|---|---|
| Tomcat 11.0.x | Java 17 | Java 21 LTS / 25 | Jakarta EE 11 (Servlet 6.1, JSP 4.0, EL 6.0, WebSocket 2.2) | jakarta.* |
Active / Latest |
| Tomcat 10.1.x | Java 11 | Java 17 LTS / 21 LTS | Jakarta EE 10 (Servlet 6.0, JSP 3.1, EL 5.0, WebSocket 2.1) | jakarta.* |
Long-Term Production |
| Tomcat 10.0.x | Java 8 | Java 11 LTS | Jakarta EE 9 (Servlet 5.0, JSP 3.0) - Migration Bridge | jakarta.* |
End of Life (EOL) |
| Tomcat 9.0.x | Java 8 | Java 11 LTS / 17 LTS | Java EE 8 (Servlet 4.0, JSP 2.3, EL 3.0, WebSocket 1.1) | javax.* |
Maintenance Mode |
| Tomcat 8.5.x | Java 7 | Java 8 / 11 | Java EE 7 (Servlet 3.1, JSP 2.3) | javax.* |
End of Life (March 2024) |
Critical Migration Guide: javax.* to jakarta.* Namespace
When migrating from Tomcat 9 (or older) to Tomcat 10.1 / 11, the underlying package namespace changes from javax.servlet.* to jakarta.servlet.*.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
Automated Migration Tool: For legacy WAR files that cannot be recompiled, use the Apache Tomcat Migration Tool for Jakarta EE (
jakartaee-migration-*.jar) to transpile bytecode automatically.