Add jakarta-ee-11 module: Jakarta EE 10 vs 11 API comparison against Spring Boot 4.1.1

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Gth99spB1CzQmBFofXmU4Z
This commit is contained in:
Claude
2026-09-28 08:40:07 +00:00
parent acd63e658b
commit e4f927d7af
14 changed files with 342 additions and 0 deletions
@@ -0,0 +1,32 @@
# 01-boot-managed-jakarta-apis (spring-boot-dependencies 4.1.1)
hibernate-validator.version = 9.1.3.Final
hibernate.version = 7.4.5.Final
jakarta-activation.version = 2.1.4
jakarta-annotation.version = 3.0.0
jakarta-inject.version = 2.0.1
jakarta-jms.version = 3.1.0
jakarta-json-bind.version = 3.0.2
jakarta-json.version = 2.1.3
jakarta-mail.version = 2.1.5
jakarta-management.version = 1.1.4
jakarta-persistence.version = 3.2.0
jakarta-servlet-jsp-jstl.version = 3.0.2
jakarta-servlet.version = 6.1.0
jakarta-transaction.version = 2.0.1
jakarta-validation.version = 3.1.1
jakarta-websocket.version = 2.2.0
jakarta-ws-rs.version = 4.0.0
jakarta-xml-bind.version = 4.0.5
jakarta-xml-soap.version = 3.0.2
jakarta-xml-ws.version = 4.0.3
jetty.version = 12.1.12
spring-data-bom.version = 2026.0.1
spring-framework.version = 7.0.9
tomcat.version = 11.0.24
--- artifacts NOT in the BOM (0 = Spring Boot does not manage them)
jakarta.data-api 0
jakarta.enterprise.concurrent-api 0
jakarta.enterprise.cdi-api 0
jakarta.security.enterprise-api 0
jakarta.faces-api 0
jakarta.ws.rs-api 1
+45
View File
@@ -0,0 +1,45 @@
# 02-api-diff (javap -public over every class of the two jars; members are signature strings, so a changed signature counts as one removed and one added)
--- Servlet: jakarta.servlet-api 6.0.0 -> 6.1.0
classes added : 1 removed: 1
members added : 26 removed: 3
+ class jakarta.servlet.http.HttpSession$Accessor
- class jakarta.servlet.http.Cookie$1
--- Persistence: jakarta.persistence-api 3.1.0 -> 3.2.0
classes added : 24 removed: 0
members added : 251 removed: 39
+ class jakarta.persistence.CheckConstraint
+ class jakarta.persistence.ConnectionConsumer
+ class jakarta.persistence.ConnectionFunction
+ class jakarta.persistence.EnumeratedValue
+ class jakarta.persistence.FindOption
+ class jakarta.persistence.Graph
+ class jakarta.persistence.LockOption
+ class jakarta.persistence.PersistenceConfiguration
+ class jakarta.persistence.PersistenceUnitTransactionType
+ class jakarta.persistence.RefreshOption
+ class jakarta.persistence.SchemaManager
+ class jakarta.persistence.SchemaValidationException
--- Validation: jakarta.validation-api 3.0.0 -> 3.1.0
classes added : 9 removed: 0
members added : 1 removed: 1
+ class jakarta.validation.bootstrap.package-info
+ class jakarta.validation.constraints.package-info
+ class jakarta.validation.constraintvalidation.package-info
+ class jakarta.validation.executable.package-info
+ class jakarta.validation.groups.package-info
+ class jakarta.validation.metadata.package-info
+ class jakarta.validation.package-info
+ class jakarta.validation.spi.package-info
+ class jakarta.validation.valueextraction.package-info
--- Annotations: jakarta.annotation-api 2.1.1 -> 3.0.0
classes added : 2 removed: 1
members added : 0 removed: 1
+ class jakarta.annotation.package-info
+ class jakarta.annotation.security.package-info
- class jakarta.annotation.ManagedBean
--- Concurrency: jakarta.enterprise.concurrent-api 3.0.0 -> 3.1.1
classes added : 3 removed: 0
members added : 15 removed: 0
+ class jakarta.enterprise.concurrent.Schedule
+ class jakarta.enterprise.concurrent.package-info
+ class jakarta.enterprise.concurrent.spi.package-info
@@ -0,0 +1,18 @@
# 03-entitymanager-3.2 (methods on jakarta.persistence.EntityManager that 3.1.0 did not have)
public abstract <C, T> T callWithConnection(ConnectionFunction<C, T>);
public abstract <C> void runWithConnection(ConnectionConsumer<C>);
public abstract <T> Query createNativeQuery(String, Class<T>);
public abstract <T> T find(Class<T>, Object, FindOption...);
public abstract <T> T find(EntityGraph<T>, Object, FindOption...);
public abstract <T> T getReference(T);
public abstract <T> TypedQuery<T> createQuery(TypedQueryReference<T>);
public abstract <T> TypedQuery<T> createQuery(criteria.CriteriaSelect<T>);
public abstract CacheRetrieveMode getCacheRetrieveMode();
public abstract CacheStoreMode getCacheStoreMode();
public abstract Query createQuery(criteria.CriteriaDelete<?>);
public abstract Query createQuery(criteria.CriteriaUpdate<?>);
public abstract StoredProcedureQuery createStoredProcedureQuery(String, Class<?>...);
public abstract void lock(Object, LockModeType, LockOption...);
public abstract void refresh(Object, RefreshOption...);
public abstract void setCacheRetrieveMode(CacheRetrieveMode);
public abstract void setCacheStoreMode(CacheStoreMode);
@@ -0,0 +1,27 @@
# 04-data-and-concurrency
--- jakarta.data-api 1.0.2: types in jakarta.data.repository
BasicRepository
By
CrudRepository
DataRepository
Delete
Find
Insert
OrderBy
Param
Query
Repository
Save
Update
--- jakarta.enterprise.concurrent-api 3.0.0: attributes of @ManagedExecutorDefinition
String name();
String context();
long hungTaskThreshold();
int maxAsync();
--- jakarta.enterprise.concurrent-api 3.1.1: attributes of @ManagedExecutorDefinition
String name();
Class<?>[] qualifiers();
String context();
long hungTaskThreshold();
int maxAsync();
boolean virtual();
@@ -0,0 +1,2 @@
# 05-servlet-level (Spring Boot 4.1.1, embedded Tomcat, JDK 25)
GET /servlet-level -> 6.1 (container: Apache Tomcat/11.0.24)
@@ -0,0 +1,3 @@
# 06-spring-data-and-jakarta-data (classes mentioning jakarta/data inside Spring Data jars from Spring Data 2026.0.1)
spring-data-commons 4.1.1: entries under jakarta/data/: 0; manifest lines mentioning jakarta.data: 0
spring-data-jpa 4.1.1: entries under jakarta/data/: 0; manifest lines mentioning jakarta.data: 0
@@ -0,0 +1,2 @@
# 07-virtual-threads-property (spring-boot-autoconfigure 4.1.1 configuration metadata)
spring.threads.virtual.enabled (java.lang.Boolean, default False): Whether to use virtual threads.