Jakarta EE 11 — Complete Specification API Maven Coordinates
Jakarta EE 11 is a landmark release that modernizes enterprise Java for the cloud-native era. It aligns with Java SE 17 and Java SE 21, removes all remaining optional specifications, introduces the brand-new Jakarta Data specification, and cleans up years of accumulated legacy — including the removal of SecurityManager references in line with JEP 411.
Whether you are migrating from Jakarta EE 10, building a new application on Open Liberty, or just updating your pom.xml — this document gives you every specification API Maven coordinate in one place, organized by profile.
Key Highlights in Jakarta EE 11
Jakarta Data 1.0 — brand-new specification for repository-based data access
Jakarta Persistence 3.2 —
java.timemapping, Records as embeddables, new JPQL functionsJakarta CDI 4.1 — brings important architectural improvements and new APIs to help framework developers build on CDI.
Jakarta Faces 4.1 — aligns with CDI where possible, and provides various small enhancements and clarifications.
Jakarta REST 4.0 — improved programmatic API
Java SE 17 and 21 baseline — virtual threads, records, sealed classes all first-class
All optional specifications removed — cleaner, leaner platform
SecurityManager removed — aligned with JEP 411
Quickstart — Use the Jakarta EE 11 BOM
Instead of declaring each API individually, import the platform BOM and omit versions:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-bom</artifactId>
<version>11.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>Or use jakarta.platform:jakarta.jakartaee-api:11.0.0 (full platform all-in-one), jakarta.platform:jakarta.jakartaee-web-api:11.0.0 (Web Profile), or jakarta.platform:jakarta.jakartaee-core-api:11.0.0 (Core Profile).
Specification API Coordinates
| Profile membership: Platform ⊇ Web Profile ⊇ Core Profile. All Web Profile specifications are also in Platform. All Core Profile specifications are in both. |
Core Profile
| Specification | Version | Maven Coordinates | Open Liberty Feature |
|---|---|---|---|
Jakarta RESTful Web Services (Updated) | 4.0 |
| |
Jakarta CDI Lite (Updated) | 4.1 |
| |
Jakarta Dependency Injection | 2.0 |
| |
Jakarta Interceptors (Updated) | 2.2 |
| |
Jakarta JSON Processing | 2.1 |
| |
Jakarta JSON Binding | 3.0 |
| |
Jakarta Annotations (Updated) | 3.0 |
| n/a (enabled via various Liberty features) |
Web Profile (adds to Core Profile)
| Specification | Version | Maven Coordinates | Open Liberty Feature |
|---|---|---|---|
Jakarta Servlet (Updated) | 6.1 |
| |
Jakarta Persistence (Updated) | 3.2 |
| |
Jakarta Faces (Updated) | 4.1 |
| |
Jakarta Pages (Updated) | 4.0 |
| |
Jakarta Standard Tag Library | 3.0 |
| |
Jakarta WebSocket (Updated) | 2.2 |
| |
Jakarta Enterprise Beans Lite | 4.0 |
| |
Jakarta Security (Updated) | 4.0 |
| |
Jakarta Authentication (Updated) | 3.1 |
| |
Jakarta Expression Language (Updated) | 6.0 |
| |
Jakarta Validation (Updated) | 3.1 |
| |
Jakarta Transactions | 2.0 |
| n/a (enabled via various Liberty features) |
Jakarta Concurrency (Updated) | 3.1 |
| |
Jakarta Data (NEW) | 1.0 |
|
Platform (adds to Web Profile)
| Specification | Version | Maven Coordinates | Open Liberty Feature |
|---|---|---|---|
Jakarta Enterprise Beans | 4.0 |
| |
Jakarta Messaging | 3.1 |
| |
Jakarta Mail | 2.1 |
| |
Jakarta Activation | 2.1 |
| |
Jakarta Connectors | 2.1 |
| |
Jakarta Authorization (Updated) | 3.0 |
| |
Jakarta Batch | 2.1 |
|
Copy-Paste Maven Snippets
Set <scope>provided</scope> for all specifications — Liberty provides the APIs. |
<!-- Jakarta EE 11 — individual API dependencies (scope: provided) -->
<!-- Core Profile -->
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
<version>4.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.lang-model</artifactId>
<version>4.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.interceptor</groupId>
<artifactId>jakarta.interceptor-api</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.json.bind</groupId>
<artifactId>jakarta.json.bind-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<!-- Web Profile additions -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.faces</groupId>
<artifactId>jakarta.faces-api</artifactId>
<version>4.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.websocket</groupId>
<artifactId>jakarta.websocket-api</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.websocket</groupId>
<artifactId>jakarta.websocket-client-api</artifactId>
<version>2.2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.ejb</groupId>
<artifactId>jakarta.ejb-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.security.enterprise</groupId>
<artifactId>jakarta.security.enterprise-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.authentication</groupId>
<artifactId>jakarta.authentication-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>6.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
<version>2.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.enterprise.concurrent</groupId>
<artifactId>jakarta.enterprise.concurrent-api</artifactId>
<version>3.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.data</groupId>
<artifactId>jakarta.data-api</artifactId>
<version>1.0.1</version>
<scope>provided</scope>
</dependency>
<!-- Platform additions -->
<dependency>
<groupId>jakarta.jms</groupId>
<artifactId>jakarta.jms-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>2.1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>2.1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.resource</groupId>
<artifactId>jakarta.resource-api</artifactId>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.authorization</groupId>
<artifactId>jakarta.authorization-api</artifactId>
<version>3.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.batch</groupId>
<artifactId>jakarta.batch-api</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>Copy-Paste Gradle Snippets
Use compileOnly for all specifications — Liberty provides the APIs. |
// Jakarta EE 11 — individual API dependencies (compileOnly)
// Core Profile
compileOnly 'jakarta.ws.rs:jakarta.ws.rs-api:4.0.0'
compileOnly 'jakarta.enterprise:jakarta.enterprise.cdi-api:4.1.0'
compileOnly 'jakarta.enterprise:jakarta.enterprise.lang-model:4.1.0'
compileOnly 'jakarta.inject:jakarta.inject-api:2.0.1'
compileOnly 'jakarta.interceptor:jakarta.interceptor-api:2.2.0'
compileOnly 'jakarta.json:jakarta.json-api:2.1.3'
compileOnly 'jakarta.json.bind:jakarta.json.bind-api:3.0.1'
compileOnly 'jakarta.annotation:jakarta.annotation-api:3.0.0'
// Web Profile additions
compileOnly 'jakarta.servlet:jakarta.servlet-api:6.1.0'
compileOnly 'jakarta.persistence:jakarta.persistence-api:3.2.0'
compileOnly 'jakarta.faces:jakarta.faces-api:4.1.2'
compileOnly 'jakarta.servlet.jsp:jakarta.servlet.jsp-api:4.0.0'
compileOnly 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.2'
compileOnly 'jakarta.websocket:jakarta.websocket-api:2.2.0'
compileOnly 'jakarta.websocket:jakarta.websocket-client-api:2.2.0'
compileOnly 'jakarta.ejb:jakarta.ejb-api:4.0.1'
compileOnly 'jakarta.security.enterprise:jakarta.security.enterprise-api:4.0.0'
compileOnly 'jakarta.authentication:jakarta.authentication-api:3.1.0'
compileOnly 'jakarta.el:jakarta.el-api:6.0.1'
compileOnly 'jakarta.validation:jakarta.validation-api:3.1.1'
compileOnly 'jakarta.transaction:jakarta.transaction-api:2.0.1'
compileOnly 'jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:3.1.1'
compileOnly 'jakarta.data:jakarta.data-api:1.0.1'
// Platform additions
compileOnly 'jakarta.jms:jakarta.jms-api:3.1.0'
compileOnly 'jakarta.mail:jakarta.mail-api:2.1.3'
compileOnly 'jakarta.activation:jakarta.activation-api:2.1.3'
compileOnly 'jakarta.resource:jakarta.resource-api:2.1.0'
compileOnly 'jakarta.authorization:jakarta.authorization-api:3.0.0'
compileOnly 'jakarta.batch:jakarta.batch-api:2.1.1'Jakarta EE 11 represents the most significant modernization of the platform in years. The new Java SE 17 baseline unlocks records and sealed classes for enterprise applications — and the removal of optional specifications makes the platform simpler to reason about and implement.
Open Liberty ships full Jakarta EE 11 support — look for the jakartaee-11.0 convenience feature in your server.xml, or enable individual features like persistence-3.2, restfulWS-4.0, and data-1.0 as needed.
For full specification details, see Jakarta EE 11 website.
For a deep dive into Jakarta EE 11 features and code examples on Open Liberty, see the Jakarta EE 11 from Newbie to Pro with Open Liberty blog post.