The simplest way to think of Graalvm is that it’s not a VM, it’s just a plungin replacement for Hotspot.
Hotspot is written in C++ and hard to change. So once the java JIT is written in java it will be easier to innovate.
But then they took the base and used the java to machine code capabilities to be able to do ahead of time compilation to machine code.
But the most amazing part is that if you use the graal apis to define an interpreter for a language (any language) then graal can generate a compiler from that interpreter. It will compile all that is known at compile time and leave to runtime what needs to happen at runtime. So essentially it does partial compilation.
But then they took the base and used the java to machine code capabilities to be able to do ahead of time compilation to machine code.
But the most amazing part is that if you use the graal apis to define an interpreter for a language (any language) then graal can generate a compiler from that interpreter. It will compile all that is known at compile time and leave to runtime what needs to happen at runtime. So essentially it does partial compilation.