Over the years the JVM was built for applications that run for days, months to years, but with the adoption of distributed architectures, such as microservices and serverless, this requirement has changed and we no longer need a JVM to support long-term applications, but a Most effective JVM in the computational resource requirement.
With this in mind, support for modularity was launched in Java 9, but we have other fronts that are improving compilation techniques, such as Ahead of time compilation (AOT), Just in time compilation (JIT) and Native Image (GraalVM).
Therefore, in this lecture I will discuss each alternative, providing you with the necessary inputs to make more assertive decisions in your architectures.