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

Duke on CRaC with Jakarta EE

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

March 06, 2025
Tweet

More Decks by ivargrimstad

Other Decks in Programming

Transcript

  1. Duke on CRaC with Jakarta EE Ivar Grimstad
 Jakarta EE

    Developer Advocate Rustam Mehmandarov
 Senior Software Engineer
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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 !!
  9. 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
  10. 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>
  11. 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)
  12. 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
  13. public interface Resource { void beforeCheckpoint(Context<? extends Resource> context); void

    afterRestore(Context<? extends Resource> context); } CRaC API <dependency> <groupId>org.crac</groupId> <artifactId>crac</artifactId> <version>1.5.0</version> </dependency>
  14. 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
  15. 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
  16. 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/
  17. 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
  18. private void init(@Observes @Initialized(ApplicationScoped.class) Object init) { // initialised }

    private void destroy(@Observes @Destroyed(ApplicationScoped.class) Object init) { // destroyed } @Observes @Initialized(ApplicationScoped.class)
  19. @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 } } <dependency> <groupId>org.crac</groupId> <artifactId>crac</artifactId> <version>1.5.0</version> </dependency>
  20. 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
  21. 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
  22. COPYRIGHT (C) 2022, ECLIPSE FOUNDATION, INC. | THIS WORK IS

    LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) Summary
  23. 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
  24. 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
  25. COPYRIGHT (C) 2025, ECLIPSE FOUNDATION, INC. | THIS WORK IS

    LICENSED UNDER A CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE (CC BY 4.0) CRaC
  26. 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?
  27. 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