Slide 1

Slide 1 text

Boost Performance and Developer Productivity with Jakarta EE 11 Arjan Tijms
 Director OmniFish

Slide 2

Slide 2 text

https://github.com/arjantijms https://linkedin.com/in/arjantijms @arjan_tijms

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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)

Slide 6

Slide 6 text

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)

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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 !!

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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.

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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/

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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/

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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 invoker; public void myServiceRegistration(@Observes ProcessManagedBean processManagedBean) { invoker = processManagedBean .createInvoker(getMethod(processManagedBean, "getId")) .withInstanceLookup() .build(); } public Invoker getInvoker() { return invoker; } } @RequestScoped public class ExampleResource { @PathParam("id") private String id; public String getId() { return id; } }

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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 beanTypes, Set beanQualifiers, Type requiredType, Set requiredQualifiers); boolean isMatchingEvent( Type specifiedType, Set specifiedQualifiers, Type observedEventType, Set observedEventQualifiers); } Jakarta CDI 4.1 - Assignability rules

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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 getInterceptorBindings() { // default implementation } default T getInterceptorBinding(Class annotationType) { // default implementation } default Set getInterceptorBindings(Class annotationType) { // default implementation } // … } Jakarta Interceptors 2.2

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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/

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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 • Support @Inject of current Flow • Added setResponseContentLengthLong()to ExternalContext • New UUIDConverter • FacesMessage has now a default equals(), hashCode() and toString() Jakarta Faces 4.1

Slide 65

Slide 65 text

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 • Deprecate unused @PostConstruct/ @PreDestroyCustomScopeEvent • Deprecate Full State Saving • Deprecate duplicated ActionSource2 and improved original ActionSource Jakarta Faces 4.1

Slide 66

Slide 66 text

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 / was missing in vdldoc • The if attribute of 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 was missing in vdldoc Jakarta Faces 4.1

Slide 67

Slide 67 text

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; } } Implicit conversion UUID Jakarta Faces 4.1 “cafebabe-0420-0069-deed-123456789012"

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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/

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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; // … }

Slide 74

Slide 74 text

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 * SHOULD * be given by the Location 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;

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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/

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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 { Optional findByName(String name); } Jakarta Data 1.0

Slide 87

Slide 87 text

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 booksByType(String title); Jakarta Data 1.0

Slide 88

Slide 88 text

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/

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

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

Slide 99

Slide 99 text

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

Slide 100

Slide 100 text

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

Slide 101

Slide 101 text

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

Slide 102

Slide 102 text

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/

Slide 103

Slide 103 text

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