Jakarta EE overview

Jakarta EE, formerly known as Java EE, is an open source Java platform for building enterprise applications. Open Liberty implements Jakarta EE, which provides specifications for common services such as transaction management, security, and database access.

Jakarta EE specifies application programming interfaces (APIs) and a runtime environment to develop and run secure, scalable applications. An API is an interface that allows an application to use specific data or functions of an operating system or another application or service.

Jakarta EE also defines a container model to manage application components. Jakarta EE application servers, such as Open Liberty, host these containers and provide standardized system services that any application that is developed for Jakarta EE specifications can use. These open source specifications make applications more portable and resilient by providing configuration standards that can be applied across different products and environments. These standard specifications help developers focus on writing applications rather than managing low-level infrastructure details. Jakarta EE is widely used for enterprise applications in banking, e-commerce, travel, and more.

Java SE and Jakarta EE

Jakarta EE was formerly owned by the Oracle corporation and known as Java, Enterprise Edition (Java EE). Oracle moved Java EE to the open source Eclipse foundation in 2017, at which time its name was changed to Jakarta EE. Jakarta EE extends Java SE, which provides the core Java functions.

Java SE provides the Java Runtime Environment (JRE), which is used to run Java applications; and the Java Software Development Kit (SDK), which is a collection of tools for developing Java applications. The JRE is primarily composed of the Java virtual machine (JVM) and the Java Class Library (JCL).

The JVM is a program that interprets Java application code. Like Jakarta EE, the JVM is a specification. Just as different implementations of the Jakarta EE specification are available, such as Open Liberty, different implementations of the JVM specification exist, such as OpenJ9 and HotSpot. Although each of these implementations derives from the same JVM specification, performance differences can occur among them. For example, Open Liberty has a better memory footprint and faster startup time on OpenJ9 than on HotSpot.

The JCL is a set of dynamically loadable libraries that the JVM can call at run time. These libraries enable Java applications to be operating-system independent by supplying many common functions that are provided by modern operating systems.

The following diagram shows the relationship between the Jakarta EE and Java SE platforms. The Java SE platform provides specifications for the Java SDK, the JRE, the JVM, and the JCLs. Jakarta EE extends Java SE by specifying a collection of APIs that are designed for enterprise application development. An Open Liberty server supports cloud-native applications by implementing the functions that these platforms specify.

diagram that shows the relationship between Jakarta EE components and Open Liberty
Jakarta EE Platform

Platform versions

Java SE evolved through a series of versions as more classes were added to the JCL, new APIs were introduced, and some older functions were deprecated and replaced. Currently, the only versions of Java SE that are maintained with long-term support (LTS) are Java SE 8 and Java SE 11. In between LTS releases, Oracle introduces short-term support releases, such as Java 16. These short-term releases are supported for only 6 months. For more information about which versions of Java SE Open Liberty runs on, see Java SE support.

Java EE 8 was the last release of the platform by the Oracle corporation before it was moved to the Eclipse foundation, which first released the platform as Jakarta EE 8. Jakarta EE 9 arrived in 2020. The primary change in this release was to replace javax with jakarta in Jakarta package names. In February 2021, Jakarta EE 9.1 was released. Although this release did not include any API changes from version 9.0, it added support for Java SE 11.

Jakarta EE specifications

Ongoing development of Jakarta EE platform is advanced by the Jakarta developer community through the Jakarta EE Specification Process (JESP), which provides a blueprint to introduce new specification projects for the platform. Jakarta EE compatible runtimes, such as Open Liberty, implement the functions that specification projects describe. Each implementation is verified by the community through a Technology Compatibility Kit (TCK). A TCK is a battery of tests that checks the compliance of a reference implementation. For a specification project to become an official specification, it must be ratified through the process of developing at least one open source reference implementation that satisfies the TCK tests.

Open Liberty was a reference implementation of Jakarta EE 9.1, which means it implements all the required Jakarta EE specifications as defined by the Jakarta EE Platform Specification. Applications that run on Open Liberty can take advantage of Jakarta EE APIs by enabling the corresponding Open Liberty features in the server configuration. The following table describes several of the most commonly used Jakarta EE specifications and lists their corresponding Open Liberty features. The Try it out column provides links to Open Liberty guides that demonstrate how Open Liberty implements the specification.

Jakarta EE specifications
SpecificationFunctionOpen Liberty featureTry it out

Jakarta Context Dependency Injection

Enables Java object dependencies to be automatically injected at run time, and helps manage the lifecycle of those dependencies

Contexts and Dependency Injection

Injecting dependencies into microservices

Jakarta Persistence

Simplifies data persistence and object relational mapping for Java applications

Java Persistence API

Accessing and persisting data in microservices using JPA

Jakarta RESTful Web Services

Provides support for developing web services that comply with the Representational State Transfer (REST) architectural pattern

Java RESTful Services

Creating a RESTful web service

Jakarta Security

Provides support for authentication, authorization, and other application security concerns

Application Security

Securing a web application

Jakarta JSON Binding

Provides a framework to convert Java objects to and from JSON documents

JavaScript Object Notation Binding

Consuming a RESTful web service

Jakarta Bean Validation

Defines a metadata model to validate EJB beans

Bean Validation

Validating constraints with microservices

Jakarta EE and Open Liberty

The Open Liberty team’s involvement with Jakarta EE goes back to the beginning of the project. The team is active across the Jakarta Working Group, sitting on committees such as the Specification Committee and the Steering Committee. Our developers are committers to numerous Jakarta EE specifications, including Jakarta Batch, Jakarta Connectors, Jakarta Concurrency, and Jakarta XML Web Services. They are also taking a leading role in the Jakarta EE Platform umbrella specification.

As new specification versions are introduced, Open Liberty implements them in new versions of its modular features. The Open Liberty zero migration architecture gives you the flexibility to continue to use the same version of an API or upgrade to newer versions according to the needs of your applications. New versions of Jakarta EE implementing features are regularly introduced in Open Liberty beta releases before they are included in a full general availability (GA) release.