| <!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> |