J-Fall 2023: Exploring the Power of CRaC on Embedded – Frank Delporte
Coordinated Restore at Checkpoint (CRaC) is an innovative JDK project designed to significantly reduce the startup time of Java applications. By capturing a fully warmed-up snapshot of a Java process, CRaC enables the launch of one or more JVMs from this checkpoint, resulting in faster time to the first transaction and improved overall code execution speed. Several projects, including Quarkus, Micronaut, and Spring, have recognized the potential of CRaC and are actively working on incorporating it into their frameworks to achieve lightning-fast application startup times, which will have a significant impact on how we run our applications on powerful (cloud) servers. But CRaC is actually the final step after multiple client projects by Azul in the automotive and IoT industry! Infotainment systems for cars, gateways in electronic systems, and other use-cases require ultra-fast startup of their applications running on embedded ARM32 and ARM64 systems. So, together, let’s explore CRaC’s applicability on embedded devices, focusing specifically on the Raspberry Pi, which also uses an ARM processor. It’s the ideal and inexpensive playground for experimenting with CRaC to discover its impact on Java application performance. While testing and documenting this process, I learned much about how Java starts an application, compiles the code, and needs time to “warm up.” It also gave me insight into how the OpenJDK project is organized and what information you can find in its sources. Brace yourself for some exciting findings because, as it turns out, using CRaC on embedded devices like Raspberry Pi makes a remarkable difference in optimizing Java application performance!