Summary
In this chapter, we were introduced to the new Spring AOT engine and underlying GraalVM project, along with its Native Image compiler. After declaring GraalVM’s plugin in the build file and providing the Native Image compiler with some reachability metadata and custom hints, it can be used to create Native Images. Spring Boot’s Gradle task buildBootImage
packages these standalone executable files into ready-to-use Docker images.
The main benefit of compiling Java-based source code into Native Images is significantly faster startup time and less memory usage. In a test where we started up the microservice instances at the same time, we observed 0.2-0.5 seconds startup times for the natively compiled microservices, compared with the 5.5 to 7 seconds required for the Java VM-based microservices for the same test. Also, the natively compiled microservices required less than half of the memory compared to the Java VM-based microservices after running through the...