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 @ivargrimstad.bsky.social

Slide 3

Slide 3 text

https://github.com/mehmandarov https://www.linkedin.com/in/mehmandarov @[email protected] @rmehmandarov @rustam.no https://rustam.no

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 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) Speci fi cation Document API TCK Final Speci fi cation Compatible Implementation(s) Speci fi

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 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 10

Slide 10 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 11

Slide 11 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 12

Slide 12 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 13

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

Slide 14 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 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) 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 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) Q4, 2024 (Core Pro fi le) Q1, 2025 (Web Pro fi le) Q2, 2025 (Platform)

Slide 17

Slide 17 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 18

Slide 18 text

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

Slide 19

Slide 19 text

Source: Gerrit Grunwald, Azul

Slide 20

Slide 20 text

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

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) Jakarta Contexts and Dependency Injection 4.1 https://jakarta.ee/speci fi cations/cdi/4.1/

Slide 28

Slide 28 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 29

Slide 29 text

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

Slide 30

Slide 30 text

@ApplicationScoped public class StartupListener implements Resource { @Override public void beforeCheckpoint(Context extends Resource> context) { // before checkpoint } @Override public void afterRestore(Context extends Resource> context) { // after restore } } org.crac crac 1.5.0

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) Managed Resources

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Demo

Slide 34

Slide 34 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 35

Slide 35 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 36

Slide 36 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 37

Slide 37 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 2020 Java 21 Embrace Records Jakarta Data CDI Centric Removals and Deprecations javax.* -> jakarta.* Jakarta EE Core Pro fi le

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

Slide 39

Slide 39 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 40

Slide 40 text

Project Leyden

Slide 41

Slide 41 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://rustam.no https://jakarta.ee/community/developer-advocate