OpenJIT is an open-ended, reflective JIT compiler framework for Java being researched and developed in a joint project by
Tokyo Inst. Tech. and Fujitsu Ltd. Although in general self-descriptive systems have been studied in various contexts such
as reflection and interpreter/compiler bootstrapping, OpenJIT is a first system we know to date that offers a stable, full-fledged
Java JIT compiler that plugs into existing monolithic JVMs, and offer competitive performance to JITs typically written in
C or C++. This is in contrast to previous work where compilation did not occur in the execution phase, customized VMs being
developed ground-up, performance not competing with existing optimizing JIT compilers, and/or only a subset of the Java language
being supported. The main contributions of this paper are, 1) we propose an architecture for a reflective JIT compiler on
a monolithic VM, and identify the technical challenges as well as the techniques employed, 2) We define an API that adds to
the existing JIT compiler APIs in “classic” JVM to allow reflective JITs to be constructed, 3) We show detailed benchmarks
of run-time behavior of OpenJIT to demonstrate that, while being competitive with existing JITs the time- and space-overheads
of compiler metaobjects that exist in the heap are small and manageable. Being an object-oriented compiler framework, OpenJIT
can be configured to be small and portable or fully-fledged optimizing compiler framework in the spirit of SUIF. It is fully
JCK compliant, and runs all large Java applications we have tested to date including HotJava. We are currently distributing
OpenJIT for free to foster further research into advanced compiler optimization, compile-time reflection, advanced run-time
support for languages, as well as other areas such as embedded computing, metacomputing, and ubiquitous computing.