Share
Embed
Duke on CRaC with Jakarta EE
Have you heard of Coordinated Restore at Checkpoint (CRaC)? The short version is that it is a super fast way to start your Java applications. Did you know that you can do that with Jakarta EE as well?
Join us in this session and follow Duke’s adventures of building modern and quick Jakarta EE applications with even faster start-up time. You will learn the basics of CRaC as well as gain an understanding of why it is a particularly good fit for Jakarta EE.
ivargrimstad
May 15, 2025
Transcript
52 slides
-
Duke on CRaC with Jakarta EE Ivar Grimstad Jakarta EE
Developer Advocate Rustam Mehmandarov Senior Software Engineer -
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 -
2004 2024/5 1995 1999 2006 2017 2020 javax.* -> jakarta.*
2014 JSR 330 2009 -
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 -
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 -
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 -
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 -
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 -
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 -
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 !! -
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 -
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 <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>11.0.0-M4</version> <scope>provided</scope> </dependency> -
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) -
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 -
Running Application Running Application Aware of checkpoint being created Aware
of restore happening -
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 -
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 -
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 -
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/ -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
private void init(@Observes @Initialized(ApplicationScoped.class) Object init) { // initialised }
private void destroy(@Observes @Destroyed(ApplicationScoped.class) Object init) { // destroyed } -
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 -
public interface Resource { void beforeCheckpoint(Context<? extends Resource> context); void
afterRestore(Context<? extends Resource> context); } <dependency> <groupId>org.crac</groupId> <artifactId>crac</artifactId> <version>1.5.0</version> </dependency> -
@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 } } -
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 -
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 -
COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Summary -
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 -
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.* -
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 -
COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS
LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CRaC -
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? -
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