The Java-based JVM Compiler Interface (JVMCI) enables a Java compiler (which must have been written in Java) to be used as a dynamic compiler by the JVM.
The reasoning behind the desire for the JVMCI is that it would be a highly optimized compiler that does not require low-level language features. Some JVM subsystems require low-level functionality, such as with garbage collection and bytecode interpretation. So, the JVMCI was written in Java instead of C or C++. This provides the collateral benefit of some of Java's greatest features, such as the following:
- Exception handling
- IDEs that are both free and robust
- Memory management
- Runtime extensibility
- Synchronization
- Unit testing support
As JVMCI was written in Java, it is arguably easier to maintain.
There are three primary components of the JVMCI API:
- Virtual machine data structure access...