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.
Jakarta EE was formerly owned by the Oracle corporation and known as Java, Enterprise Edition (Java EE), one of four Java platforms that standardize and simplify Java application development. The other three platforms are Java SE, which provides the core Java functions; Java ME, which provides resources for mobile applications; and JavaFX, which provides graphics and media packages for rich client applications. Oracle moved Java EE to the open source Eclipse foundation in 2017, at which time its name was changed to Jakarta EE.
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. Jakarta EE extends Java SE with a collection of APIs that are designed for enterprise application development.
The following diagram shows the relationship among the components of the Jakarta EE platform. An Open Liberty server supports cloud-native applications by implementing the functions that these components specify.
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
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.
|Specification||Function||Open Liberty feature||Try it out|
Enables Java object dependencies to be automatically injected at run time, and helps manage the lifecycle of those dependencies
Simplifies data persistence and object relational mapping for Java applications
Provides support for developing web services that comply with the Representational State Transfer (REST) architectural pattern
Provides support for authentication, authorization, and other application security concerns
Provides a framework to convert Java objects to and from JSON documents
Defines a metadata model to validate EJB beans
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.
The Jakarta EE tutorial from the Eclipse Foundation