190 likes | 296 Vues
Learn about Jikes RVM, an open-source JVM project, features, components, benefits, and challenges of writing a JVM in Java. Discover related research, past highlights, and future developments.
E N D
The Jikes RVM Dr. Ian Rogers Jikes RVM Core Team Member Research Fellow, Advanced Processor Technologies Group, The University of Manchester
What is the Jikes RVM? • An open source JVM project • Released under the CPL license • Written in Java • Started as a closed source IBM research project calledJalapeño in December 1997
Some of the major components • Runtime system • Dynamic linking and class loader • Thread support • Garbage collector - MMTk • Copying and noncopying, generational and nongenerational, hybrids • Type accurate - used in other projects rotor, ovm • Baseline compiler – fast 1st compilation • Optimizing compiler • HIR → LIR → MIR conversion with optimisation at each level • Extended Array SSA form phases; BURS based instruction selector • On stack replacement, allows backing out of compiler decisions • Adaptive optimization system • Cost/benefit model to decide when and what to recompile • Boot image writer/runner
Why write a JVM in Java? • Most parts of the JVM don’t need to know about pointers • For the parts that don’t we use compiler magic: • Pragmas – tell the compiler not to emit the normal code sequence • Unboxed – special types that behave more like primitive types (e.g. Address) • There are potential benefits: • Compilation ahead of time of libraries into the boot image • No barriers to method inlining (other than JNI) • Reuse of Java tools • Platform independence • There are potential problems: • GC has to handle the application and the JVM • Boot strapping issues (e.g. class initializers)
Other Java in Java VMs • JavaInJava – Sun Microsystems 1998 • Squawk – Sun Microsystems 2002 • Ovm – Purdue 2004 • Rivet – MIT 1999 • Joeq – Stanford 2001 • Moxie – Intel 2006 And OS projects: • JNode – Prengsma 2003 • JX OS – Erlangen 2001 • JANOS – Utah 1999
Some early project highlights • Nov ‘97: project initiated • Mar ‘98: opt compiler, • Jan ‘00: adaptive system • 2000: Port to Linux/PPC (UMass) • Jan ‘01 – 10/01: university releases to 16 universities via IP agreements • Not open source, can’t collaborate, can’t use for teaching • Oct ’01: Open source release (CPL) • “Jalapeno” “Jikes RVM” • Used non-open source libraries from OTI • Dec ‘02: Switched to Classpath (mostly) • Apr ’03: Full switch to Classpath, runs Eclipse • Dec ’03: MacOS/PPC32 • Nov ’04: AIX/PPC64
Since then… • Regression testing infrastructure • Constant improvements throughout the VM • Move to make source editable in Eclipse • Switch to ant based build system • Support for Java 5.0 • Rewrite of portions of the VM to use Java 5.0 language features
Related research • Lots of garbage collection papers! • Dynamic parallelization • Manchester, Toronto • Transactional memories • Stanford • Distributed JVM • ANU • Aspects • Steamloom – open source VM with dynamic aspects - Darmstadt • Machine learning for GC, dynamic compilation, … • Binary translation • PearColator – open source x86 and PPC binary translator - Manchester • Dynamically typed language support • Parakeet – open source Parrot VM - Manchester
Hopefully coming soon.. • Interpreter • JDWP support • x86 64 support • JNode integration
Thanks Please visit us at: http://www.jikesrvm.org/