I will be speaking at JavaOne for the first time today! In the meantime, watch my previous talk “Java 9 Modules: The Duke Yet Lives That OSGi Shall Depose” that I gave at JavaZone 2017 in Oslo recently.
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.