What’s New in Jakarta EE 10?

Jakarta EE

Jakarta EE 10 will be released on September 22! It’s almost here…

While the previous releases of Jakarta EE have been focussed on the much-feared namespace change and updating everything with support for Java 11, this is the first major release of Jakarta EE to start introducing new features for developers to use. I’ll cover some of them here.

Java 11 & 17

While Jakarta EE 9.1 retained support for Java 8 but could also be used with Java 11, Jakarta EE now requires Java 11 as the minimum. Java 17 support is also available

Which Specifications Changed?

This is no minor release! For this release of Jakarta EE there are almost just as many major updates as there are minor (12 minor, 11 major). The following specifications have all been updated:

  • Activation 2.1 (minor release)
  • Annotations 2.1 (minor release)
  • Authentication 3.0 (major release)
  • Authorization 2.1 (minor release)
  • Batch 2.1 (minor release)
  • Concurrency 3.0 (major release)
  • Connectors 2.1 (minor release)
  • Contexts and Dependency Injection 4.0 (major release)
  • Expression Language 5.0 (major release)
  • Interceptors 2.1 (minor release)
  • JSON Binding 3.0 (major release)
  • JSON Processing 2.1 (minor release)
  • Mail 2.1 (minor release)
  • Messaging 3.1 (minor release)
  • Persistence 3.1 (minor release)
  • RESTful Web Services 3.1 (minor release)
  • Security 3.0 (major release)
  • Server Faces 4.0 (major release)
  • Server Pages 3.1 (minor release)
  • Servlet 6.0 (major release)
  • SOAP with Attachments 3.0 (major release)
  • Standard Tag Library 3.0 (major release)
  • WebSocket 2.1 (minor release)
  • XML Binding 4.0 (major release)
  • XML Web Services 4.0 (major release)

I’ll run through some of the changes in the major releases:

Authentication

Authentication 3.0 now allows a ServerAuthModule the ability to programmatically interact with other specifications, for example obtaining references to data sources, Jakarta Enterprise Beans, CDI Beans, etc.

A new key, Jakarta.servlet.http.isAuthenticationRequest, has also been added to allow modules to distinguish themselves at different points in the lifecycle of a request.

Numerous issues have also been resolved or delivered with this release, such as the addition of default methods to ServerAuth & ClientAuth, new methods for adding or removing a single server auth module, and the API has been updated with generics.

Concurrency

One of the biggest changes you may notice with the new version of Jakarta Concurrency is that it has moved! It is now included in Web Profile distributions of Jakarta EE.

Along with this move, Concurrency 3.0 also brings with it a number of new features:

  • Asynchronous methods
  • Context-aware completion stages and completable futures
  • Context propagation to parallel streams operations
  • Modernization of the Trigger mechanism and Cron support
  • Propagation of third-party context types
  • Resource definition annotations

CDI

CDI has undergone a number of changes for this release of Jakarta EE, arguably the two most prominent of which being the introduction of CDI Lite with its attendant Build Compatible Extensions, and the change in the interpretation of an empty beans.xml from “all” to “annotated”. The latter change is one you may notice by your existing applications suddenly not working so be sure to account for it when upgrading. We have a full fact sheet on changes in this specification for Jakarta EE 10, available to download for free here.

Expression Language

While primarily a major release due to the removal of a long-deprecated method typo (so long isParmetersProvided!), a number of additional enhancements have also been included in this release!

  • The BeanELResolver now considers default method implementations when searching for property getters & setters.
  • LambdaExpressions can now be coerced to a functional interface method invocation.
  • Arrays can also now be coerced.
  • The API has been updated with Generics.
  • The MethodReference class can now be used to access details of the method to which a MethodExpression resolves.

JSON Binding

The backwards compatible change for this release is the dropping of optional @JsonbCreator parameters. It’s not just removals though, this release brings in deserialization of null values to JsonValue.NULL_VALUE, support for polymorphic types, and support for using JsonbTypeDeserializer & JsonbTypeAdapter as parameter or type annotations.

