Summary
In this chapter, we started by learning what GraalVM is, followed by understanding how JVM works and its architecture, along with its various subsystems and components. Later on, we also learned how JVM combines the best of interpreters and the compiler approach to run Java code on various target architectures, along with how a code is compiled just-in-time with C1 and C2 compilers. Lastly, we learned about various types of code optimizations that the JVM performs.
This chapter provided a good understanding of the architecture of JVM, which will help us understand how the GraalVM architecture works and how it is built on top of JVM.
The next chapter will cover the details of how JIT compilers work and help you understand how Graal JIT builds on top of JVM JIT.