As a support company for TomEE and other projects, we get lots of questions from our clients some technical and others architectural. One that we hear from time to time is, “What is the difference between the different TomEE distributions?” This blog will answer that question.
The TomEE project has been evolving for twenty years. It has, at its foundation, always been about adding Jakarta EE Web Profile (formerly Java EE) technologies to a complete Apache Tomcat distribution. The use of Tomcat in conjunction with TomEE is explained in more detail in this blog post.
A visual guide to TomEE distributions
TomEE comes in four distributions: TomEE WebProfile, TomEE MicroProfile, TomEE+ and TomEE PluME. TomEE WebProfile targets the complete Jakarta EE Web Profile. The others do the same but add support for MicroProfile, JMS, JAX-WS, Jakarta Connectors, and to help those porting applications from Glassfish to TomEE.
Here you see that Jakarta Web Profile is the foundation of all the distributions, with each distribution adding more functionality.
The primary difference between the TomEE+ and the TomEE PluME is that TomEE PluME adds EclipseLink, and instead of using Apache MyFaces, it uses Eclipse Mojarra for JSF.
TomEE WebProfile is a targeted implementation of the Jakarta EE Web Profile. You should select this flavor of TomEE if you only need technologies defined in the Jakarta EE Web Profile and are not migrating from Eclipse Glassfish.
The TomEE WebProfile includes everything you would expect in the implementation of the Jakarta Web Profile including:
Jakarta Server Pages
Jakarta Expression Language
Jakarta Debugging Support for Other Languages
Jakarta Standard Tag Library
Jakarta Server Faces
Jakarta RESTful Web Services
Jakarta JSON Processing
Jakarta JSON Binding
|Jakarta Enterprise Beans Lite
Jakarta Bean Validation
Jakarta Managed Beans
Jakarta Contexts and Dependency Injection
Jakarta Dependency Injection
TomEE MicroProfile adds full support for MicroProfile 1.3 to provide a complete and robust platform for implementing Java microservices. If you need support for MicroProfile in addition to Jakarta EE Web Profile, then this is the solution for you.
Here are the MicroProfile specifications supported by TomEE MicroProfile:
MicroProfile Type-safe Rest Client
TomEE+ has everything in TomEE MicroProfie with the addition of three more specifications: JAX-WS, JEE Connectors, and JMS. If you are using SOAP-based web services with XML messaging or the Java Message Service, then this is the solution for you. It also provides support for the full Jakarta Connectors specification so you can plug in any Jakarta Connector you might need.
Here is a list of the APIs that are added by TomEE+:
|Java API for XML Web Services
Java EE Connector Architecture
Java Messaging Service
TomEE PluME (pronounced plume) assists organizations that are migrating from Eclipse Glassfish to the Apache TomEE project. If you are not migrating from Glassfish to TomEE, you can ignore this distribution.
TomEE PluME has everything TomEE+ offers but differs in two crucial APIs, JPA, and JSF. While the TomEE+ uses Apache MyFaces for JSF and Apache OpenJPA for JPA, the TomEE PluME uses Eclipse Mojarra for JSF and adds EclipseLink as a JPA option.
The difference between TomEE PluME and TomEE+ is important because certain aspects of configuration for JSF and JPA are not addressed by their specifications and differ depending on the implementation. TomEE PluME allows existing Glassfish applications to port to TomEE without changing the configuration of JSF or JPA components.
Here are the Eclipse libraries added to TomEE PluME:
Remember, if you are migrating from Glassfish to TomEE, you’ll want to use TomEE PluME, which is almost identical to TomEE+ except for the implementations of JSF and JPA.
If you are not migrating from Glassfish to TomEE, then you can ignore TomEE PluME. You will choose between TomEE WebProfile, TomEE MicroProfile, and TomEE +.
Regardless of the distribution of TomEE that you select, migrating between them is not difficult at all. You are either adding services you need, for example going from TomEE WebProfile to TomEE MicroProfile, or you are removing things you don’t need, for example, going from TomEE+ to TomEE WebProfile.