What Is New in Apache Tomcat 10.0
Tomcat 10.0 is a major release focused on implementing the latest Jakarta EE specifications. This update brings the servlet container in line with the new namespace and represents a significant step forward from previous versions.
| Category | Key Changes |
|---|---|
| Specification Updates | Migration from Java EE to Jakarta EE 9, including the new jakarta.* namespace. |
| New Features | Support for HTTP/2, Virtual Threads (Project Loom), and new JSP features. |
| Removals & Deprecations | Removal of deprecated APIs and support for legacy protocols like WebSocket RFC 6455. |
| Security | Updates to the OpenSSL and TLS configuration handling. |
| Internal Updates | Refactored internal clustering and session management code. |
What are the major specification changes in Tomcat 10.0?
The biggest change is the move from Java EE to Jakarta EE 9. This isn't just a version bump; it changes the package namespace from javax.* to jakarta.* for all core APIs like Servlet, JSP, and EL.
In practice, this means existing applications will not run on Tomcat 10 without first being migrated. You'll need to recompile your code against the new Jakarta EE 9 APIs or use a migration tool. This change was necessary to reflect the transfer of the Java EE specifications to the Eclipse Foundation.
What new features should developers know about?
Tomcat 10.0 introduces support for HTTP/2, which can significantly improve page load times for modern web applications. It also includes initial support for Virtual Threads (from Project Loom), allowing for more efficient handling of blocking operations.
For JSP developers, there are new features like the jsp:import action. The WebSocket implementation has been updated to the latest Jakarta WebSocket 2.0 API, which also uses the new jakarta.* namespace.
What was removed or deprecated in this release?
This release removes several legacy features to streamline the codebase. Support for the WebSocket RFC 6455 API (javax.websocket) has been dropped in favor of the Jakarta WebSocket 2.0 API.
Several internal APIs that were deprecated in Tomcat 9 have also been completely removed. If you were using any deprecated methods or classes, you'll need to update your code before deploying on Tomcat 10.
How did security and internals improve?
The TLS/SSL configuration has been enhanced with better OpenSSL support and more flexible cipher suite configuration. This matters because it allows for finer control over your secure connections.
Under the hood, the clustering and session replication code got a significant refactor. The internal implementation is now cleaner and more maintainable, which translates to better stability for large-scale deployments.
FAQ
Is Tomcat 10.0 a drop-in replacement for Tomcat 9?
No. The change from javax.* to jakarta.* namespace means existing applications must be migrated and recompiled against the Jakarta EE 9 APIs before they will work on Tomcat 10.
What is the minimum Java version required for Tomcat 10.0?
Tomcat 10.0 requires Java 8 or later. However, to use features like Virtual Threads, you will need a more recent Java version that includes those capabilities.
Can I use my old Tomcat 9 configuration files with Tomcat 10?
Most server.xml and web.xml configuration files should work, but you must update the schema locations and version declarations to reflect the Jakarta EE 9 schemas.
Does Tomcat 10.0 still support the old javax.websocket API?
No, support for the WebSocket RFC 6455 API (javax.websocket) has been removed. You must use the new Jakarta WebSocket 2.0 API (jakarta.websocket).
Where can I find the official changelog for this version?
The complete and detailed list of changes is available in the official Apache Tomcat 10.0 changelog.