Java on CRaC: Superfast JVM Application Startup


Details
One of the key benefits of a microservice architecture is the ability to dynamically respond to changes in load by spinning up new instances as required. However, when deploying JVM-based services, the warmup time of JIT compilation can be a limitation on the effectiveness of this technique.
One approach to solving this problem is using native images produced with GraalVM, where the service is statically compiled using an ahead-of-time (AOT) compiler. Although this does reduce startup time and footprint, it does so at the cost of overall performance.
A new project called CRaC (Coordinated Restore at Checkpoint) has been proposed and accepted into OpenJDK. The goal is to research the co-ordination of Java programs with mechanisms to checkpoint (snapshot) a running application. Restoring from the snapshot could solve some of the problems with the startup and warmup times, especially in microservices.
In this session, we’ll compare the native image AOT approach to the functionality of CRaC. We’ll also demonstrate CRaC using Azul’s Zulu JDK 17 build.
About Simon
He has been involved in promoting Java since the release of the first official JDK, when he joined Sun Microsystems in February 1996. He started helping to drive Java adoption back in 1999 as part of Sun’s Market Development Engineering group and moved to full time evangelism in January 2001. He also helped to start the Java Champion program. He has been in the IT business since 1984 and holds a Bachelor of Science degree in Physics from Brunel University in the U.K.

Java on CRaC: Superfast JVM Application Startup