<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
          "http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>"VMKit" JVM and .Net runtimes for LLVM</title>
  <link type="text/css" rel="stylesheet" href="menu.css" />
  <link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>
<!--#include virtual="menu.html.incl"-->
<div id="content">
  <!--*********************************************************************-->
  <h1>VMKit: JVM and .Net runtimes for LLVM</h1>
  <!--*********************************************************************-->
  
  <p>The VMKit project is an implementation of a JVM and CLI virtual machine
  (.Net is an implementation of the CLI). It translates Java bytecode and
  MSIL in the LLVM IR and uses the <a href="http://llvm.org">LLVM framework</a>
  for optimizations and compilation. For garbage collection, it uses
  <a href="http://jikesrvm.org/MMTk">MMTk</a>.
  You can <a href="get_started.html">get and build</a> the
  source today.</p>
  
  <!--=====================================================================-->
  <h2 id="goals">Features</h2>
  <!--=====================================================================-->
  
  <p>VMKit provides the following features:</p>
  
  <p><b>End-User Features</a></b>:</p>
  
  <ul>
  <li>Runs any Java and .Net applications on MacOSX and Unix-based systems.</li>
  <li>Precise garbage collection.</li>
  <li>Just-in-Time and Ahead-of-Time compilation.</li>
  <li>Portable on many architectures (x86, x64, ppc32, ppc64, arm).</li>
  </ul>

  <p><b>Developer Features</a></b>:</p>

  <ul>
    <li>Relatively small code base (~ 20k loc per VM)</li>
    <li>Infrastructure for running multiple VM/applications in a single
        process</li>
    <li>Infrastructure for virtual machine research and development</li>
  </ul>

  <!--=====================================================================-->
  <h2>Why?</h2>
  <!--=====================================================================-->
  
  <p>The development of VMKit was started out of a need to factorize virtual
     machine development. The JVM and CLI virtual machine have many 
     similarities, but are too high-level to be the basis of a "universal"
     virtual machine. The LLVM IR on the opposite is low-level enough to be 
     able to execute these VMs. VMKit is a proof of concept implementation
     towards that direction.</p>
     
  <p>Paper on the design of VMKit:
  <ul>
    <li><a href="publications/vmkit.html">VMKit: a Substrate for Managed Runtime Environments</a>
    </li>
  </ul>
     
  <p>The PhD thesis that initiated VMKit:
  <ul>
    <li><a href="publications/thesis.html">Nicolas Geoffray's PhD thesis</a>
    </li>
  </ul>
     
  <p>An introduction to VMKit can be found in the following video lectures:
  <ul>
    <li><a href="http://llvm.org/devmtg/2009-10/Geoffray_GarbageCollectionVMKit-700kbps.mov">
        Presentation of VMKit/MMTk at the 2009 LLVM Developer's Meeting</a>
    </li>
    <li><a href="http://llvm.org/devmtg/2008-08/Geoffray_VMKitProject_Lo.3gp">
        Presentation of VMKit at the 2008 LLVM Developer's Meeting</a>
    </li>
  </ul> 
  </p>
     
  <!--=====================================================================-->
  <h2>Current Status</h2>
  <!--=====================================================================-->
  
  <p>VMKit is still in its early development stages. If you are looking to
     experiment virtual machine technologies, VMKit is probably a great solution
     for you.  If you want to use it as a drop in JVM or .Net, it is not yet
     ready.</p>

  <p>VMKit currently has a decent implementation of the JVM. It executes
     large projects (e.g. OSGi Felix, Tomcat, Eclipse) and the
     <a href="http://dacapobench.org">DaCapo benchmarks</a>.
     The CLI implementation is still in its early stages, but can execute
     simple applications.</p>
     
  <p>The JVM has been tested on Linux/x64, Linux/x86, Linux/ppc32, MacOSX/x64,
     MacOSX/x86, MacOSX/ppc32. The JVM may work on ppc64. Support for
     Windows has not been investigated
  </p>

  
  <!--=====================================================================-->
  <h2>Get it and get involved!</h2>
  <!--=====================================================================-->
  
  <p>Start by <a href="get_started.html">getting the code, building it, and
     playing with it</a>.  This will show you the sorts of things we can do
     today.</p>
  
  <p>Once you've done that, please consider <a href="get_involved.html">getting
     involved in the VMKit community</a>. Currently, VMKit is tightly
     integrated into the LLVM community. You can sign up for the LLVM mailing
     list to ask and learn about how the project works.</p>
</div>
</body>
</html>
