On Sept 10th, 2019, the Eclipse Foundation announced the release of the Jakarta EE 8 Full Platform and Web Profile specifications and related Technology Compatibility Kits (TCKs). Those specifications were fully compatible with Java EE 8 specifications. They included the same APIs and Javadoc using the same programming model. The critical difference is that the Eclipse Foundation developed the JakartaEE specifications under the Jakarta EE Specification Process and Eclipse Development Process. These are the open, community-driven successors to the Java Community Process (JCP) for Java EE.
From a namespace perspective, Jakarta EE 8 still uses the javax.*
naming. However, the Jakarta EE 9 release on Dec 8th, 2020, would introduce jakarta.*
as the namespace to replace javax.*
for Jakarta EE specifications.
Work began across the ecosystem to enable this new namespace in all implementations (including MicroProfile implementations), web servers, middleware tools, build tools, IDEs, and frameworks. Much of this work was well underway or completed by the release of JakartaEE 9.1 on May 25th, 2021, but there were still a few gaps.
This work is essentially complete with the upcoming release of Jakarta EE 10. JakartaEE developers have a wide range of options in each category, providing great choices.
This blog post outlines (at the time of writing - September 2022) the state of play for the transition. Day to day developers may also find the JavaEE to Jakarta EE 10 Recipes book helpful.
Did we get something wrong? Please let us know in the comments!
There are multiple Jakarta EE 9 and 10 implementations supporting the new jakarta.*
namespace.
Vendor / Community | Implementation / Project | Transitioned? | Version with jakarta namespace |
---|---|---|---|
Apache Software Foundation | TomEE | Yes | 9.0.0-M+ |
Eclipse Foundation | Glassfish | Yes | 6.0+ |
Fujitsu | Enterprise Application Server | In Progress | 1.1+ |
Payara | Payara | Yes | 6.2021.1.Alpha, Preview: 5.2020.5+ |
IBM | OpenLiberty | Yes | 21.0.0.12+ |
Red Hat | Wildfly | In Progress | Normal: NYI, Preview: 22+ |
The most popular web servers also now support the new jakarta.*
namespace.
Vendor / Community | Implementation / Project | Transitioned? | Version with jakarta namespace |
---|---|---|---|
Apache Software Foundation | Tomcat | Yes | 10.0+ |
Eclipse Foundation | Jetty | Yes | 11.0.0+ |
MicroProfile is a related set of specifications and APIs which utilize some of the Jakarta EE 9 and 10 specifications. Several implementations are compatible.
Vendor / Community | Implementation / Project | Transitioned? | Version with jakarta namespace |
---|---|---|---|
Apache Software Foundation | TomEE | Yes | 9.0.0-M+ |
Fujitsu | Launcher | Yes | 4.0+ |
IBM | OpenLiberty | Yes | 22.0.0.1+ |
Oracle | Helidon | Yes | 3.0.0 |
Payara | Payara | Yes | Payara 6.2022.1.Alpha2 |
PiranhaCloud | Piranha | Yes | 20.6.1 |
Red Hat | Quarkus | Partly | 2.7.1+ |
Middleware tools is a broad term but include data store and messaging libraries that rely on Jakarta EE specifications.
Vendor / Community | Implementation / Project | Transitioned? | Version with jakarta namespace |
---|---|---|---|
Apache Software Foundation | ActiveMQ Artemis | Yes | 2.17.0+ |
Oracle | Coherence Community Edition | In Process | 22.09 |
The major IDEs have steadily added 1st class support for jakarta.* namespace.
Vendor / Community | Implementation / Project | Transitioned? | Notes |
---|---|---|---|
Apache Software Foundation | Netbeans | Partly | Supports JakartaEE as any 3rd party lib you add to a Java project but no native plugins or specialized support |
Eclipse Foundation | Eclipse IDE | Partly | Supports JakartaEE as any 3rd party lib you add to a Java project but no native plugins or specialized support |
Jetbrains | IntelliJ | Yes | Native support for creating Jakarta EE projects, plugins for running. Migration tool for the namespace switch. |
Microsoft | VS Code | Partly | Supports JakartaEE as any 3rd party lib you add to a Java project, but no native plugins or specialized support |
Maven, Gradle, and Ant have all added functionality to support the new namespace, especially concerning the various deployment plugins.
Vendor / Community | Implementation / Project | Transitioned? | Version with jakarta namespace |
---|---|---|---|
Apache Software Foundation | Ant | Partly | 1.10.12+ |
Apache Software Foundation | Maven | Partly | 3.6.5+ |
Gradleware | Gradle | Partly | 7.4+ |
Several popular frameworks assist in building Jakarta EE applications.
Vendor / Community | Implementation / Project | Transitioned? | version with jakarta namespace |
---|---|---|---|
Eclipse Foundation | Jersey | Yes | 3.0.0+ |
Object Computing | Micronaut | Partly | 3.0.0+ |
Red Hat | Hibernate | Yes | 6.0.0-Beta3 |
VMware | Spring | Yes | 6.0.0-M1 |
Testing is vitally essential, and alongside the core JUnit and TestNG libs is the popular Arquillian framework.
Vendor / Community | Implementation / Project | Transitioned? | Version with jakarta namespace |
---|---|---|---|
Red Hat | Arquillian | Yes | 1.7.0.Alpha10 |
The ecosystem has worked incredibly well to support the transition from javax.*
to jakarta.*
. The day-to-day Java developer can be confident that they have the modern successor to the Java EE specifications and the framework and tooling support they previously enjoyed.