Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Boost Performance and Developer Productivity wi...

Boost Performance and Developer Productivity with Jakarta EE 11

This presentation goes through the coming in Jakarta EE 11 soon. Are there any new specifications introduced? What about removals? Will there be another namespace change? How will the impact of this release be on other frameworks and technologies, such as Spring, Apache Tomcat, Hibernate, and more?

This presentation shows how new features in Jakarta EE 11 will increase performance and developer productivity.

OmniFish Presentations

August 10, 2024
Tweet

More Decks by OmniFish Presentations

Other Decks in Programming

Transcript

  1. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS

    LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) COPYRIGHT (C) 2024, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11
  2. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) What is Jakarta EE? Jakarta EE 11
  3. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 • Java framework for (mostly) server side development • Set of APIs covering most common needs of your applications: • Security • Validation • Persistence • HTTP/WebSocket • … • Specific groups of those APIs (profiles) make up a product (server or runtime)
  4. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 • Some famous APIs we probably all know and their implementation: • Jakarta Persistence (Hibernate) • Jakarta Servlet (Tomcat) • Jakarta Validation (Hibernate Validation)
  5. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Many frameworks use some APIs from Jakarta Jakarta EE 11 Jakata Servlet Jakarta Validation Jakarta Persistence Jakarta WebSocket Jakarta Transactions Uses
  6. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) We can use Jakarta EE standalone, using all Jakarta EE APIs Jakarta EE 11 All Jakarta EE APIs Implement GlassFish
  7. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Advantages • Very clear separation between API and private implementations • APIs owned and protected by non-profit foundation • Choose from multiple implementations • Web Application Archive (war) is natural separation between framework and your own code Jakarta EE 11
  8. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 All Jakarta EE APIs Jakarta REST Jakarta Persistence Owns / protects GlassFish Implementations Jersey Hibernate Provide Your App Code against Use at runtime Separation between API and implementations
  9. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 Base Image Layer A Layer B Application Server War Frequent changes Infrequent changes Natural separation between framework and your code
  10. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other
  11. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New Security Component Model / Injection SSR / Templating Persistence HTTP Support Other
  12. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New Component Model / Injection SSR / Templating Persistence HTTP Support Other
  13. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New SSR / Templating Persistence HTTP Support Other
  14. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New Persistence HTTP Support Other
  15. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New HTTP Support Other
  16. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New Support Other
  17. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New Other
  18. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New
  19. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform - Profiles Core Web Platform
  20. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON-P JSON-B Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Core Web Platform Open API 3.1 REST Client 3.0 JWT 2.1 Config 3.1 Fault Tolerance 4.0 Telemetry 1.1 Metrics 5.1 Health 4.0 Micro Jakarta EE 11 Platform - Profiles
  21. Transactions 2.0 Servlet 6.1 Debugging Support 2.0 Standard Tag Libraries

    3.0 WebSocket 2.2 Expression Concurrency 3.1 REST 4.0 JSON-P JSON-B Validation 3.1 Persistence 3.2 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Core Web Platform Open API 3.1 REST Client 3.0 JWT 2.1 Config 3.1 Fault Tolerance 4.0 Telemetry 1.1 Metrics 5.1 Health 4.0 Micro Pages 4.0 Faces 4.1 Jakarta EE 11 Platform - Profiles
  22. Jakarta EE 11 API source level: Java SE 17 API

    binary level: Java SE 17 TCK run with: Java SE 17+21
  23. Jakarta EE 11 API source level: Java SE 17 API

    binary level: Java SE 17 TCK run with: Java SE 17+21 App Developers (YOU) can use Java SE 21 features if you like !!
  24. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Cross-Cutting Concerns
  25. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Managed Beans 2.0 Servlets EJB Beans Faces Beans Rest Resources • (@ManagedBean) • Supports @PostConstruct / @PreDestroy • Supports @Inject CDI Beans
  26. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Managed Beans 2.0 Servlets EJB Beans Faces Beans Rest Resources • (@ManagedBean) • Supports @PostConstruct / @PreDestroy • Supports @Inject CDI Beans
  27. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Servlets EJB Beans Faces Beans Rest Resources CDI Beans Discussions ongoing Discussions ongoing Native ManagedBeans removed. CDI Beans now used instead. Converters etc become CDI beans only in Faces 5.0. Process to deprecate own component model started. In the micro profile already CDI beans.
  28. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Removed SecurityManager JEP 411: Deprecate the Security Manager for Removal
  29. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Embrace Java Records
  30. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Optional Features Jakarta XML Binding 4.0 Jakarta SOAP with Attachments 4.0 Jakarta XML Web Service 4.0
  31. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Optional Features Jakarta EE Platform Jakarta EE Web Profile Jakarta EE Core Profile
  32. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other
  33. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New Security Component Model / Injection SSR / Templating Persistence HTTP Support Other
  34. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Remove Jakarta XML Binding dependency • Remove ManagedBean support • Mentally prepare to deprecate native component model Jakarta REST 4.0
  35. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Convenience method for checking header value lists • Add getMatchedResourceTemplate method to UriInfo • Add JSON Merge Patch constant Jakarta REST 4.0
  36. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) requestContext .containsHeaderString( "Accept", ",", “Text/html;Level=1"::equalsIgnoreCase) Jakarta REST 4.0
  37. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Support Java records • Just Validation, removed “Bean” from name Jakarta Validation 3.1
  38. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta REST 4.0 Jakarta Validation 3.1 https://jakarta.ee/specifications/restful-ws/4.0/ https://jakarta.ee/specifications/bean-validation/3.1/
  39. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other
  40. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Jakarta EE 11 Platform Updated Not Updated New REST Component Model / Injection SSR / Templating Persistence HTTP Support Other
  41. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Basic API (handler) for Multiple authentication mechanisms • Qualifiers for build-in authentication mechanisms • In-memory identity store • Remove SecurityManager references Jakarta Security 4.0
  42. COPYRIGHT (C) 2024, OmniFIsh & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Authentication Handler Form Authentication Mechanism JWT Authentication Mechanism /ui/* /service/* Jakarta Security 4.0
  43. COPYRIGHT (C) 2024, OmniFIsh & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @InMemoryIdentityStoreDefinition({ @Credentials(callerName = "peter", password = "secret1", groups = { "foo", "bar" }), @Credentials(callerName = "john", password = “secret2", groups = { "foo", "kaz" }) }) Jakarta Security 4.0
  44. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Java SE Policy replaced by Jakarta EE Policy • Register Policy programmatically per application • Convenience methods to make the API easier to use • Remove SecurityManager references (also for Jakarta Authentication) Jakarta Authorization 3.0
  45. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) public boolean implies(Permission permission, Subject subject) { // add custom policy programmatically if (permission instanceof RoleRefPermission role) { if (role().equals(“foo”) && !isWorkingHours()) { return false; } } return originalPolicy.implies(permission, subject); } @RolesAllowed(“foo”) Jakarta Authorization 3.0
  46. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) public boolean implies(Permission permission, Subject subject) { // add custom policy programmatically if (permission instanceof RoleRefPermission role) { if (role().equals(“foo”) && !isWorkingHours()) { return false; } } return originalPolicy.implies(permission, subject); } @RolesAllowed(“foo”) Jakarta Authorization 3.0
  47. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Security 4.0 Jakarta Authorization 3.0 Jakarta Authentication 3.1 https://jakarta.ee/specifications/authentication/3.1/ https://jakarta.ee/specifications/authorization/3.0/ https://jakarta.ee/specifications/security/4.0/
  48. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other Jakarta EE 11 Platform
  49. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security SSR / Templating Persistence HTTP Support Other Jakarta EE 11 Platform
  50. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Method Invokers API • getELResolver() and wrapExpressionFactory() methods moved* from BeanManager to new ELAwareBeanManager • @Priority on producers • Programmatic access to assignability rules via BeanContainer.isMatchingBean() and isMatchingEvent() Jakarta CDI 4.1
  51. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta CDI 4.1 - Method Invokers API public class TestExtension implements Extension { private Invoker<ExampleResource, String> invoker; public void myServiceRegistration(@Observes ProcessManagedBean<ExampleResource> processManagedBean) { invoker = processManagedBean .createInvoker(getMethod(processManagedBean, "getId")) .withInstanceLookup() .build(); } public Invoker<ExampleResource, String> getInvoker() { return invoker; } } @RequestScoped public class ExampleResource { @PathParam("id") private String id; public String getId() { return id; } }
  52. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Path("example") @RequestScoped public class ExampleResources { @Inject BeanManager beanManager; @GET @Path("{id}") public String getResource() throws Exception { String id = beanManager.getExtension(TestExtension.class) .getInvoker() .invoke(null, null); return "id:" + id; } } Jakarta CDI 4.1 - Method Invokers API
  53. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) public interface BeanContainer { boolean isMatchingBean( Set<Type> beanTypes, Set<Annotation> beanQualifiers, Type requiredType, Set<Annotation> requiredQualifiers); boolean isMatchingEvent( Type specifiedType, Set<Annotation> specifiedQualifiers, Type observedEventType, Set<Annotation> observedEventQualifiers); } Jakarta CDI 4.1 - Assignability rules
  54. COPYRIGHT (C) 2024, OmniFIsh & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Move Integration Requirements @RequestScoped public class ExampleBean { @Inject HttpServletRequest request; } Jakarta CDI 4.1
  55. COPYRIGHT (C) 2024, OmniFIsh & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Move Integration Requirements CDI Platform @RequestScoped public class ExampleBean { @Inject HttpServletRequest request; } Jakarta CDI 4.1
  56. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Getting interceptor bindings in standard way Jakarta Interceptors 2.2
  57. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) public interface InvocationContext { default Set<Annotation> getInterceptorBindings() { // default implementation } default <T extends Annotation> T getInterceptorBinding(Class<T> annotationType) { // default implementation } default <T extends Annotation> Set<T> getInterceptorBindings(Class<T> annotationType) { // default implementation } // … } Jakarta Interceptors 2.2
  58. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Asynchronous(executor = "someExecutor") public void foo() { // ... } @Interceptor @Asynchronous @Priority(PLATFORM_BEFORE + 100) public class AsynchronousInterceptor { @AroundInvoke public Object intercept(InvocationContext invocationContext) throws Exception { Asynchronous asynchronous = invocationContext.getInterceptorBinding(Asynchronous.class); String executor = asynchronous.executor(); // … } } Jakarta Interceptors 2.2
  59. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta CDI 4.1 Jakarta Interceptors 2.2 Jakarta Annotations 3.0 https://jakarta.ee/specifications/cdi/4.1/ https://jakarta.ee/specifications/annotations/3.0/ https://jakarta.ee/specifications/interceptors/2.2/
  60. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other Jakarta EE 11 Platform
  61. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection Persistence HTTP Support Other Jakarta EE 11 Platform
  62. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Added rowStatePreserved attribute to <ui:repeat> • Support @Inject of current Flow • Added setResponseContentLengthLong()to ExternalContext • New UUIDConverter • FacesMessage has now a default equals(), hashCode() and toString() Jakarta Faces 4.1
  63. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Deprecate unused <cc:extension> • Deprecate unused @PostConstruct/ @PreDestroyCustomScopeEvent • Deprecate Full State Saving • Deprecate duplicated ActionSource2 and improved original ActionSource Jakarta Faces 4.1
  64. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Fixed wrong reference in Application#subscribeToEvent javadoc • Explicitly require that lifecycle events must be fired for custom scopes • The id attribute of <h:head>/<h:body> was missing in vdldoc • The if attribute of <f:viewAction> was missing in vdldoc • Explicitly specify default value of FACELETS_REFRESH_PERIOD in development stage • Remove references to already-removed facelets.XYZ context params in javadoc • The rowStatePreserved attribute of <h:dataTable> was missing in vdldoc Jakarta Faces 4.1
  65. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Named @RequestScoped public class Example { private UUID uuid; public UUID getUuid() { return uuid; } public void setUuid(UUID uuid) { this.uuid = uuid; } } <html xmlns:h="jakarta.faces.html"> <h:head> <title>Implicit conversion UUID</title> </h:head> <h:body> <h:form id="form"> <h:inputText id="input" value="#example.uuid}" /> <h:commandButton id="submit" value="submit" /> <h:messages id="messages" /> <h:outputText id="output" value="#{example.uuid}" /> </h:form> </h:body> </html> Jakarta Faces 4.1 “cafebabe-0420-0069-deed-123456789012"
  66. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Updated ErrorData to add support for the new attributes jakarta.servlet.error.query_string and jakarta.servlet.error.method • Remove all deprecated code from Jakarta Pages 3.1 • Remove methods that override ELResolver.getFeatureDescriptors() as that method will be removed as of EL 6.0 • Remove the isThreadSafe page directive attribute as the related Servlet API interface SingleThreadModel has been removed as of the Servlet 6.0 specification • Remove the jsp:plugin action and related actions as the associated HTML elements are no longer supported by any major browser • Remove JspException.getRootCause() Jakarta Pages 4.1
  67. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Faces 4.1 Jakarta Pages 4.0 https://jakarta.ee/specifications/faces/4.1/ https://jakarta.ee/specifications/pages/4.0/
  68. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other Jakarta EE 11 Platform
  69. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence Support Other Jakarta EE 11 Platform
  70. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Allow control of status code and response body when sending a redirect • Add a query string attribute to error dispatches • Add constants for new HTTP status codes • Add overloaded methods that use CharSet rather than String • Add ByteBuffer support to ServletInputStream and ServletOutputStream Jakarta Servlet 6.1
  71. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Servlet 6.1 - redirect public interface HttpServletResponse extends ServletResponse { default void sendRedirect(String location) throws IOException { sendRedirect(location, SC_FOUND, true); } default void sendRedirect(String location, boolean clearBuffer) throws IOException { sendRedirect(location, SC_FOUND, clearBuffer); } default void sendRedirect(String location, int statusCode) throws IOException { sendRedirect(location, statusCode, true); } void sendRedirect(String location, int statusCode, boolean clearBuffer) throws IOException; // … }
  72. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Servlet 6.1 - constants /** * Status code (308) indicating that the requested resource resides * permanently under a different URI. The new URI * <em>SHOULD</em> * be given by the <code><em>Location</em></code> field in the response. */ int SC_PERMANENT_REDIRECT = 308; /** * Status code (421) indicating that the server is unwilling or unable * to produce an authoritative response for the target URI. */ int SC_MISDIRECTED_REQUEST = 421; /** * Status code (422) indicating that the server understands the content type * of the request but is unable to process the contained instructions. */ int SC_UNPROCESSABLE_CONTENT = 422; /** * Status code (426) indicating that the server refuses to perform the request * using the current protocol but may be willing to do so after the client * upgrades to a different protocol. The server must include an appropriate * {@code Upgrade} header in the response. */ int SC_UPGRADE_REQUIRED = 426;
  73. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Remove SecurityManager references • Add getSession() method to SendResult. • @OnMessage.maxMessageSize defined to be not larger than Integer.MAX_VALUE* *(until JDK would support long Strings and ByteBuffers) Jakarta Websocket 2.2
  74. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Servlet 6.1 Jakarta WebSocket 2.2 https://jakarta.ee/specifications/servlet/6.1/ https://jakarta.ee/specifications/websocket/2.2/
  75. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other Jakarta EE 11 Platform
  76. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating HTTP Support Other Jakarta EE 11 Platform
  77. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Deprecate Calendar, Date, Time, Timestamp, Temporal , MapKeyTemporal, TemporalType • Replace with java.time API • Java Configuration as alternative to persistence.xml via the PersistenceConfiguration Class • Lots and lots and lots of new convenience methods for just about everything Jakarta Persistence 3.2
  78. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) •Data / time • Adds support for Java record types as embeddable classe • Adds support for java.time.Instant and java.time.Year and Clarifies JDBC mappings for basic types • Adds LocalDateTime and Instant to supported Version types • Deprecates usage of Calendar, Date, Time, Timestamp, Temporal, MapKeyTemporal and TemporalType in new applications in favour of java.time API •Persistence Query Language • Adds union, intersect, except, cast, left, right, and replace for Jakarta Persistence QL and criteria queries • Adds || string concatenation operator and id and version functions to Jakarta Persistence QL • Makes identification variables and the SELECT clause in Jakarta Persistence QL optional • Allows scalar expressions in the ORDER BY clause in Jakarta Persistence QL • Adds support for specifying null precedence when ordering Jakarta Persistence QL and criteria queries • Clarifies rules around distinction of entity names and identification variables and case-sensitivity in Jakarta Persistence QL queries Jakarta Persistence 3.2
  79. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) •Criteria • Adds CriteriaSelect, subquery(EntityType) and joins on EntityType to Criteria API • Adds where(), having(), and(), and or() overloads accepting List to CriteriaQuery and CriteriaBuilder • Adds concat() overload accepting list of expressions and extract() to CriteriaBuilder • Pulls getParameters() up from CriteriaQuery to CommonAbstractCriteria • Adds equalTo() and notEqualTo() to Expression •Query • Adds getSingleResultOrNull() to Query, TypedQuery, StoredProcedureQuery • Adds setCacheStoreMode(), and setCacheRetrieveMode() methods to EntityManager and Query • Adds entities(), classes() and columns() to NamedNativeQuery • Adds lockMode() to EntityResult with the default being OPTIMISTIC • Adds getVersion(), isLoaded(), load(), isInstance() and getClass() methods to PersistenceUnitUtil • Clarifies the semantics of collection-valued query parameters Jakarta Persistence 3.2
  80. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) •Meta model • Adds overload of entity() accepting an entity name to Metamodel • Adds javax.annotation.processing.Generated to the list of defined annotations on StaticMetamodel • Adds constants for managed types, named queries, named graphs and named result set mappings to generated StaticMetamodel •Query • Adds Graph interface as parent of EntityGraph and Subgraph and moved common operations there • Adds addAttributeNode(), removeAttributeNode(), addTreatedSubgraph(), addElementSubgraph(), addTreatedElementSubgraph(), addMapKeySubgraph(), and addTreatedMapKeySubgraph() methods to Graph • Adds factory-level access to named queries and named entity graphs, along with TypedQueryReference Jakarta Persistence 3.2
  81. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) •Entity Manager • Adds getReference overload, runWithConnection() and callWithConnection() to EntityManager • Adds find(), refresh(), lock() overloads to EntityManager taking newly introduced FindOption, RefreshOption, and LockOption respectively • Adds runInTransaction() and callInTransaction() to EntityManagerFactory • Adds getName() to EntityManagerFactory • Adds programmatic API to obtain EntityManagerFactory using PersistenceConfiguration • Adds constants for properties defined by the specification to the PersistenceConfiguration •Other • Adds SchemaManager API • Adds options member to elements which result in DDL generation • Adds EnumeratedValue allowing custom mapping of fields of Java enums • Adds comment and check members to Table and Column annotations, along with CheckConstraint • Adds secondPrecision to Column annotation and clarified semantics of Column members • Adds integration points for dependency injection Jakarta Persistence 3.2
  82. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) And even more clarifications, deprecations, etc… Jakarta Persistence 3.2
  83. COPYRIGHT (C) 2024, ECLIPSE FOUNDATION, INC. | THIS WORK IS

    LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Standardizes the repository pattern for data access • Jakarta Data Query Language (JDQL) • a subset of Jakarta Persistence Query Language (JPQL) NEW in Jakarta EE 11 Jakarta Data 1.0
  84. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Repository public interface GreetingRepository extends CrudRepository<Greeting, Long> { Optional<Greeting> findByName(String name); } Jakarta Data 1.0
  85. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @Query("where title like :title") List<Book> booksByType(String title); Jakarta Data 1.0
  86. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Persistence 3.2 Jakarta Data 1.0 https://jakarta.ee/specifications/persistence/3.2/ https://jakarta.ee/specifications/data/1.0/
  87. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Support Other Jakarta EE 11 Platform
  88. Servlet 6.1 Faces 4.1 Pages 4.0 Debugging Support 2.0 Standard

    Tag Libraries 3.0 WebSocket 2.2 Expression Language 6.0 Concurrency 3.1 REST 4.0 JSON Processing 2.1 JSON Binding 3.0 Validation 3.1 Persistence 3.2 Transactions 2.0 Data 1.0 Authentication 3.1 Security 4.0 Authorization 3.0 Activation 2.1 Batch 2.1 Mail 2.1 Connectors 2.1 Messaging 3.1 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Enterprise Beans Lite 4.0 CDI 4.1 Enterprise Beans 4.0 Updated Not Updated New REST Security Component Model / Injection SSR / Templating Persistence HTTP Other Jakarta EE 11 Platform
  89. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • Virtual thread support • CDI based @Schedule using @Asynchronous • Concurrency services injectable via CDI with qualifiers • Support for java.util.concurrent.Flow in ContextService Jakarta Concurrency 3.1
  90. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Virtual Threads runAt() Jakarta Concurrency 3.1
  91. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ManagedExecutorService ManagedScheduledExecutorService ContextService ManagedThreadFactory Jakarta Concurrency 3.1
  92. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11 API source level: Java SE 17 API binary level: Java SE 17 TCK run with: Java SE 17+21 ? Jakarta Concurrency 3.1
  93. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @ManagedExecutorDefinition( name = “java:app/concurrent/myExecutor”, maxAsync = 3, virtual = true ) Jakarta Concurrency 3.1
  94. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Concurrency API Java SE Runtime Aware Support for Virtual Threads Jakarta Concurrency 3.1
  95. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Concurrency API virtual = “true” Java SE Runtime Aware Support for Virtual Threads Java 21 Virtual Thread Jakarta Concurrency 3.1
  96. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Concurrency API Java 17 Platform Thread virtual = “true” Java SE Runtime Aware Support for Virtual Threads Java 21 Virtual Thread Jakarta Concurrency 3.1
  97. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) @ApplicationScoped public class AppBean { @Asynchronous(runAt = { // Every 3 seconds and every minute @Schedule(cron = "*/3 * * * * *"), @Schedule(cron = "0 * * * * *") }) public CompletableFuture<Integer> scheduled(int someInput) { int someOutput = … if (someCondition) { // Continue scheduled execution return null; } // End scheduled execution return Asynchronous.Result.complete(someOutput); } } Jakarta Concurrency 3.1 public class StartupBean { @Inject private AppBean appBean; public void startJobs() { appBean.scheduled(10); // ... } } @Schedule
  98. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Concurrency 3.1 @Qualifier @Retention(RUNTIME) @Target({ FIELD, METHOD, PARAMETER, TYPE }) public @interface CustomQualifier1 { class Literal extends AnnotationLiteral<CustomQualifier1> implements CustomQualifier1 { private static final long serialVersionUID = 1L; private static Literal INSTANCE = new Literal(); public static Literal get() { return INSTANCE; } } } @ManagedExecutorDefinition( name = "java:app/concurrent/MyExecutor", context = "java:app/concurrent/MyContext", qualifiers = {CustomQualifier1.class}, maxAsync = 3) @ApplicationScoped public class AppBean { // ... } public class StartupBean { @Inject private ManagedExecutorService executorDefault; @Inject @CustomQualifier1 private ManagedExecutorService executorCustom; } @Inject
  99. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) • JavaBeans API (java.desktop module) dependency Optional • Support for Optional via OptionalELResolver* • Support for Record via RecordELResolver • length property added to arrays • Deprecated code removed. Specifically: • The getFeatureDescriptors()from ELResolver *)Optionally enabled Jakarta Expression Language 6.0
  100. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Concurrency 3.1 Jakarta Expression Language 6.0 https://jakarta.ee/specifications/concurrency/3.1/ https://jakarta.ee/specifications/expression-language/6.0/
  101. COPYRIGHT (C) 2024, OmniFish & ECLIPSE FOUNDATION, INC. | THIS

    WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Read more about Jakara EE https://amazon.com/dp/B09XWVMXDY Shameless plug New Version comming