Dual JVM

From APIDesign

Revision as of 05:45, 2 May 2026 by JaroslavTulach (Talk | contribs)
Jump to: navigation, search

A heroic effort was needed to marry the fast start of the Enso engine (to be attributed to AOT compilation) with the need to dynamically load JVM classes. The effort is being called a "dual JVM" (see slides) because there are two Java virtual machines running in the single Enso process communicating effectively with each other.

The initial part of Java application is AOT compiled and as such it starts blazingly fast. At any time it can launch HotSpot JVM in the same process and run the remaining parts of the Java application more dynamically and JIT compile them.


Zero Copy Data Exchange

The essential part of the Dual JVM system is an effective exchange of data between those two JVMs. The system allows zero copy exchange of Buffer data (typically) in the Apache Arrow format between those two JVMs.

Personal tools
buy