Slide 1

Slide 1 text

Duke on CRaC with Jakarta EE Ivar Grimstad
 Jakarta EE Developer Advocate Rustam Mehmandarov
 Senior Software Engineer

Slide 2

Slide 2 text

https://github.com/ivargrimstad https://www.linkedin.com/in/ivargrimstad @[email protected] ivargrimstad_of fi cial @ivar_grimstad https://www.threads.net/@ivargrimstad_of fi cial @theguywiththeduketattoo.com

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 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) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE

Slide 5

Slide 5 text

2004 2024/5 1995 1999 2006 2017 2020 javax.* -> jakarta.* 2014 JSR 330 2009

Slide 6

Slide 6 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 2022 2024/5 2020 javax.* -> jakarta.* Jakarta EE Core Pro fi le Java 21 Embrace Records Jakarta Data CDI Centric Removals and Deprecations

Slide 7

Slide 7 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Speci fi cation Document API TCK Final Speci fi cation Compatible Implementation(s) Speci fi

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 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) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE 11

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Jakarta EE 11 Web Pro fi le RESTful Web Services 4.0 JSON Processing 2.1 JSON Binding 3.0 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0 Servlet 6.1 Pages 4.0 Expression Language 6.0 Debugging Support 2.0 Standard Tag Libraries 3.0 Faces 4.1 WebSocket 2.2 Enterprise Beans Lite 4.0 Persistence 3.2 Transactions 2.0 CDI 4.1 Authentication 3.1 Concurrency 3.1 Security 4.0 Validation 3.1 Data 1.0 Jakarta EE 11 Core Pro fi Updated Not Updated New

Slide 13

Slide 13 text

Jakarta EE 11 Core Pro fi le Updated Not Updated New RESTful Web Services 4.0 JSON Processing 2.1 JSON Binding 3.0 Annotations 3.0 CDI Lite 4.1 Interceptors 2.2 Dependency Injection 2.0

Slide 14

Slide 14 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 15

Slide 15 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Release Cadence ~6-9 Months after the latest LTS of Java

Slide 16

Slide 16 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) May, 2024 Milestone 4 • Feature complete • All API jars released • For each API at least one compatible implementation (e.g. Hibernate, Mojarra) • Each compatible implementation passed standalone TCK jakarta.platform jakarta.jakartaee-api 11.0.0-M4 provided

Slide 17

Slide 17 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Q4, 2024 (Core Pro fi le) Q1, 2025 (Web Pro fi le) Q2, 2025 (Platform)

Slide 18

Slide 18 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) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CRaC

Slide 19

Slide 19 text

Running Application Running Application Aware of checkpoint being created Aware of restore happening

Slide 20

Slide 20 text

Source: Gerrit Grunwald, Azul

Slide 21

Slide 21 text

JVM Application Resource Resource beforeCheckpoint() afterRestore() beforeCheckpoint() afterRestore()

Slide 22

Slide 22 text

java -XX:CRaCCheckpointTo=PATH -jar app.jar java -XX:CRaCRestoreFrom=PATH START RESTORE

Slide 23

Slide 23 text

CRaC Engines CRaC Engines

Slide 24

Slide 24 text

Checkpoint Restore In Userspace (CRIU)

Slide 25

Slide 25 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Warp -XX:CRaCEngine=warp

Slide 26

Slide 26 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) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta EE and CRaC

Slide 27

Slide 27 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Managed Resources

Slide 28

Slide 28 text

JVM Application Resource Resource beforeCheckpoint() afterRestore() beforeCheckpoint() afterRestore() Application Server External Resources

Slide 29

Slide 29 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta Contexts and Dependency Injection 4.1 https://jakarta.ee/speci fi cations/cdi/4.1/

Slide 30

Slide 30 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CDI Application Lifecycle Events

Slide 31

Slide 31 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) BeforeBeanDiscovery AfterTypeDiscovery BeforeShutdown AfterBeanDiscovery AfterDeploymentValidation

Slide 32

Slide 32 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CDI Bean Discovery Events

Slide 33

Slide 33 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ProcessAnnotatedType ProcessInjectionPoint ProcessInjectionTarget ProcessBeanAttributes ProcessBean ProcessProducer ProcessObserverMethod

Slide 34

Slide 34 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CDI Scopes

Slide 35

Slide 35 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) ApplicationScoped SessionScoped Custom Scopes RequestScoped

Slide 36

Slide 36 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) (ApplicationScoped.class) @Observes @Destroyed(ApplicationScoped.class) @Observes @Initialized

Slide 37

Slide 37 text

private void init(@Observes @Initialized(ApplicationScoped.class) Object init) { // initialised } private void destroy(@Observes @Destroyed(ApplicationScoped.class) Object init) { // destroyed }

Slide 38

Slide 38 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) The CRaC API

Slide 39

Slide 39 text

public interface Resource { void beforeCheckpoint(Context context); void afterRestore(Context context); } org.crac crac 1.5.0

Slide 40

Slide 40 text

@ApplicationScoped public class StartupListener implements Resource { @Override public void beforeCheckpoint(Context context) { // before checkpoint } @Override public void afterRestore(Context context) { // after restore } }

Slide 41

Slide 41 text

Demo

Slide 42

Slide 42 text

Helidon Quarkus Average startup Time (ms) 0 0,65 1,3 1,95 2,6 1,234 1,379 1,332 2,409 No CRaC CRaC kind of not very scienti fi c 2.3 GHz 8-Core Intel Core i9

Slide 43

Slide 43 text

Helidon Quarkus Average startup Time (ms) 0 0,375 0,75 1,125 1,5 0,551 0,712 0,847 1,458 No CRaC CRaC kind of not very scienti fi c 10-Core Apple M1 Max

Slide 44

Slide 44 text

COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Summary

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

2026 2024/5 2020 Java 21 Embrace Records Jakarta Data CDI Centric Removals and Deprecations Jakarta EE Core Pro fi le 2022 COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) 12 javax.* -> jakarta.*

Slide 47

Slide 47 text

Authorization 5.0* Activation 2.1 Batch 2.2 Connectors 2.2 Mail 2.1 Messaging 3.1 Enterprise Beans 4.1 RESTful Web Services 5.0 JSON Processing 2.2 JSON Binding 3.1 Annotations 3.1 CDI Lite 5.0 Interceptors 2.2 Dependency Injection 2.0 Servlet 6.2 Pages 4.1 Expression Language 6.1 Debugging Support 2.0 Standard Tag Libraries 3.1 Faces 5.0 WebSocket 2.3 Enterprise Beans Lite 4.1 Persistence 4.0 Transactions 2.1 CDI 5.0 Authentication 5.0* Concurrency 3.2 Security 5.0 Validation 4.0 Jakarta EE 12 Platform Updated Not Updated New Data 1.1 Query 1.0 Subject to Change MVC NoSQL

Slide 48

Slide 48 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CRaC

Slide 49

Slide 49 text

COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Jakarta CRaC An Idea?

Slide 50

Slide 50 text

Project Leyden

Slide 51

Slide 51 text

Jakarta EE https://jakarta.ee Get Started
 https://start.jakarta.ee CRaC http://openjdk.org/projects/crac Demo Code https://github.com/mehmandarov/randomstrings https://theguywiththeduketattoo.com

Slide 52

Slide 52 text

No content