blob: 22349ab93c8f4ef8d7abc60907dc0571059bacc8 [file] [log] [blame]
= Comparison
:index-group: General Information
:jbake-date: 2018-12-05
:jbake-type: page
:jbake-status: published
:icons: font
:y: icon:check[role="green"]
== [[versions]] Main differences between versions
Apache TomEE is an open source software implementation of the Jakarta EE (formally Java EE) technologies. +
Different versions of Apache TomEE are available for different versions of the specifications. +
The mapping between the specifications and the respective Apache TomEE versions is:
[options="header",cols="5*1,2"]
|===
|TomEE version|Based on Tomcat|Java{nbsp}SE version|Micro{nbsp}Profile version|Jakarta{nbsp}EE version|Full list of specs versions and implementations choices
//|10.x|10.1.x|11|TBA|10.0|xref:tomee-10.0/docs/comparison.adoc#specifications[specifications versions] tomee-10.0/docs/comparison.adoc#implementations[implementations details]
| 9.x|10.0.x|11|5.0| 9.1|xref:tomee-9.0/docs/comparison.adoc#specifications[specifications versions] xref:tomee-9.0/docs/comparison.adoc#implementations[implementations details]
| 8.x| 9.0.x| 8|2.0| 8.0|xref:tomee-8.0/docs/comparison.adoc#specifications[specifications versions] xref:tomee-8.0/docs/comparison.adoc#implementations[implementations details]
| 7.x| 8.5.x|7 or 8|1.4| 7.0|
specifications versions implementations details (WIP)
//xref:tomee-7.1/docs/comparison.adoc#specifications[specifications versions] xref:tomee-7.1/docs/comparison.adoc#implementations[implementations details]
|===
Jakarta EE 9.x introduces breaking changes (relocation from javax.* to jakarta.* namespace). +
When in doubt choose Jakarta EE 8 and TomEE 8.x
Tomcat supports only a subset of Jakarta EE while TomEE is fully compliant (see tables below).
== [[flavors]] Synthesis of differences between flavors
Apache TomEE has four distributions, each supporting a slightly different set of technologies and aimed to give you a choice in what you want included out-of-the-box. When in doubt, choose Apache TomEE Plume.
[options="header",cols="5,5*^1"]
|===
||Tomcat|TomEE WebProfile|TomEE MicroProfile|TomEE Plus|TomEE Plume
|*HTTP Request processing and Response:* +
Jakarta Annotations, Servlet, JSP, JSTL, EL, WebSocket, +
Jakarta Authentication, Security, ...|{y}|{y}|{y}|{y}|{y}
|*Data persistence, ORM, Web Services and more:* +
Jakarta CDI, DI, EJB, JPA, JTA, JSF, JSON, JAXB, ... +
Jakarta RESTful Web Services (JAX-RS)||{y}|{y}|{y}|{y}
|*Microservices architecture:* +
MicroProfile Config, Health, Metrics, OpenAPI, OpenTracing, ... +
MicroProfile Type-safe Rest Client|||{y}|{y}|{y}
|*Other features:* +
Jakarta Authorization, Batch, Connectors, Messaging (JMS), ... +
Jakarta SOAP Web Services (JAX-WS)||||{y}|{y}
|Jakarta Faces (JSF) implementation||MyFaces|MyFaces|MyFaces|*Mojarra*
|Jakarta Persistence (JPA) implementation(s)||OpenJPA|OpenJPA|OpenJPA|OpenJPA, *EclipseLink*
|===
== [[specifications]] Detailed list of Jakarta EE and MicroProfile specifications
[options="header",cols="5,5*^1"]
|===
||Tomcat|TomEE WebProfile|TomEE MicroProfile|TomEE Plus|TomEE Plume
// TOMCAT
|https://jakarta.ee/specifications/annotations/[Jakarta Annotations^]|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/authentication/[Jakarta Authentication^] (JASPIC)|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/debugging/[Jakarta Debugging Support for Other Languages^]|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/security/[Jakarta Security^] (Java EE Enterprise Security)|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/servlet/[Jakarta Servlet^]|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/pages/[Jakarta Server Pages^] (JSP)|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/tags/[Jakarta Standard Tag Library^] (JSTL)|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/expression-language/[Jakarta Expression Language^] (EL)|{y}|{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/websocket/[Jakarta WebSocket^]|{y}|{y}|{y}|{y}|{y}
// WEB PROFILE
|https://jakarta.ee/specifications/webprofile/[Jakarta Web Profile specifications^]||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/activation/[Jakarta Activation^]||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/bean-validation/[Jakarta Bean Validation^]||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/cdi/[Jakarta Contexts and Dependency Injection^] (CDI)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/dependency-injection/[Jakarta Dependency Injection^] (@Inject)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/enterprise-beans/[Jakarta Enterprise Beans^] (EJB)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/faces/[Jakarta Faces^] (JSF)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/interceptors/[Jakarta Interceptors^]||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/jsonb/[Jakarta JSON Binding^] (JSON-B)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/jsonp/[Jakarta JSON Processing^] (JSON-P)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/mail/[Jakarta Mail^] (JavaMail)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/managedbeans/[Jakarta Managed Beans^]||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/persistence/[Jakarta Persistence^] (JPA)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/restful-ws/[Jakarta RESTful Web Services^] (JAX-RS)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/transactions/[Jakarta Transactions^] (JTA)||{y}|{y}|{y}|{y}
|https://jakarta.ee/specifications/xml-binding/[Jakarta XML Binding^] (JAXB)||{y}|{y}|{y}|{y}
// MICRO PROFILE
|https://microprofile.io/[MicroProfile specifications^]|||{y}|{y}|{y}
|MicroProfile Config|||{y}|{y}|{y}
|MicroProfile Fault Tolerance|||{y}|{y}|{y}
|MicroProfile Health|||{y}|{y}|{y}
|MicroProfile JWT Authentication|||{y}|{y}|{y}
|MicroProfile Metrics|||{y}|{y}|{y}
|MicroProfile OpenAPI|||{y}|{y}|{y}
|MicroProfile OpenTracing|||{y}|{y}|{y}
|MicroProfile Rest Client|||{y}|{y}|{y}
// FULL EE
|https://jakarta.ee/specifications/[Jakarta EE specifications^]||||{y}|{y}
|https://jakarta.ee/specifications/authorization/[Jakarta Authorization^] (JACC)||||{y}|{y}
|https://jakarta.ee/specifications/batch/[Jakarta Batch^] (JBatch)||||{y}|{y}
|https://jakarta.ee/specifications/concurrency/[Jakarta Concurrency^]||||{y}|{y}
|https://jakarta.ee/specifications/connectors/[Jakarta Connectors^]||||{y}|{y}
|https://jakarta.ee/specifications/enterprise-ws/[Jakarta Enterprise Web Services^]||||{y}|{y}
|https://jakarta.ee/specifications/messaging/[Jakarta Messaging^] (JMS)||||{y}|{y}
|https://jakarta.ee/specifications/soap-attachments/[Jakarta SOAP with Attachments^]||||{y}|{y}
|https://jakarta.ee/specifications/web-services-metadata/[Jakarta Web Services Metadata^]||||{y}|{y}
|https://jakarta.ee/specifications/xml-web-services/[Jakarta XML Web Services^] (JAX-WS)||||{y}|{y}
// IMPLEMENTATIONS
|Jakarta Faces (JSF) implementation||MyFaces|MyFaces|MyFaces|*Mojarra*
|Jakarta Persistence (JPA) implementation(s)||OpenJPA|OpenJPA|OpenJPA|OpenJPA, *EclipseLink*
|===
////
// implementations table moved out to version-specific documentation
== [[implementations]] Implementations of Jakarta EE and MicroProfile features in TomEE
[options="header",cols="1,1"]
|===
|Specifications|Implementations included by TomEE
|Jakarta Annotations, Servlet, Server Pages (JSP), +
Jakarta Expression Language (EL), WebSocket, +
Jakarta Authentication (JASPIC), Security, ...|https://tomcat.apache.org/[Apache Tomcat^]
|Jakarta{nbsp}Standard{nbsp}Tag{nbsp}Library{nbsp}(JSTL)|https://tomcat.apache.org/taglibs.html[Apache Standard Taglib Implementation^]
|Jakarta Faces (JSF)|https://myfaces.apache.org/[Apache MyFaces^] *(in all TomEE flavors except Plume)* +
https://projects.eclipse.org/projects/ee4j.mojarra[Eclipse GlassFish Mojarra^] *(in TomEE Plume only)*
|Jakarta Bean Validation|https://bval.apache.org/[Apache BVal^] *(in TomEE 8.x and earlier)* +
https://hibernate.org/validator/[Hibernate Validator^] *(in TomEE 9.x and later)*
|Jakarta Contexts and Dependency Injection (CDI)|https://openwebbeans.apache.org/[Apache OpenWebBeans^]
|Jakarta Enterprise Beans (EJB)|https://openejb.apache.org/[Apache OpenEJB^]
|Jakarta Persistence (JPA)|https://openjpa.apache.org/[Apache OpenJPA^] (in all TomEE flavors) +
https://www.eclipse.org/eclipselink/[EclipseLink^] *(in TomEE Plume only)*
|Jakarta Transactions (JTA)|Apache{nbsp}Geronimo{nbsp}Transaction{nbsp}Manager
|Jakarta Mail (JavaMail)|Apache Geronimo JavaMail
|MicroProfile|Apache Geronimo MicroProfile *(in TomEE 8.x and earlier)* +
https://smallrye.io/[SmallRye MicroProfile^] *(in TomEE 9.x and later)*
|Jakarta JSON Binding (JSON-B), +
Jakarta JSON Processing (JSON-P)|https://github.com/FasterXML/jackson[Jackson^] +
https://johnzon.apache.org/[Apache Johnzon^]
|Jakarta XML Binding (JAXB)|https://projects.eclipse.org/projects/ee4j.jaxb-impl[Eclipse GlassFish JAXB Runtime^]
|Web Services|https://cxf.apache.org/[Apache CXF Runtime^]
|Jakarta Batch (JBatch)|https://geronimo.apache.org/batchee/[Apache BatchEE^]
|Jakarta Messaging (JMS)|https://activemq.apache.org/[Apache ActiveMQ^]
|===
In bold : Implementations that differ between flavors or between versions
////