Wednesday, July 31, 2024 - 07:00
  • Share this article:

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:

  • Jakarta Annotations 3.0
  • Jakarta Interceptors 2.2
  • Jakarta Authentication 3.1
  • Jakarta Pages 4.0
  • Jakarta Authorization 3.0
  • Jakarta Persistence 3.2
  • Jakarta Concurrency 3.1
  • Jakarta RESTful Web Services 4.0
  • Jakarta Contexts and Dependency Injection 4.1
  • Jakarta Security 4.0
  • Jakarta Data 1.0
  • Jakarta Servlet 6.1
  • Jakarta Expression Language 6.0
  • Jakarta Validation 3.1
  • Jakarta Faces 4.1
  • Jakarta WebSocket 2.2

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:

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:

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:

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.

About the Author

Michael Redlich

Michael Redlich

Michael Redlich is the lead Java editor at InfoQ, the founder and co-director of the Garden State Java User Group, a contract developer advocate and technical writer at Payara, and a member of the Jakarta EE Ambassadors leadership council.