Preloader image

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:

TomEE version Based on Tomcat Java SE version Micro Profile version Jakarta EE version Full list of specifications versions and implementations choices

9.x

10.0.x

11

5.0

9.1

specifications versions implementations details

8.x

9.0.x

8

2.0

8.0

specifications versions implementations details

7.1.x

8.5.x

7 or 8

1.4

7.0

specifications versions implementations details

7.0.x

8.5.x

7 or 8

7.0

specifications versions 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).

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.

Tomcat TomEE WebProfile TomEE MicroProfile TomEE Plus TomEE Plume

HTTP Request processing and Response:
Jakarta Annotations, Servlet, JSP, JSTL, EL, WebSocket,
Jakarta Authentication, Security, …​

Data persistence, ORM, Web Services and more:
Jakarta CDI, DI, EJB, JPA, JTA, JSF, JSON, JAXB, …​
Jakarta RESTful Web Services (JAX-RS)

Microservices architecture:
MicroProfile Config, Health, Metrics, OpenAPI, OpenTracing, …​
MicroProfile Type-safe Rest Client

Other features:
Jakarta Authorization, Batch, Connectors, Messaging (JMS), …​
Jakarta SOAP Web Services (JAX-WS)

Jakarta Faces (JSF) implementation

MyFaces

MyFaces

MyFaces

Mojarra

Jakarta Persistence (JPA) implementation(s)

OpenJPA

OpenJPA

OpenJPA

OpenJPA, EclipseLink

Detailed list of Jakarta EE and MicroProfile specifications

Tomcat TomEE WebProfile TomEE MicroProfile TomEE Plus TomEE Plume

Jakarta Annotations

Jakarta Authentication (JASPIC)

Jakarta Debugging Support for Other Languages

Jakarta Security (Java EE Enterprise Security)

Jakarta Servlet

Jakarta Server Pages (JSP)

Jakarta Standard Tag Library (JSTL)

Jakarta Expression Language (EL)

Jakarta WebSocket

Jakarta Web Profile specifications

Jakarta Activation

Jakarta Bean Validation

Jakarta Contexts and Dependency Injection (CDI)

Jakarta Dependency Injection (@Inject)

Jakarta Enterprise Beans (EJB)

Jakarta Faces (JSF)

Jakarta Interceptors

Jakarta JSON Binding (JSON-B)

Jakarta JSON Processing (JSON-P)

Jakarta Mail (JavaMail)

Jakarta Managed Beans

Jakarta Persistence (JPA)

Jakarta RESTful Web Services (JAX-RS)

Jakarta Transactions (JTA)

Jakarta XML Binding (JAXB)

MicroProfile specifications

MicroProfile Config

MicroProfile Fault Tolerance

MicroProfile Health

MicroProfile JWT Authentication

MicroProfile Metrics

MicroProfile OpenAPI

MicroProfile OpenTracing

MicroProfile Rest Client

Jakarta EE specifications

Jakarta Authorization (JACC)

Jakarta Batch (JBatch)

Jakarta Concurrency

Jakarta Connectors

Jakarta Enterprise Web Services

Jakarta Messaging (JMS)

Jakarta SOAP with Attachments

Jakarta Web Services Metadata

Jakarta XML Web Services (JAX-WS)

Jakarta Faces (JSF) implementation

MyFaces

MyFaces

MyFaces

Mojarra

Jakarta Persistence (JPA) implementation(s)

OpenJPA

OpenJPA

OpenJPA

OpenJPA, EclipseLink