This article has multiple issues. Please help improve it or discuss these issues on the talk page . (Learn how and when to remove these messages)
|
This list compares the features and functionality of application servers, grouped by the hosting environment that is offered by that particular application server.
Product | Vendor | Edition | Last release | Jakarta EE compatibility [1] | Servlet | JSP | HTTP/2 | License |
---|---|---|---|---|---|---|---|---|
ColdFusion | Adobe Systems | 2016.0.1 | 2016-05-01 | 7 partial platform | 3.1 | 2.3 | No | Proprietary, commercial |
Enterprise Server | Borland | 6.7 | 2007-01 | 1.4 | 2.4 | 2.0 | No | Proprietary, commercial |
Geronimo | ASF | 3.0.1 | 2013-05-28 | 6 full platform | 3.0 | 2.2 | No | Free, Apache |
GlassFish | Eclipse Foundation | 7.0.19 [2] | 2024-11-01 | 10 full platform | 6.0 | 3.1 | Yes | Free, EPL, GPL + classpath exception |
JBoss Enterprise Application Platform | Red Hat | 8.0 [3] | 2024-02-05 | 10 full platform | 6.0 | 3.1 | Yes | Free, LGPL |
Jetty | Eclipse Foundation | 12.0.8 | 2024-04-03 | 10 full platform [4] | 6.0 | 3.1 | Yes | Free, Apache 2.0, EPL |
JEUS | TmaxSoft | 8 | 2013-08 | 7 full platform | 3.0 | 2.2 | No | Proprietary, commercial |
Lucee (Formerly Railo) | Lucee Association Switzerland | 5.3.2.77 | 2019-05-27 | 7 partial platform | 3.1 | 2.3 | No | Free, CDDL, GPL + classpath exception |
NetWeaver Application Server | SAP AG | 7.4 | 2013-01-11 | 5 | 2.5 | 2.1 | No | Proprietary, commercial |
Oracle Containers for J2EE | Oracle Corporation | 10.1.3.5.0 | 2009-08 | 1.4 | 2.4 | 2.0 | No | Proprietary, commercial |
Orion Application Server | IronFlare | 2.0.7 | 2006-03-09 | 1.3 | 2.3 | 1.2 | No | Proprietary, commercial |
Payara Server | Payara Services | 6.2025.1 | 2025-01-01 | 10 full platform | 6.0 | 3.1 | Yes | Free, CDDL, GPL + classpath exception |
Resin Servlet Container (open source) | Caucho Technology | 4.0.62 | 2019-05-23 | 6 Web Profile [5] | 3.0 | 2.2 | No | Free, GPL |
Resin Professional Application Server | 6 Web Profile | 3.0 | 2.2 | No | Proprietary, commercial | |||
Tomcat | ASF | 10.1.10 | 2023-06-23 | 9 partial platform | 6.0 | 3.1 | Yes | Free, Apache v2 |
TomEE | ASF | 8.0.15 | 2023-05-08 | 8 Web Profile | 4.0 | 2.3 | Yes | Free, Apache v2 |
WebLogic Server | Oracle Corporation (formerly BEA Systems) | 14.1.1.0.0 | 2020-03-30 [6] | 8 full platform | 4.0 | 2.3 | Yes | Proprietary, commercial |
IBM WebSphere Application Server | IBM | 24.0.0.5 | 2024-05-21 [7] | 10 full platform, [8] | 6.0 [9] | 3.1 [10] | Yes [11] | Proprietary, commercial |
WebSphere AS Community Edition | IBM | 3.0.0.4 | 2013-06-21 | 6 full platform | 3.0 | 2.2 | No | Proprietary, commercial |
WildFly (formerly JBoss AS) | Red Hat (formerly JBoss) | 35.0.0.Final [12] | 2025-01-09 | 10 full platform | 6.0 | 3.1 | Yes | Free, Apache v2 |
Microsoft positions their middle-tier applications and services infrastructure in the Windows Server operating system and the .NET Framework technologies in the role of an application server:
Container based application servers run each application in a container. The application can be written in any programming language.
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.
The Jakarta Transactions, one of the Jakarta EE APIs, enables distributed transactions to be done across multiple X/Open XA resources in a Java environment. JTA was a specification developed under the Java Community Process as JSR 907. JTA provides for:
The Jakarta Messaging API is a Java application programming interface (API) for message-oriented middleware. It provides generic messaging models, able to handle the producer–consumer problem, that can be used to facilitate the sending and receiving of messages between software systems. Jakarta Messaging is a part of Jakarta EE and was originally defined by a specification developed at Sun Microsystems before being guided by the Java Community Process.
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.
An application server is a server that hosts applications or software that delivers a business application through a communication protocol. For a typical web application, the application server sits behind the web servers.
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.
In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functionality.
Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems. Message-oriented middleware is in contrast to streaming-oriented middleware where data is communicated as a sequence of bytes with no explicit message boundaries. Note that streaming protocols are almost always built above protocols using discrete messages such as frames (Ethernet), datagrams (UDP), packets (IP), cells (ATM), et al.
Jakarta Connectors are a set of Java programming language tools designed for connecting application servers and enterprise information systems (EIS) as a part of enterprise application integration (EAI). While JDBC is specifically used to establish connections between Java applications and databases, JCA provides a more versatile architecture for connecting to legacy systems.
The Web Server Gateway Interface is a simple calling convention for web servers to forward requests to web applications or frameworks written in the Python programming language. The current version of WSGI, version 1.0.1, is specified in Python Enhancement Proposal (PEP) 3333.
WebSphere Application Server (WAS) is a software product that performs the role of a web application server. More specifically, it is a software framework and middleware that hosts Java-based web applications. It is the flagship product within IBM's WebSphere software suite. It was initially created by Donald F. Ferguson, who later became CTO of Software for Dell. The first version was launched in 1998. This project was an offshoot from IBM HTTP Server team starting with the Domino Go web server.
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.
Jakarta Persistence, also known as JPA is a Jakarta EE application programming interface specification that describes the management of relational data in enterprise Java applications.
Phusion Passenger is a free web server and application server with support for Ruby, Python and Node.js. It is designed to integrate into the Apache HTTP Server or the nginx web server, but also has a mode for running standalone without an external web server. Phusion Passenger supports Unix-like operating systems, and is available as a gem package, as a tarball, or as native Linux packages.
Node.js is a cross-platform, open-source JavaScript runtime environment that can run on Windows, Linux, Unix, macOS, and more. Node.js runs on the V8 JavaScript engine, and executes JavaScript code outside a web browser.
Eclipse Vert.x is a polyglot event-driven application framework that runs on the Java Virtual Machine.
Express.js, or simply Express, is a back end web application framework for building RESTful APIs with Node.js, released as free and open-source software under the MIT License. It is designed for building web applications and APIs. It has been called the de facto standard server framework for Node.js.
Enduro/X is an open-source middleware platform for distributed transaction processing. It is built on proven APIs such as X/Open group's XATMI and XA. The platform is designed for building real-time microservices based applications with a clusterization option. Enduro/X functions as an extended drop-in replacement for Oracle Tuxedo. The platform uses in-memory POSIX message queues which insures high inter-process communication throughput.
Deno is a runtime for JavaScript, TypeScript, and WebAssembly that is based on the V8 JavaScript engine and the Rust programming language. Deno was co-created by Ryan Dahl, the creator of Node.js and Bert Belder.