What Is Tomcat?
What is Tomcat? Apache Tomcat —or, Tomcat for short — is a popular tool in enterprise infrastructure. And there are many ways in which Tomcat can shine as a Java application container.
In this blog, we give an overview of Apache Tomcat, how it works, its history and versioning, why it's used, and discuss some commercial and open source Tomcat alternatives.
- What Is Tomcat?
- History of Tomcat
- How Does Tomcat Work?
- Tomcat Versions and Support Lifecycles
- Commercial and Open Source Tomcat Alternatives
What Is Tomcat?
Apache Tomcat is a lightweight, open source Java application server that serves as a reference implementation of the Servlet specification.
The servlet specification is the official definition of a Java web application. At a high level, this specification let’s everyone know how to layout their application, how the requests are handled and how the responses are generated. Tomcat is an implementation of this specification.
The first servlet specification was over 25 years ago, and has now reached Servlet 5.0 in Tomcat 10 (although Servlet 4.0 in GA release of Tomcat 9). Tomcat 10 is in alpha (pre-release) at the time of this writing.
Considerations When Using Tomcat
Tomcat is an excellent Java application container, but it is not the solution for every problem. Some applications will require a setup that implements the JavaEE specification, and Tomcat does not.
The enterprise edition (EE) specification has a lot of features, as does Tomcat, but the fact that Tomcat does not implement this specification is not necessarily a bad thing.
By not offering full EE functionality, Tomcat is much lighter, it does not require the same amount of computing resources to run as WildFly or WebLogic. It does not load components that will not be used and therefore does not waste RAM, processing power or time.
Now Available: The Enterprise Guide to Apache Tomcat
Our new Enterprise Guide to Apache Tomcat provides detailed best practices for Tomcat deployment, including best practices for performance, security, resilience, and more.
History of Tomcat
In 1998, James Duncan Davidson, a software architect at Sun Microsystems created Tomcat as a servlet reference implementation of Java Servlet and Java Server Pages Specifications. Hoping that the project would become open sourced, and since many open source projects had O'Reilly books connected to them that featured an animal as cover art, Davidson chose to name the project Tomcat. However, another O’Reilly book already had an image of a tomcat, and so when the publisher finally released a book in 2003 on Tomcat software, it featured a snow leopard instead. By then, the software was widely known as Tomcat.
Davidson continued to work on the project and in 1999, Sun Microsystems donated the Tomcat code base to the Apache Software Foundation, where it was first released as version 3.0. According to Apache, “Tomcat is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the Jakarta EE platform. The Jakarta EE platform is the evolution of the Java EE platform. Tomcat 10 and later implement specifications developed as part of Jakarta EE. Tomcat 9 and earlier implement specifications developed as part of Java EE.”
In 2005, Apache removed Tomcat from its Jakarta umbrella and oversight structure to position it as its own top-level Apache project, during the Version 5.5 to 6.0 timeframe.
Multiple volunteers from the Sun and other organizations have continued to develop the project. Apache has issued several major releases over the years, with Apache Tomcat 11.0 expected in 2024. Tomcat is widely adopted and maintains a vibrant active community.
How Does Tomcat Work?
Tomcat provides the means and methods for deploying Java web applications. Deploying a web application is simple; just place the war file or the directory containing the web application in the folder called “webapps.” There is also a provided management application that will allow you to “upload” a file to be deployed on the server.
The basics of a Java web application are outside the scope this conversation, but, in simplest terms, a Java web application is an application that is accessible via a browser. To the end user it looks just like a website, but the content is dynamic, not static. Assuming users have knowledge of a web application, Apache Tomcat is one of many options for serving a dynamic web site.
Apache Tomcat is better than most solutions that are available, as it is very fast, and very lightweight.
Tomcat Versions and Support Lifecycles
Apache Tomcat releases versions on a regular basis. Different versions of Apache Tomcat are available for different versions of the Jakarta EE specifications. View detailed map of Apache Tomcat specifications.
Apache Tomcat versions released after 2007 typically have a 10-year support lifecycle based upon their initial release date. Below is current versioning and expected lifecycle support dates:
|Tomcat Version||Release Date||Support End of Lifecycle|
|Apache Tomcat 6||February 28, 2007||December 31, 2016|
|Apache Tomcat 7||January 13, 2011||March 31, 2021|
|Apache Tomcat 8||February 2, 2014||March 2024 (Estimated)|
|Apache Tomcat 9||October 4, 2017||2027 (Estimated)|
|Apache Tomcat 10||December 8, 2020||2030 (Estimated)|
|Apache Tomcat 11||June 2024 (Estimated)||2034 (Estimated)|
Open Source Tomcat Alternatives
WebLogic, Wildfly, JBoss, Jetty, Undertow, and WebSphere are just a few of the other Servlet implementations that are considered open source Tomcat alternatives. This is because they serve Java content to the end user. WebLogic and WebSphere are two other options, but they feature proprietary software components accompanied by a hefty price tag for licensing and support. For open source Tomcat alternatives, Wildfly, JBoss, Jetty, and Undertow are popular open source solutions available to the public.
Comparing Commercial and Open Source Tomcat Alternatives
The difference between all these containers and Tomcat? Tomcat is not a full EE container. This will cause problems if you are attempting to deploy an application with a lot of EE functionality. There are components available to assist with every bit of functionality that would normally be used in an Enterprise application.
Some applications will require a setup that implements the JavaEE specification, and Tomcat does not. The EE specification has a lot of features, as does Tomcat, but the fact that Tomcat does not implement this specification is not necessarily a bad thing.
Example Open Source Web Application Stack
Using Apache HTTP Server, Apache Tomcat, and PostgreSQL enables users the ability to construct a 100% free and 100% reliable infrastructure to serve content. There is no reason to pay for these components. Some of the “for-pay” products might have better documentation (although Tomcat’s documentation is amazing) and better graphic user interfaces for management, however, these are not reasons to discount using Tomcat.
Tomcat vs. TomEE
For those who want to use Tomcat for enterprise applications, there is an EE implementation of Tomcat, called Apache TomEE. TomEE is a wrapper that wraps TomEE with full EE stack functionality.
One of the major differences between open source and proprietary “for-pay” software is support. However, OpenLogic has supported a number of open source projects, like Tomcat, professionally for more than a decade. For many organizations, using “for-pay” software, with outrageous license renewal fees, is not worth the cost.
Editor's Note: This blog was originally published in 2020 and updated in 2023 for accuracy.
Get Support for Apache Tomcat From OpenLogic
Want to learn more about how OpenLogic can support your open source web application stack?
- Blog - How to Install Apache Tomcat
- Blog - Tomcat Configuration Tips and Tricks
- Blog - Tomcat vs. NGINX
- Blog - GhostCat Vulnerability in Tomcat
- Blog - Apache Tomcat 8: Overview, Clustering, and More
- Blog - Tomcat 9 Overview: Key Features and Considerations
- Blog - Apache Tomcat 10: Considerations for Enterprise Deployment
- Blog - Apache Tomcat Clustering: The Ultimate Guide
- Blog - 5 Apache Tomcat Performance Best Practices