Original author(s) | James Duncan Davidson |
---|---|
Developer(s) | The Apache Software Foundation |
Initial release | 1999 |
Stable release | |
Repository | Tomcat Repository |
Written in | Java |
Type | Servlet container HTTP web server |
License | Apache-2.0 |
Website | tomcat |
Apache Tomcat (called "Tomcat" for short) is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies. It provides a "pure Java" HTTP web server environment in which Java code can also run. Thus it is a Java web application server, although not a full JEE application server.
Tomcat is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation, released under the Apache License 2.0 license.
Tomcat 4.x was released with Catalina (a servlet container), Coyote (an HTTP connector) and Jasper (a JSP engine).
Catalina is Tomcat's servlet container. Catalina implements Sun Microsystems' specifications for servlet and JavaServer Pages (JSP). In Tomcat, a Realm element represents a "database" of usernames, passwords, and roles (similar to Unix groups) assigned to those users. Different implementations of Realm allow Catalina to be integrated into environments where such authentication information is already being created and maintained, and then use that information to implement Container Managed Security as described in the Servlet Specification. [2]
Coyote is a Connector component for Tomcat that supports the HTTP 1.1 and 2 protocol as a web server. This allows Catalina, nominally a Java Servlet or JSP container, to also act as a plain web server that serves local files as HTTP documents. [3] Coyote listens for incoming connections to the server on a specific TCP port and forwards the request to the Tomcat Engine to process the request and send back a response to the requesting client. Another Coyote Connector, Coyote JK, listens similarly but instead forwards its requests to another web server, such as Apache, using the JK Protocol. [4] This usually offers better performance.[ citation needed ]
Jasper is Tomcat's JSP Engine. Jasper parses JSP files to compile them into Java code as servlets (that can be handled by Catalina). At runtime, Jasper detects changes to JSP files and recompiles them.
As of version 5, Tomcat uses Jasper 2, which is an implementation of the Sun Microsystems' JSP 2.0 specification. From Jasper to Jasper 2, important features were added:
javac
.Three new components were added with the release of Tomcat 7:
This component has been added to manage large applications. It is used for load balancing that can be achieved through many techniques. Clustering support currently requires the JDK version 1.5 or higher.
A high-availability feature has been added to facilitate the scheduling of system upgrades (e.g. new releases, change requests) without affecting the live environment. This is done by dispatching live traffic requests to a temporary server on a different port while the main server is upgraded on the main port. It is very useful in handling user requests on high-traffic web applications. [5]
Tomcat 9.x implements the Servlet 4.0 and JSP 2.3 Specifications. [6]
Tomcat 10.1.x implements the Servlet 6.0 and JSP 3.1 Specifications. [6]
Tomcat 11.x implements the Servlet 6.1 and JSP 4.0 Specifications. [6]
Tomcat started off as a servlet reference implementation by James Duncan Davidson, a software architect at Sun Microsystems. He later helped make the project open-source and played a key role in its donation by Sun Microsystems to the Apache Software Foundation. [7] The Apache Ant software build automation tool was developed as a side-effect of the creation of Tomcat as an open source project.
Davidson had initially hoped that the project would become open-sourced and, since many open-source projects had O'Reilly books associated with them featuring an animal on the cover, he wanted to name the project after an animal. He came up with Tomcat since he reasoned the animal represented something that could fend for itself. Although the tomcat was already in use for another O'Reilly title, [8] his wish to see an animal cover eventually came true when O'Reilly published their Tomcat book with a snow leopard on the cover in 2003. [9]
Series [10] | Declared stable | Description | Latest release | Latest release date | End of life [11] |
---|---|---|---|---|---|
2.0 | 1998 | Tomcat started off in November 1998 [12] as a servlet reference implementation by James Duncan Davidson, a software architect at Sun Microsystems. | ? | ? | ? |
3.0 | 1999 | Initial release. Merger of donated Sun Java Web Server code and ASF and Implements Servlet 2.2, and JSP 1.1 specifications. | 3.3.2 | 2004-03-09 | ? |
4.1 | 2002-09-06 [13] | First Apache Tomcat release to support the Servlet 2.3 and JSP 1.2 [14] specifications. | 4.1.40 | 2009-06-25 | ? |
5.0 | 2003-12-03 | Supports the Servlet 2.4, JSP 2.0, and EL 1.1 [14] specifications. | 5.0.30 | 2004-08-30 | ? |
[15] | 5.52004-11-10 [16] | Designed for J2SE 5.0. Inclusion of Eclipse JDT allows Tomcat to run without a full Java Development Kit being installed. | 5.5.36 | 2012-10-10 | 2012-09-30 [17] |
6.0 | 2007-02-28 [18] | Supports the Servlet 2.5, JSP 2.1, [14] and EL 2.1 specifications. | 6.0.53 | 2017-04-07 | 2016-12-31 [19] |
7.0 | 2011-01-14 [20] | Supports the Servlet 3.0, JSP 2.2, EL 2.2, and WebSocket [14] specifications. | 7.0.109 | 2021-04-26 [21] | 2021-03-31 [22] |
8.0 | 2014-06-25 [23] | Supports the Servlet 3.1, JSP 2.3, and EL 3.0 [14] specifications. | 8.0.53 | 2018-07-05 | 2018-06-30 [24] |
8.5 | 2016-06-13 | Adds support for HTTP/2, OpenSSL for JSSE, TLS virtual hosting and JASPIC 1.1. Created from Tomcat 9, following delays to Java EE 8. | 8.5.100 | 2024-03-25 [25] | 2024-03-31 [26] |
9.0 | 2018-01-18 | Supports the Servlet 4.0 [14] specifications. | 9.0.97 | 2024-11-09 [27] | TBA |
10.0 | 2021-02-02 | Supports the Servlet 5.0, JSP 3.0, EL 4.0, WebSocket 2.0 and Authentication 2.0 [14] specifications. | 10.0.27 | 2022-10-10 [28] | 2022-10-31 [29] |
10.1 | 2022-09-26 | Supports the Jakarta Servlet 6.0, JSP 3.1, EL 5.0, WebSocket 2.1, and JASPIC 3.0 [14] specifications. | 10.1.33 | 2024-11-11 [30] | TBA |
11.0 | 2024-10-09 | Supports the Jakarta Servlet 6.1, JSP 4.0, EL 6.0, WebSocket 2.2, and JASPIC 3.1 [14] specifications. | 11.0.1 | 2024-11-10 [31] | TBA |
Old version, not maintained Old version, still maintained Latest version Latest preview version |
Apache TomEE (pronounced "Tommy") is the Enterprise Edition of Apache Tomcat (Tomcat + Java/Jakarta EE = TomEE) that combines several Java enterprise projects including Apache OpenEJB, Apache OpenWebBeans, Apache OpenJPA, Apache MyFaces and others. [32] In October 2011, the project obtained certification by Oracle Corporation as a compatible implementation of the Java EE 6 Web Profile. [33] [34]
Related software that is now obsolete or defunct:
Jakarta Enterprise Beans is one of several Java APIs for modular construction of enterprise software. EJB is a server-side software component that encapsulates business logic of an application. An EJB web container provides a runtime environment for web related software components, including computer security, Java servlet lifecycle management, transaction processing, and other web services. The EJB specification is a subset of the Java EE specification.
Jakarta EE, formerly Java Platform, Enterprise Edition and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web services. Jakarta EE applications are run on reference runtimes, which can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components they are deploying.
Jakarta Server Pages is a collection of technologies that helps software developers create dynamically generated web pages based on HTML, XML, SOAP, or other document types. Released in 1999 by Sun Microsystems, JSP is similar to PHP and ASP, but uses the Java programming language.
A Jakarta Servlet, formerly Java Servlet is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web applications on web servers and thus qualify as a server-side servlet web API. Such web servlets are the Java counterpart to other dynamic web content technologies such as PHP and ASP.NET.
The Jakarta Project created and maintained open source software for the Java platform. It operated as an umbrella project under the auspices of the Apache Software Foundation, and all Jakarta products are released under the Apache License. As of December 21, 2011 the Jakarta project was retired because no subprojects were remaining.
A web container is the component of a web server that interacts with Jakarta Servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a particular servlet and ensuring that the URL requester has the correct access-rights. A web container handles requests to servlets, Jakarta Server Pages (JSP) files, and other types of files that include server-side code. The Web container creates servlet instances, loads and unloads servlets, creates and manages request and response objects, and performs other servlet-management tasks. A web container implements the web component contract of the Jakarta EE architecture. This architecture specifies a runtime environment for additional web components, including security, concurrency, lifecycle management, transaction, deployment, and other services.
NetBeans is an integrated development environment (IDE) for Java. NetBeans allows applications to be developed from a set of modular software components called modules. NetBeans runs on Windows, macOS, Linux and Solaris. In addition to Java development, it has extensions for other languages like PHP, C, C++, HTML5, and JavaScript. Applications based on NetBeans, including the NetBeans IDE, can be extended by third party developers.
Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the Java Platform, Enterprise Edition. It is an MVC web framework that simplifies the construction of user interfaces (UI) for server-based applications by using reusable UI components in a page.
Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices and service-oriented networks. Those resources are represented by objects called MBeans. In the API, classes can be dynamically loaded and instantiated. Managing and monitoring applications can be designed and developed using the Java Dynamic Management Kit.
JSP Model 2 is a complex design pattern used in the design of Java Web applications which separates the display of content from the logic used to obtain and manipulate the content. Since Model 2 drives a separation between logic and display, it is usually associated with the model–view–controller (MVC) paradigm. While the exact form of the MVC "Model" was never specified by the Model 2 design, a number of publications recommend a formalized layer to contain MVC Model code. The Java BluePrints, for example, originally recommended using EJBs to encapsulate the MVC Model.
Apache Geronimo is an open source application server developed by the Apache Software Foundation and distributed under the Apache license.
Apache Axis is an open-source, XML based Web service framework. It consists of a Java and a C++ implementation of the SOAP server, and various utilities and APIs for generating and deploying Web service applications. Using Apache Axis, developers can create interoperable, distributed computing applications. Axis development takes place under the auspices of the Apache Software Foundation.
Web server software allows computers to act as web servers. The first web servers supported only static files, such as HTML, but now they commonly allow embedding of server side applications.
GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by OmniFish, Fujitsu and Payara. The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).
In software engineering, a WAR file is a file used to distribute a collection of JAR-files, JavaServer Pages, Java Servlets, Java classes, XML files, tag libraries, static web pages and other resources that together constitute a web application.
The Apache JServ Protocol (AJP) is a binary protocol that can proxy inbound requests from a web server through to an application server that sits behind the web server. AJP is a highly trusted protocol and should never be exposed to untrusted clients, which could use it to gain access to sensitive information or execute code on the application server.
The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. The framework does not impose any specific programming model.. The framework has become popular in the Java community as an addition to the Enterprise JavaBeans (EJB) model. The Spring Framework is free and open source software.
The JBoss Enterprise Application Platform is a subscription-based/open-source Java EE-based application server runtime platform used for building, deploying, and hosting highly-transactional Java applications and services developed and maintained by Red Hat. The JBoss Enterprise Application Platform is part of Red Hat's Enterprise Middleware portfolio of software. Because it is Java-based, the JBoss application server operates across platforms; it is usable on any operating system that supports Java. JBoss Enterprise Application Platform was originally called JBoss and was developed by the eponymous company JBoss, acquired by Red Hat in 2006.
OpenEJB is an open-source, embeddable and lightweight Enterprise JavaBeans Container System and EJB Server, released under the Apache License 2.0. OpenEJB has been integrated with Java EE application servers such as Geronimo and WebObjects.
Apache TomEE is the Enterprise Edition of Apache Tomcat that combines several Java enterprise projects including Apache OpenEJB, Apache OpenWebBeans, Apache OpenJPA, Apache MyFaces and others. In October 2011, the project obtained certification by Oracle Corporation as a compatible implementation of the Java EE 6 Web Profile.