AOT Compilation of Spring Boot: Behind the Scenes

The recently released Excelsior JET 15.3 has introduced out-of-the-box support for Spring Boot applications. Turning your Spring Boot jar into an optimized native binary has become as easy as adding a few lines to your pom.xml/build.gradle or invoking the command: jc MySpringBootApp.jar where jc is the Excelsior JET AOT compiler. In this article, we would …

Continue reading

Conservative GC: Is It Really That Bad?

There are numerous JVM implementations out there, based on different approaches and concepts. However, some aspects of the JVM architecture are often considered the Universal Truths that everyone should accept. Among them is the statement that a production-grade tracing garbage collector (GC) must compute the initial set of reachable objects precisely, whereas the alternative approach …

Continue reading

Portable Profilers And Where to Find Them

Many JVMs implement so called just-in-time (JIT) compilation that takes place at application’s run time. In particular, that provides an opportunity to gather execution profile and find the hottest methods, which are then recompiled with higher optimization level to achieve best performance.

In contrast, Excelsior JET uses ahead-of-time (AOT) compilation as the main compilation mode. This means that classes are compiled down to native code before execution if possible. There is also no such thing as recompilation of a class or a method at run time. However, profile guided optimizations (PGO) are still possible with AOT. The main difference is that the profile data has to be be collected by the application developer by running the application in profiling mode and then fed to the compiler.

Continue reading