Java software provider Azul has begun offering builds of OpenJDK Java with Coordinated Restore at Checkpoint (CRaC) functionality, intended to improve Java startup and warmup times.
Formally announced May 16, the commercially supported Azul Zulu builds of OpenJDK with CRaC support are generally available for Java 17 on Linux x64 platforms. Freely downloadable at azul.com, Azul Zulu with CRaC can be used for development, prototyping, and production purposes, the company said. Azul plans CRaC capabilities for additional Java versions as well.
The CRaC Java API allows for coordination of resources during checkpoint and restore operations. CRaC was designed to enable Java applications to start instantaneously and at full speed, and is positioned for serverless functions, containers, microservices, and other use cases.
CRaC reduces Java application startup and warmup times to milliseconds from seconds or even minutes, Azul said. The CRaC approach allows a running application to pause, snapshot its state, and then restart later, even on a different machine. A CRaC checkpoint saves the full context of the application process as an image, including state and memory. Upon restore, the application and its state are reloaded and continue from the same point where the checkpoint was created.
Traditional workarounds to address slow Java startup and warmup times include containerisation and caching, load balancing, pre-loading, pre-optimising, and pre-initialising application code. But these approaches involve significant additional complexity and infrastructure overhead, increasing cost and lowering operational and developer efficiency, Azul said.
Alternative approaches such as ahead-of-time compilation attempt to address similar problems but suffer from lack of full compatibility with the Java specification and decreased runtime performance.