Jakarta EE vs Java EE vs EE4j

I guess you probably heard about Jakarta EE.  Java EE, which is a major platform for mission-critical enterprise applications,  has been donated by Oracle to the Eclipse Foundation and re-branded as Jakarta EE. Admitedly, in the last 10 years, almost all work from Oracle on Java EE has stopped, probably beacuse Oracle wasn’t unable to monetize on the Java EE platform.

Now, under the aegis of the Eclipse Foundation, JEE has been renamed to Jakarta EE.
What is Jakarta EE in a nutshell ? as said in their manifest, it is a platform to accelerate business application development for a cloud-native world, leading software vendors are collaborating to move Java EE technologies to the Eclipse Foundation where, as we said, they will evolve under the Jakarta EE brand.

The main question: what is the difference between Jakarta EE and Java EE ‘

Jakarta EE won’t be a replacement for Java EE: initially Jakarta EE is the exact equivalent to the Java EE 8 platform. All of the specifications, reference implementations (RIs), and technology compatibility kits (TCKs) that comprised Java EE 8 will be transferred to the Eclipse Foundation.

Which projects will be initially part of the Jakarta EE ?

  • GlassFish, the application server that has served as a reference implementation of enterprise Java.
  • ORB, for source code and tests for the CORBA ORB (Object Request Broker) used in GlassFish.
  • Jakarta EE Platform, for producing the platform specification and serving as an umbrella specification over Jakarta EE specifications.
  • Jakarta EE TCK (Technology Compatibility Kit), for testing Jakarta EE implementations for compliance with the platform’s specification.
  • EclipseLink, for a persistence solution to read and write objects to data sources, including relational databases and XML.
  • The Grizzly New I/O API (NIO) framework, for writing scalable servers.
  • A Project for JAXB
  • A Project for JAX-RS (Java API for RESTful Web Services specification) including the Jersey REST framework.
  • A Project for JAX-WS Web Services including Metro, a web services stack.
  • A Project for Enterprise Security, for providing capabilities such as authentication, authorization, data integrity, and transport security.
  • A Project for Servlet, JSP and JSTL API.
  • A Project for JCA (Jakarta EE Connector Architecture)
  • A Project for JMS (Java Message Service), for a middleware API for sending messages between clients including OpenMQ, a message-oriented middleware platform.
  • A project for JSF, including Mojarra, an implementation of JavaServer Faces, for web UI development.
  • A Project for EJB (Enterprise JavaBeans)
  • A Project for JavaMail, including the JavaMail API and a framework for building mail and messaging applications.
  • A Project for Common Annotations, for common semantic concepts.
  • A Project for Expression Language, for enabling webpages to communicate with application logic in the form of managed beans.
  • A Project for Concurrency Utilities, for an API to use concurrency from application components without compromising container integrity.
  • A Project for JSON Processing and JSON-B, for an API to process JSON documents.
  • A Project for JTA (Java Transaction API), for specifying interfaces between a transaction manager and parties involved in a distributed transaction system.
  • A Project for JPA (Java Persistence API), for managing persistence and object-relational mapping in Java environments including EclipseLink.
  • A Project for WebSocket, for an API to integrate Websockets into applications including Tyrus as WebSocket.

The main difference between Jakarta EE and Java EE will be the governance model. Jakarta EE will be inherently community-based, multi-vendor, and open to contribution by the enterprise consumers of these technologies. In the past, the Java Community Process (JCP) has done a good job at integrating the community it serves by being more open and transparent. However, it is something ultimately controlled by Oracle, and its intellectual property rules gave the Spec Lead a distinct advantage relative to the other competitors.

Another new name which is often mentioned with Jakarta EE is EE4J which stands for Eclipse Enterprise for Java.
The Eclipse Enterprise for Java (EE4J) top-level project and its Project Management Committee (PMC) is the place where the Jakarta EE Specs, APIs, TCKs, and most of the reference implementations (e.g. Eclipse Glassfish) are developed. As such, EE4J is basically an open source initiative, rather than a brand.

The purpose of the Eclipse Enterprise for Java (EE4J) initiative is to create standard APIs, implementations of those APIs, and technology compatibility kits for Java runtimes that enable development, deployment, and management of server-side and cloud-native applications.  

You can stay tuned to what’s happening in the Jakarta EE Project by checking its home: https://jakarta.ee/