| = Comparison |
| :index-group: General Information |
| :jbake-date: 2018-12-05 |
| :jbake-type: page |
| :jbake-status: published |
| :icons: font |
| :y: icon:check[role="green"] |
| :n: icon:times[role="red"] |
| |
| == [[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 specifications 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.1.x| 8.5.x|7 or 8|1.4| 7.0|xref:tomee-7.1/docs/comparison.adoc#specifications[specifications versions] xref:tomee-7.1/docs/comparison.adoc#implementations[implementations details] |
| | 7.0.x| 8.5.x|7 or 8|{n}| 7.0|xref:tomee-7.0/docs/comparison.adoc#specifications[specifications versions] xref:tomee-7.0/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="7,5*^0"] |
| |=== |
| ||Tomcat|TomEE WebProfile|TomEE MicroProfile|TomEE Plus|TomEE Plume |
| |*HTTP Request processing and Response:* + |
| Jakarta Servlet, Server Pages (JSP), Expression Language (EL), + |
| Annotations, Authentication (JASPIC), WebSocket, ... |{y}|{y}|{y}|{y}|{y} |
| |*Data Persistence (ORM), Web Services and more:* + |
| Enterprise Beans (EJB), Contexts and Dependency Injection (CDI), |
| Data Persistence (JPA), Standard Tag Library (JSTL), Faces (JSF), |
| Transactions (JTA), RESTful Web Services (JAX-RS, JSON, JAXB), ... ||{y}|{y}|{y}|{y} |
| |*Microservices architecture:* + |
| MicroProfile Config, Fault Tolerance, Health, Metrics, OpenAPI, OpenTracing, |
| Type-safe Rest Client, ...|||{y}|{y}|{y} |
| |*Other features:* + |
| Jakarta Authorization (JACC), Batch, Concurrency, Connectors, + |
| Messaging (JMS), SOAP Web Services (JAX-WS, JWS, SAAJ), ... ||||{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/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/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/debugging/[Jakarta Debugging Support for Other Languages^]||{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/security/[Jakarta Security^] (Enterprise Security)||{y}|{y}|{y}|{y} |
| |https://jakarta.ee/specifications/tags/[Jakarta Standard Tag Library^] (JSTL)||{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^] (SAAJ)||||{y}|{y} |
| |https://jakarta.ee/specifications/web-services-metadata/[Jakarta Web Services Metadata^] (JWS)||||{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]] Implementations of Jakarta EE and MicroProfile features in TomEE |
| |
| [options="header",cols="1,1"] |
| |=== |
| |Specifications|Implementations included by TomEE |
| |Jakarta Servlet, Server Pages (JSP), Expression Language (EL), + |
| Jakarta Annotations, Authentication (JASPIC), WebSocket, ... | |
| 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 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 7.1.x and 8.x)* + |
| https://smallrye.io/[SmallRye MicroProfile^] *(in TomEE 9.x and later)* |
| |Jakarta JSON Binding (JSON-B), + |
| Jakarta JSON Processing (JSON-P)| |
| https://johnzon.apache.org/[Apache Johnzon^] |
| |Jakarta XML Binding (JAXB)|https://projects.eclipse.org/projects/ee4j.jaxb-impl[Eclipse Implementation of JAXB^] |
| |Web Services|https://cxf.apache.org/[Apache CXF^] |
| |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 |