Jalapeno is a virtual machine for Java(TM) servers written in Java.
A running Java program involves four layers of functionality: the user code
, the virtual-machine, the operating system, and the hardware. By drawing t
he Java / non-Java boundary below the virtual machine rather than above it,
Jalapeno reduces the boundary-crossing overhead and opens up more opportun
ities for optimization.
To get Jalapeno started, a boot image of a working Jalapeno virtual machine
is concocted and written to a file. Later, this file can be loaded into me
mory and executed. Because the boot image consists entirely of Java objects
, it can be concocted by a Java program that runs in essay JVM. This progra
m uses reflection to convert the boot image into Jalapeno's object format.
A special MAGIC class allows unsafe casts and direct access to the hardware
. Methods of this class are recognized by Jalapeno's three compilers, which
ignore their bytecodes and emit special-purpose machine code. User code wi
ll not be allowed to call MAGIC methods so Java's integrity is preserved.
A small non-Java program is used to start up a boot image and as an interfa
ce to the operating system.
Java's programming features - object orientation, type safety, automatic me
mory management - greatly facilitated development of Jalapeno. However, we
also discovered some of the langauge's limitations.