BellSoft releases Liberica JDK LTS 17 and 21 with Coordinated Restore at Checkpoint (CRaC) for fast startup

BellSoft releases Liberica JDK LTS 17 and 21 with Coordinated Restore at Checkpoint (CRaC) for fast startup

Nov 6, 2023
Aleksei Voitylov

We are happy to announce the feature release of Liberica JDK LTS versions 17 and 21 with Coordinated Restore at Checkpoint (CRaC) support, enabling the developers to make running application snapshots and reduce the startup and warmup time of Java application to mere milliseconds!

As opposed to other methods of reducing startup and warmup time, such as Application Class Data Sharing (AppCDS) and AOT compilation, CRaC helps to achieve instant startup at peak performance without losing the ability to further optimize performance with JIT compiler.

The new builds will be available for x86_64 и AArch64 CPU architectures and Linux operating system.

Before diving into experiments with JVM with CRaC, let’s discuss the functionality in more detail to get a clearer picture of its capabilities and specifics.

What is Coordinated Restore at Checkpoint (CRaC)?

CRaC is an OpenJDK API that enables the developers to pause a running Java application (perform a checkpoint), save this state to a file, and then restore the application from the file from the moment it was paused. Metaphorically speaking, the process is similar to clicking "Save" in a computer game and then resuming playing with all your game achievements intact.

To learn more about the feature and main considerations when using it, as well as which applications will benefit from the API, refer to our article What is CRaC

Spring Boot and Liberica JDK with CRaC — made for each other!

Spring Boot currently integrates with CRaC as a Proof-of-Concept, the in-baked support is planned in future releases. Thanks to CRaC support, Liberica JDK, the default runtime for Spring, will help developers on their journey towards smooth integration of the functionality into their Spring Boot projects so that they can enjoy unprecedented startup and warmup speed with minimal code rewriting.

We already tested CRaC-ed Liberica JDK with Spring Boot Petclinic, and the results are amazing! Time to first operation reduced from 7.1 seconds to 54 milliseconds without additional configuration!

Experimental setup:

  • CPU: Intel(R) Xeon(R) CPU X5675 @ 3.07GHz,
  • JDK: Liberica JDK 17.0.8,
  • OS: Linux Ubuntu 22.04.1. 

Spring Boot Petclinic and Liberica JDK with CRaC: startup study results

Curious to know how to use CRaC with Java apps and Spring Boot projects? Head to our tutorial with step-by-step instructions!

Download the new Liberica JDK builds with CRaC and start experimenting!

CRaC is an open-source OpenJDK project, so Liberica JDK with CRaC is free for use. Liberica JDK with CRaC support can currently be used on bare metal and in virtual machines. Support for containerized workloads is in the makings.

Please note that OpenJDK builds with CRaC, including Liberica JDK, are not yet verified by TCK. So you can experiment with the functionality, see how it fits into your workloads and how it benefits your project. The information about new Liberica JDK builds with CRaC support will also be available via Discovery API. 

To get started with the feature, you can visit the official GitHub CRaC repository or read the online documentation on the OpenJDK page of the project, which includes hardware and software requirements, guides on configuring the JDK, troubleshooting tips, and so on. You can also consult BellSoft engineers, and we will be happy to help!

Download Liberica JDK with CRaC

Subcribe to our newsletter


Read the industry news, receive solutions to your problems, and find the ways to save money.

Further reading