Introduction
Jakarta EE 11, scheduled for a GA released in the third quarter of 2024, will include 16 updated specifications as listed in Table 1:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Table 1: The list of specifications that have submitted updates for Jakarta EE 11
All of these specifications have recently passed their respective reviews and the Jakarta EE Specification Committee is currently working on finalizing the TCK and “wrapping up the changes needed in the Jakarta EE Platform, Web Profile, and Core Profile specifications” as described by Ivar Grimstad, Jakarta EE Developer Advocate at the Eclipse Foundation.
Jakarta EE Platform
The Jakarta EE Platform defines a standard platform for hosting all Jakarta EE applications. It is designed for developers who require the full set of Jakarta EE specifications for developing enterprise applications. The list of specifications under the Jakarta EE Platform are shown in Figure 2.
Figure 2: The specifications in the Jakarta EE Platform
Jakarta EE Web Profile
The Jakarta EE Web Profile defines a subset of the Jakarta EE Platform that contains web technologies specifically targeted for developing web applications. The list of specifications under the Jakarta EE Web Profile Platform are shown in Figure 3.
Figure 3: The specifications in the Jakarta EE Web Profile
Jakarta Core Profile
That Jakarta EE Core profile defines a subset of the Jakarta EE Platform specifications targeting smaller runtimes suitable for microservices and ahead-of-time compilation. It is focused on providing a minimal basis for cloud native runtimes, including runtimes that support build time applications. This profile was introduced in Jakarta EE 10. The list of specifications under the Jakarta EE Core Profile are shown in Figure 4.
Figure 4: The specifications in the Jakarta EE Core Profile
Updated Specifications
Let’s dive into some of these updated specifications with a brief description, new features for Jakarta EE 11 and their compatible implementations. References to the SecurityManager class, deprecated in JDK 17, have been removed in the Jakarta Authentication, Jakarta Authorization, Jakarta Expression Language, Jakarta Faces, Jakarta Security, Jakarta Servlet and Jakarta WebSocket specifications. Also, there was also a removal of the deprecated @ManagedBean annotation in the Jakarta Annotations and Jakarta RESTful Web Services specifications.
Jakarta Annotations 3.0
The Jakarta Annotations specification defines a collection of annotations representing common semantic concepts that enable a declarative style of programming that applies across a variety of Java technologies.
There are no new features in version 3.0. The only change is the removal of the aforementioned deprecated @ManagedBean annotation.
The compatible implementation is GlassFish 8.0.0-M3.
Jakarta Concurrency 3.1
The Jakarta Concurrency specification provides a mechanism for using concurrency from application components without compromising container integrity while still preserving the fundamental benefits of the Jakarta EE platform.
New features in version 3.1 include:
- Integration with JEP 444, Virtual Threads, delivered in JDK 22.
- Support for the Java Flow class and the MicroProfile Reactive Streams Operators and MicroProfile Context Propagation specifications.
- A new @Schedule annotation that replaces the original annotation defined in the now-retired Jakarta Enterprise Beans specification.
- Evolve to be more CDI-centric by adding the ability to inject default resource implementations of the ManagedExecutorService and ContextService interfaces.
The compatible implementation is Open Liberty 24.0.0.6-beta.
Jakarta Contexts and Dependency Injection 4.1
The Jakarta Contexts and Dependency Injection (CDI) specification specifies a means for obtaining objects in such a way to maximise reusability, testability and maintainability as compared to traditional approaches such as constructors, factories, and service locators like the Java Naming and Directory Interface (JNDI).
New features in version 4.1 include:
- Support for the Jakarta Annotations @Priority annotation on producers.
The compatible implementation is Weld 6.0.0.Beta1.
Jakarta Data 1.0
The Jakarta Data specification provides an API that allows easy access to database technologies. A Java developer can split the persistence from the model with several features, such as the ability to compose custom query methods on a Repository interface where the framework will implement it.
Jakarta Data, introduced in the summer of 2022, is a new specification for the Jakarta EE 11 Platform and Web Profile.
New features in version 1.0 include:
- Support for CDI Extensions.
- A new BasicRepository interface.
- New annotations, @Insert, @Update, @Delete and @Save.
- A new Jakarta Data Query Language that complements the Jakarta Persistence Query Language defined in the Jakarta Persistence specification.
The compatible implementations are Hibernate ORM 6.6.0.Final and Open Liberty 24.0.0.6.
Jakarta Persistence 3.2
The Jakarta Persistence specification defines a standard for the management of persistence and object/relational mapping in a Java environment.
New features in version 3.2 include:
- Support for Java record types as embeddable classes.
- Numerous new methods added to classes/interfaces such as: CriteriaQuery, EntityManager, PersistenceUnitUtil and Metamodel.
- A migration to the java.time API and deprecate the use of: the Java Calendar, java.util.Date, java.sql.Date, Time and Timestamp classes; the Temporal interface; and the Jakarta Persistence @MapKeyTemporal annotation and TemporalType enum class in new applications. Rationale behind this may be found in this blog post by Gavin King, Senior Distinguished Engineer at IBM and Creator of Hibernate.
The compatible implementations are Hibernate ORM 7.0.0.Alpha2 and EclipseLink 5.0.0-B02.
Jakarta Security 4.0
The Jakarta Security specification defines a standard for creating secure Jakarta EE applications in modern application paradigms.
New features in version 4.0 include:
- A new API that supports a user choice of authentication mechanism.
- Qualifiers for built-in authentication mechanisms.
- A new in-memory identity store.
The new MicroProfile JWT Bridge specification, still a work in progress, will ultimately enable Jakarta Security applications to build requirements and seamless integrations with the MicroProfile JWT Authentication specification to provide a standard JWT authentication mechanism.
The compatible implementations are GlassFish 8.0.0-M6 and Eclipse Soteria 4.0.0.
Jakarta Validation 3.1
Formerly known as Jakarta Bean Validation, the Jakarta Validation specification provides an object level constraint declaration and validation facility as well as a constraint metadata repository and query API. It also offers method and constructor validation facilities to ensure constraints on their parameters and return values.
New features in version 3.1 include:
- Support for Java records.
The compatible implementation is Hibernate Validator 8.0.1.Final.
Demo Applications
Several Jakarta EE demo applications, including the ones that have been highlighted here, are available in this GitHub repository. Please note that this repository will continually be updated to include more examples and update dependencies as necessary. Most of the example applications can be deployed to the Payara Platform and Payara Cloud.
Conclusion
Jakarta EE has now evolved well beyond the era of Java EE thanks to the ecosystem being open source, the emergence of new specifications, and the innovations demonstrated in the specifications. The Java community plays a major role for the continued success of Jakarta EE. You can learn more about Jakarta EE in this comprehensive tutorial.