Jakarta EE 10 - A New Era For Java On The Cloud
Written by Nikos Vaggalis   
Friday, 23 September 2022

After a lot of iterations and false starts in terms of dates, Jakarta EE 10 is finally here and primarily focused on the Cloud and microservices.

Jakarta EE finds itself mostly used in an Enterprise setting. That property is embodied in its name after all - EE for Enterprise Edition. Born in 2017 out of Java EE when Oracle contributed it to the Eclipse Foundation, it was subsequently relaunched as Jakarta EE as well as open-sourced. What it essentially represents, is Java's ability of modernizing, but at the same time keeping ties with the past - a quality highly sought after by those enterprise environments.

At its core Jakarta EE is a both a framework and a collection of APIs mainly for developing Web services as well as enabling interoperability between distributed systems. Its versatility lies in that, while you can use it in building microservices, you can also use it in developing monoliths.

In fact, Jakarta EE underpins many such infrastructure technologies:

Apache Tomcat implements four Jakarta EE specifications — Jakarta Servlet, Jakarta Standard Tag Library, Jakarta WebSocket, and Jakarta Authentication.

Spring Boot embeds Apache Tomcat, Eclipse Jetty, or Undertow as a runtime.

Eclipse Jetty implements the Jakarta Servlet, Jakarta Server Pages, and Jakarta WebSocket specifications. 

MicroProfile implements four Jakarta EE specifications – Jakarta RESTful Web Services, Jakarta Contexts and Dependency Injection, Jakarta JSON Binding, and Jakarta JSON Processing.

Jakarta EE version 10 is going to be by far the most important update to enterprise Java in the last decade. Last year's Eclipse Foundation's 2021 Jakarta EE Survey revealed the trend of Jakarta departing from the old model of monolithic applications and transitioning to the Cloud, meaning that it facilitates enterprises taking that step forward without having to dump their existing infrastructure. Version 10 turns that into reality, bringing Java up to par with the cloud native era of microservices and containers.

A profile is a configuration of the Jakarta EE platform targeted at a specific class of applications. Until now Jakarta EE had two profiles - Full and Web. The Web Profile comprises of a set of specifications focused on typical Web Applications involving components such as REST, Servlet, JSON, JPA, Security, Faces. The Full profile comprises of a set of specifications focused on WebServices, Messaging, EJB and more.

For the purposes of the Cloud, a new profile is now being introduced, the Core Profile. It is a profile specifically aimed at lightweight runtimes that are optimized for running cloud-native Java Microservices with a focus on enabling implementations that make use of ahead-of-time compilation.

AOT for Java sprung out of the underlying technology that was already there on Android. It's a technique which determines what the application is going to need at compile time in order to avoid reflection completely thus keeping memory requirements down and performance up by doing more things at compile time than at runtime.

For use of AOT beyond Android the catalyst was the emergence of GraalVM. It's the runtime that compiles Java bytecode into native self-contained executables, under which it can create native images which can reduce the start up time to miliseconds up to 100x faster than when running on the JVM. Of course, this sacrifices platform portability since the image made is machine specific.

Quarkus is such a Microservices AOT enabler framework which adheres to the Eclipse MicroProfile specifications of

Context and Dependency
Injection (CDI)
Java API for RESTful Web
Services (JAX-RS)
JSON Binding (JSON-B)
JSON Processing (JSON-P)
Common Annotations
Configuration
Fault Tolerance
Health
JWT
Metrics
OpenAPI
OpenTracing
REST Client

all compatible with Jakarta, which means that its users can immediately feel at home when implementing Quarkus-based applications.

Talking about specs, Jakarta EE 10 is the first release updating the core specifications since Java EE 8. As such the following specs get all 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)


Together with that upgrade, the version of Java is being also bumped up to version 11 at the minimum, and supporting up to version 17.

The next thing required for the standard to take off is to wait for the vendors to upgrade. Saying that there are several compatible implementations already: 

  • WildFly 27. 0. 0. Alpha1 (SE 17) which was used for ratification of the Jakarta EE Core Profile 10
  • Eclipse GlassFish 7. 0 M8 which was used for the ratification of Jakarta EE Web Profile and Platform
  • Payara 6 Community Alpha 4 includes all Jakarta EE 10 APIs and can be used as a target platform to start migrating to Jakarta EE 10 from Jakarta EE 8, or creating new Jakarta EE 10 applications. 

So what do Jakarta, Spring, Quarkus, the Cloud and Microservices have in common? Java. The old horse is being fully rejuvenated.

jakartaicon

More Information

Jakarta 10

Related Articles

Quarkus 2. 7. 1 Released - Why Quarkus?

Making GraalVM-Based Executables Easy

Micronaut 3. 2 Released for More Performant Microservices

Jakarta EE 9 Specifications Released

Meteoric Growth of Jakarta EE

Eclipse Releases Jakarta EE 8 Spec

Eclipse Renames Java EE Specifications to Jakarta EE

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


Azure Container Apps Dynamic Sessions Generally Available
02/12/2024

Dynamic Session support has been added to Azure Container Apps. Azure Container Apps is a serverless platform for running containerized applications, and dynamic sessions is designed to provide fast a [ ... ]



Raspberry Pi CM5 - Expensive And Undocumented
27/11/2024

So the unexpected has happened - the Compute Module 5 has been launched. But it simply emphasises some problems with adopting the Pi as an IoT device.


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Friday, 23 September 2022 )