Security

One of the headline features for this release of Securityis support forOpenID Connectas an authentication mechanism. There are numerous additional changes to this however, including but not limited to new wrappers for HttpAuthenticationMechanism and IdentityStore, allowing a user to define custom behaviour.

Server Faces

Faces(no longer JSF!) gets a pretty hefty major release for Jakarta EE 10, bringing in many features. The headline features are a new API to programmatically create Facelets, automatic extensionless mapping, custom cookie attributes, and a smorgasbord of new attributes and tags.

There was also some tidying up done, removing a number of deprecated methods and classes (e.g. ResourceResolver).

Standard Tag Library

The most prevalent change here is a change in the old xmlns.jcp.org URLs to URNs – make sure you don’t fall afoul of any copy-paste errors!

SOAP with Attachments

This release drops all references and support for JAXM (Java API for XML Messaging), meaning you can no longer look up a provider through a jaxm.properties file. Other enhancements have also been included, such as SOAPConnection now implementing AutoClosable (try-with-resources!)

XML Binding

With XML Binding 4.0 support for JAXB 1.0 has been dropped – I hope none of you were still relying on that! Constraints on using java.desktop/java.beans.Introspector have also been removed, and implementation lookup has been changed.

XML Web Services

The Jakarta Web Services Metadata specification has been folded into this specification as a part of this release, so be aware that any standalone artefacts for metadata will no longer be updated and published.

Core Profile

Core Profile is the new “distribution” specification being delivered with Jakarta EE 10, providing an even more cut down version of specifications than Web Profile, intended for microservices and ahead-of-time compilation.

Core Profile contains the following specifications:

  • Concurrency 3.0
  • Dependency Injection 2.0
  • Contexts and Dependency Injection Lite 4.0 – emphasis on the Lite!
  • RESTful Web Services 3.1
  • JSON Binding 3.0
  • JSON Processing 2.1

Try It Out!

This was just a high-level overview of some of the changes – there are far more than this present!

As I’m sure many of us have been waiting for, Payara 6 is getting some pre-releases that support Jakarta EE 10 to allow you to try it out (as well as the other changes we’ve been working in!). Reading about the changes is all well and good, but I recommend you download Payara Server and start testing out the new changes to really get a good grasp of what’s new.

We have also developed a full fact sheet on Jakarta EE 10 with more detail on what some of the changes mean, please download here:

It covers the changes mentioned with more context as to WHY they were added and how this fits into the overall journey of Jakarta EE under the Eclipse Foundation

 

Comments (0)

Post a comment

Your email address will not be published. Required fields are marked *

Payara needs the contact information you provide to us to contact you about our products and services. You may unsubscribe from these communications at any time. For information on how to unsubscribe, as well as our privacy practices and commitment to protecting your privacy, please review our Legal & Privacy Policy.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Related Posts

Docker logo 4 minutes
Community

Level Up Your Jakarta EE Apps with Payara 7 and New Docker Images

We’re excited to share major updates around the Docker image story for the Payara Platform Community, aligned with our […]

Timeline showing Payara Platform Enterprise 4, 5, and 6 support phases (Full, Extended, Lifetime) from 2023–2033, along with JDK 8, 11, 17, and 21 support periods and end-of-life markers. 4 minutes
Thought Leadership

Understanding the Payara Platform Enterprise Software Lifecycle: How We Support Long-Term Stability 

Keeping an application server running smoothly isn’t so much about new features, but more about predictability and consistency. Software […]

Patrik Dudits presenting at Devoxx Belgium 2025 5 minutes
Cloud & Microservices

Devoxx BE 2025: It Only Starts with a Container & How Abstraction Becomes Reality 

At Devoxx Belgium 2025, I was able to talk about what happens after you build your container. In theory, […]