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.time mapping, Records as embeddables, new JPQL functions

  • Jakarta 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

SpecificationVersionMaven CoordinatesOpen Liberty Feature

Jakarta RESTful Web Services (Updated)

4.0

jakarta.ws.rs:jakarta.ws.rs-api:4.0.0

restfulWS-4.0

Jakarta CDI Lite (Updated)

4.1

jakarta.enterprise:jakarta.enterprise.cdi-api:4.1.0
jakarta.enterprise:jakarta.enterprise.lang-model:4.1.0

cdi-4.1

Jakarta Dependency Injection

2.0

jakarta.inject:jakarta.inject-api:2.0.1

cdi-4.1

Jakarta Interceptors (Updated)

2.2

jakarta.interceptor:jakarta.interceptor-api:2.2.0

cdi-4.1

Jakarta JSON Processing

2.1

jakarta.json:jakarta.json-api:2.1.3

jsonp-2.1

Jakarta JSON Binding

3.0

jakarta.json.bind:jakarta.json.bind-api:3.0.1

jsonb-3.0

Jakarta Annotations (Updated)

3.0

jakarta.annotation:jakarta.annotation-api:3.0.0

n/a (enabled via various Liberty features)

Web Profile (adds to Core Profile)

SpecificationVersionMaven CoordinatesOpen Liberty Feature

Jakarta Servlet (Updated)

6.1

jakarta.servlet:jakarta.servlet-api:6.1.0

servlet-6.1

Jakarta Persistence (Updated)

3.2

jakarta.persistence:jakarta.persistence-api:3.2.0

persistence-3.2

Jakarta Faces (Updated)

4.1

jakarta.faces:jakarta.faces-api:4.1.2

faces-4.1

Jakarta Pages (Updated)

4.0

jakarta.servlet.jsp:jakarta.servlet.jsp-api:4.0.0

pages-4.0

Jakarta Standard Tag Library

3.0

jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.2

pages-4.0

Jakarta WebSocket (Updated)

2.2

jakarta.websocket:jakarta.websocket-api:2.2.0
jakarta.websocket:jakarta.websocket-client-api:2.2.0

websocket-2.2

Jakarta Enterprise Beans Lite

4.0

jakarta.ejb:jakarta.ejb-api:4.0.1

enterpriseBeansLite-4.0

Jakarta Security (Updated)

4.0

jakarta.security.enterprise:jakarta.security.enterprise-api:4.0.0

appSecurity-6.0

Jakarta Authentication (Updated)

3.1

jakarta.authentication:jakarta.authentication-api:3.1.0

appAuthentication-3.1

Jakarta Expression Language (Updated)

6.0

jakarta.el:jakarta.el-api:6.0.1

expressionLanguage-6.0

Jakarta Validation (Updated)

3.1

jakarta.validation:jakarta.validation-api:3.1.1

validation-3.1

Jakarta Transactions

2.0

jakarta.transaction:jakarta.transaction-api:2.0.1

n/a (enabled via various Liberty features)

Jakarta Concurrency (Updated)

3.1

jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:3.1.1

concurrent-3.1

Jakarta Data (NEW)

1.0

jakarta.data:jakarta.data-api:1.0.1

data-1.0

Platform (adds to Web Profile)

SpecificationVersionMaven CoordinatesOpen Liberty Feature

Jakarta Enterprise Beans

4.0

jakarta.ejb:jakarta.ejb-api:4.0.1

enterpriseBeans-4.0

Jakarta Messaging

3.1

jakarta.jms:jakarta.jms-api:3.1.0

messaging-3.1

Jakarta Mail

2.1

jakarta.mail:jakarta.mail-api:2.1.3

mail-2.1

Jakarta Activation

2.1

jakarta.activation:jakarta.activation-api:2.1.3

mail-2.1

Jakarta Connectors

2.1

jakarta.resource:jakarta.resource-api:2.1.0

connectors-2.1

Jakarta Authorization (Updated)

3.0

jakarta.authorization:jakarta.authorization-api:3.0.0

appAuthorization-3.0

Jakarta Batch

2.1

jakarta.batch:jakarta.batch-api:2.1.1

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.