JOVE was an whole-program optimizing native code compiler for Java development by Instantiations Inc between 1998 and 2002. I was the overall architect and team leader of the development. JOVE compiled programs from Java bytecodes into native Windows x86 exe file. It applied very aggressive optimization techniques. It was able to compile AWT and Swing based GUI applications as well as non-GUI based applications. It was written in Java and was self-compiling.
Technically, JOVE was quite successful but it was a business flop. Instantiations was never able to find a business model that would support its ongoing development.
The design of JOVE drew heavily upon the team’s prior experience building high performance Smalltalk virtual machines and garbage collectors. We also tried to apply the latest research results relating to optimizing object-oriented languages. JOVE internally used a SSA based representation of the whole program and performed whole program class hierarchy analysis. At runtime it used selector row displacement method dispatch and Vitek constant time type inclusion testing. It used a multi-generational GC with thread specific heaps.
Team members who made significant contributions to JOVE included:
- Pat Caudill
- Steve Messick
- Carl McConnell
- Brian Wilkerson
- Juantia Ewing
- Tim O’Connor
Some JOVE Documents
JOVE Overview Presentation (PDF). This is an overview presentation covering JOVE that was presentated at the JAOO conference in 2000.
JOVE GC Presentation (PDF). This a a “lightening talk” overview of the JOVE garbage collector presented at the ISMM 2000
JOVE Runtime Design (PDF). This is the original design document describing the architecture of the JOVE runtime environment including the GC.
JOVE Optimization Techniques (PDF). This original document is an overview of the optimization techniques used by JOVE.