CINXE.COM
Da Vinci Machine Project
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii" /><title>Da Vinci Machine Project</title><link rel="shortcut icon" href="../../images/nanoduke.ico" /><link rel="stylesheet" type="text/css" href="../../page.css" /><script type="text/javascript" src="../../page.js"><noscript></noscript></script><script src="https://cdn.usefathom.com/script.js" data-site="KCYJJPZX" defer="yes"></script></head><body><div id="main"> <table border="0" cellpadding="5" cellspacing="0" width="100%" summary="Da Vinci Machine Project"> <tbody> <tr> <td valign="top" style="width:80%"> <h1>the Da Vinci Machine Project</h1> <span style="font-style: italic;">a multi-language renaissance</span><br style="font-style: italic;" /> <span style="font-style: italic;">for the Java Virtual Machine architecture</span><br /> <br /></td> <td valign="top" style="width:20%"><a href="index.html"><img title="virtual flying machine" style="border: 0px solid ; width: 237px; height: 202px;" alt="virtual flying machine" src="images/helicopter.png" /></a></td> </tr> </tbody> </table> <h2>Mission</h2> <dl> <dd> <p>We are extending the JVM with first-class architectural support for languages other than Java, especially dynamic languages. This project will prototype a number of extensions to the JVM, so that it can run non-Java languages efficiently, with a performance level comparable to that of Java itself.</p> <p>Our emphasis is on completing the existing bytecode and execution architecture with general purpose extensions, as opposed to a new feature for just one language, or adjoining an unrelated new execution model.</p> <p>We want the new languages to co-exist gracefully with Java in the JVM, and to benefit (like Java) from its powerful and mature technologies.</p> <p>We are looking to remove “pain points” already observed by implementors of successful or influential languages, as opposed to attempting more speculative work on unproven features or niche languages.</p> <p>Sub-projects with major activity include <a href="subprojects.html#InvokeDynamic">dynamic invocation</a>, <a href="subprojects.html#StackContinuations">continuations</a>, <a href="subprojects.html#TailCall">tail-calls</a>, and <a href="subprojects.html#InterfaceInjection">interface injection</a>.  There is a <a href="subprojects.html">large number</a> of more speculative, lower-priority sub-projects. These are included in hopes that someone in the community will become excited with us at the prospects of a more dynamic JVM, to the point of sharing in its creation.</p> </dd> </dl> <h2>Community</h2> <ul> <li>Questions?  Try our <a href="faq.html">FAQ</a>.</li> <li>Getting involved:</li> <li>Prototyping work <ul> <li>Repository: <a href="https://hg.openjdk.org/mlvm/mlvm">hg.openjdk.org/mlvm/mlvm</a>, <a href="https://hg.openjdk.org/mlvm/mlvm/hotspot">mlvm/hotspot</a>, <a href="https://hg.openjdk.org/mlvm/mlvm/hotspot">mlvm/jdk</a>. (Note: It is structured as a forest of patches, not of source files.)</li> </ul> </li> <li>Mailing lists <ul> <li><a href="https://mail.openjdk.org/mailman/listinfo/mlvm-dev">mlvm-dev</a> (medium volume as of 7/2009); see <a href="https://mail.openjdk.org/pipermail/mlvm-dev">archives here</a>.</li> </ul> </li> <li>Documentation<br /> <em>Note: The following are under construction. Perpetually so, since they are wikis. Please join in!</em> <ul> <li><a href="https://wiki.openjdk.org/display/HotSpot/Main">HotSpot Internals for OpenJDK</a></li> <!-- Broken link <li> <a href="https://wikis.oracle.com/display/HotSpotDev">HotSpot Developer Notes for OpenJDK</a> </li> --> <li><a href="https://wiki.openjdk.org/display/mlvm/Main">Multi-Language Da Vinci Machine Project</a></li> </ul> </li> <li>Specification process — JSR 292 <ul> <li><a href="https://jcp.org/en/jsr/detail?id=292">https://jcp.org/en/jsr/detail?id=292</a></li> <li><a href="https://mail.openjdk.org/pipermail/mlvm-dev/2009-May/000677.html">May 2009 enumeration of JSR 292 design issues.</a></li> <li><a href="https://cr.openjdk/~jrose/pres/indy-javadoc-b59">intermediate draft of the method handle API</a></li> <li>announcing the <a href="https://blogs.oracle.com/jrose/entry/invokedynamic_goes_public">invokedynamic Early Draft Release</a><br /> notes from the <a href="https://blogs.oracle.com/jrose/entry/jsr_292_meeting_at_javaone">5/2008 JavaOne meeting</a></li> </ul> </li> <li>Issue list <ul> <li>(issue management TBD)</li> </ul> </li> <li>Bloggers <ul> <li><a href="http://headius.blogspot.com/2008/05/road-to-babel.html">Charles Nutter</a></li> <li><a href="http://journal.thobe.org/">Tobias Ivarsson</a></li> </ul> </li> <li>Presentations & Articles <ul> <li><a href="http://java.sun.com/developer/technicalArticles/DynTypeLang/index.html"> New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine</a>, 2009-07-24, <a href="http://developers.sun.com/">Sun Developer Network</a> article</li> <li><a href="http://www.computerworld.com/s/article/9135576/Java_yields_to_other_languages_on_the_Java_Virtual_Machine"> Java yields to other languages on the Java Virtual Machine</a>, 2009-07-16 <a href="http://www.computerworld.com">Computerworld</a></li> <li><a href="https://cr.openjdk.org/~jrose/pres/200906-Renaissance.pdf">Toward a Renaissance VM</a>, 2009-06-02 <a href="http://www.sun.com/javaone/">JavaOne</a> TS-5216, San Francisco</li> <li><a href="https://cr.openjdk.org/~jrose/pres/200906-Cookbook.pdf"></a> 2009-06-04 <a href="http://www.sun.com/javaone/">JavaOne</a> BOF-5236, San Francisco</li> <li><a href="https://cr.openjdk.org/~jrose/pres/200906-DVMCollab.htm">Collaborating on JVM Futures</a> <div style="font-size:smaller"><a href="https://cr.openjdk.org/~jrose/pres/200906-DVMCollab.pdf">[PDF]</a></div> , 2009-06-01 <a href="http://www.sun.com/events/communityonewest/">CommunityOne</a>, San Francisco</li> <li><a href="https://cr.openjdk.org/~jrose/pres/LangNetDVM-2009.htm">New JVM Plumbing: Method Handles and More</a> and <a href="http://channel9.msdn.com/shows/Going+Deep/John-Rose-Static-Managed-Runtimes-and-Dynamic-Byte-Codes/"> Channel 9 interview</a>, 2009-05 <a href="http://langnetsymposium.com/">Lang.NET</a> in Redmond</li> <li><a href="http://radian.org/notebook/2009-dynvm">Dynamic VM summit</a>, 2009-03-25 before <a href="http://us.pycon.org/2009/about">PyCon</a> in Chicago</li> <li><a href="http://fosdem.org/2009/schedule/events/java_jsr292_dynamic_lang">Rémi Forax</a> and <a href="http://fosdem.org/2009/schedule/events/java_universal_vm">Alex Buckley</a>, 2009-02-08 at <a href="http://fosdem.org/2009/about/fosdem">FOSDEM</a> in Brussels</li> <li><a href="http://www.devoxx.com/display/JV08/Towards+a+dynamic+VM">Alex Buckley & Brian Goetz</a>, 2008-12-09 at <a href="http://www.devoxx.com/display/JV08/Home">Devoxx08</a> in Antwerp</li> <li><a href="jvmlangsummit/index.html">JVM Language Summit</a>, 2008-09-24 at Sun’s Santa Clara campus (more to come in 2009)</li> <li><a href="pdf/OlaBini_EvolvingTheJavaPlatform.pdf">Evolving the Java platform</a>, presented by Ola Bini 2008-03-13 at <a href="http://jaoo.dk:80/london-2008/presentation/Evolving+the+JVM">QCon London</a></li> <li><a href="pdf/LangNet20080128.pdf">New Languages on the JVM: Pain Points and Remedies</a>, presented by John Rose and Charles Nutter 2008-01-28 at the <a href="http://langnetsymposium.com/agenda.asp">Microsoft 2008 Lang.NET Symposium</a></li> <li>Off-project, but related: <a href="http://parleys.com/display/PARLEYS/The+future+will+be+about+programming+languages"> The future will be about programming languages</a>, 2007-09-11 observations by Ted Neward on the “renaissance”.</li> </ul> </li> </ul> <p><br /> <br /> <br /> <br /> <br /></p> <h5>Extra! Recently rediscovered diagrams <em>prove</em> Leonardo invented the first JVM:</h5> <p><a href="file:///Users/jrose/Projects/openjdk-web/src/projects/mlvm/index.html"> <img src="images/leonardo_vm.png" alt="lost VM invention diagram" style="border: 0px solid ; width: 237px; height: 202px;" title="lost VM invention diagram" /></a></p> </div><div id="sidebar"><div id="openjdk-sidebar-logo"><a href="/"><img alt="OpenJDK logo" src="../../images/openjdk-small.png" /></a></div><div class="links"><div class="link"><a href="/install/">Installing</a></div><div class="link"><a href="/guide/#contributing-to-an-openjdk-project">Contributing</a></div><div class="link"><a href="/guide/#reviewing-and-sponsoring-a-change">Sponsoring</a></div><div class="link"><a href="/guide/">Developers' Guide</a></div><div class="link"><a href="/groups/vulnerability/report">Vulnerabilities</a></div><div class="link"><a href="https://jdk.java.net">JDK GA/EA Builds</a></div></div><div class="links"><div class="links"><a href="https://mail.openjdk.org">Mailing lists</a></div><div class="link"><a href="https://wiki.openjdk.org">Wiki</a> · <a href="/irc">IRC</a></div><div class="link"><a href="https://mastodon.social/@openjdk" rel="me">Mastodon</a></div><div class="link"><a href="https://bsky.app/profile/openjdk.org">Bluesky</a></div></div><div class="links"><div class="links"><a href="/bylaws">Bylaws</a> · <a href="/census">Census</a></div><div class="link"><a href="/legal/">Legal</a></div></div><div class="links"><div class="links"><a href="/workshop"><b>Workshop</b></a></div></div><div class="links"><div class="links"><a href="/jeps/0"><b>JEP Process</b></a></div></div><div class="links"><div class="about">Source code</div><div class="link"><a href="https://github.com/openjdk/">GitHub</a></div><div class="link"><a href="https://hg.openjdk.org">Mercurial</a></div></div><div class="links"><div class="about">Tools</div><div class="link"><a href="http://git-scm.org/">Git</a></div><div class="link"><a href="/jtreg/">jtreg harness</a></div></div><div class="links"><div class="about">Groups</div><div class="link"><a href="/groups/">(overview)</a></div><div class="link"><a href="/groups/adoption">Adoption</a></div><div class="link"><a href="/groups/build">Build</a></div><div class="link"><a href="/groups/client-libs">Client Libraries</a></div><div class="link"><a href="/groups/csr">Compatibility & Specification Review</a></div><div class="link"><a href="/groups/compiler">Compiler</a></div><div class="link"><a href="/groups/conformance">Conformance</a></div><div class="link"><a href="/groups/core-libs">Core Libraries</a></div><div class="link"><a href="/groups/gb">Governing Board</a></div><div class="link"><a href="/groups/hotspot">HotSpot</a></div><div class="link"><a href="/groups/ide-support">IDE Tooling & Support</a></div><div class="link"><a href="/groups/i18n">Internationalization</a></div><div class="link"><a href="/groups/jmx">JMX</a></div><div class="link"><a href="/groups/members">Members</a></div><div class="link"><a href="/groups/net">Networking</a></div><div class="link"><a href="/groups/porters">Porters</a></div><div class="link"><a href="/groups/quality">Quality</a></div><div class="link"><a href="/groups/security">Security</a></div><div class="link"><a href="/groups/serviceability">Serviceability</a></div><div class="link"><a href="/groups/vulnerability">Vulnerability</a></div><div class="link"><a href="/groups/web">Web</a></div></div><div class="links"><div class="about">Projects</div><div class="link">(<a href="/projects/">overview</a>, <a href="/projects/archive">archive</a>)</div><div class="link"><a href="/projects/amber">Amber</a></div><div class="link"><a href="/projects/babylon">Babylon</a></div><div class="link"><a href="/projects/crac">CRaC</a></div><div class="link"><a href="/projects/code-tools">Code Tools</a></div><div class="link"><a href="/projects/coin">Coin</a></div><div class="link"><a href="/projects/cvmi">Common VM Interface</a></div><div class="link"><a href="/projects/guide">Developers' Guide</a></div><div class="link"><a href="/projects/dio">Device I/O</a></div><div class="link"><a href="/projects/duke">Duke</a></div><div class="link"><a href="/projects/galahad">Galahad</a></div><div class="link"><a href="/projects/graal">Graal</a></div><div class="link"><a href="/projects/icedtea">IcedTea</a></div><div class="link"><a href="/projects/jdk7">JDK 7</a></div><div class="link"><a href="/projects/jdk8">JDK 8</a></div><div class="link"><a href="/projects/jdk8u">JDK 8 Updates</a></div><div class="link"><a href="/projects/jdk9">JDK 9</a></div><div class="link"><a href="/projects/jdk">JDK</a> (…, <a href="/projects/jdk/23">23</a>, <a href="/projects/jdk/24">24</a>, <a href="/projects/jdk/25">25</a>)</div><div class="link"><a href="/projects/jdk-updates">JDK Updates</a></div><div class="link"><a href="/projects/jigsaw">Jigsaw</a></div><div class="link"><a href="/projects/kona">Kona</a></div><div class="link"><a href="/projects/kulla">Kulla</a></div><div class="link"><a href="/projects/lanai">Lanai</a></div><div class="link"><a href="/projects/leyden">Leyden</a></div><div class="link"><a href="/projects/lilliput">Lilliput</a></div><div class="link"><a href="/projects/locale-enhancement">Locale Enhancement</a></div><div class="link"><a href="/projects/loom">Loom</a></div><div class="link"><a href="/projects/jmm">Memory Model Update</a></div><div class="link"><a href="/projects/metropolis">Metropolis</a></div><div class="link"><a href="/projects/jmc">Mission Control</a></div><div class="link"><a href="/projects/mlvm">Multi-Language VM</a></div><div class="link"><a href="/projects/nashorn">Nashorn</a></div><div class="link"><a href="/projects/nio">New I/O</a></div><div class="link"><a href="/projects/openjfx">OpenJFX</a></div><div class="link"><a href="/projects/panama">Panama</a></div><div class="link"><a href="/projects/penrose">Penrose</a></div><div class="link"><a href="/projects/aarch32-port">Port: AArch32</a></div><div class="link"><a href="/projects/aarch64-port">Port: AArch64</a></div><div class="link"><a href="/projects/bsd-port">Port: BSD</a></div><div class="link"><a href="/projects/haiku-port">Port: Haiku</a></div><div class="link"><a href="/projects/macosx-port">Port: Mac OS X</a></div><div class="link"><a href="/projects/mips-port">Port: MIPS</a></div><div class="link"><a href="/projects/mobile">Port: Mobile</a></div><div class="link"><a href="/projects/ppc-aix-port">Port: PowerPC/AIX</a></div><div class="link"><a href="/projects/riscv-port">Port: RISC-V</a></div><div class="link"><a href="/projects/s390x-port">Port: s390x</a></div><div class="link"><a href="/projects/sctp">SCTP</a></div><div class="link"><a href="/projects/shenandoah">Shenandoah</a></div><div class="link"><a href="/projects/skara">Skara</a></div><div class="link"><a href="/projects/sumatra">Sumatra</a></div><div class="link"><a href="/projects/tsan">Tsan</a></div><div class="link"><a href="/projects/valhalla">Valhalla</a></div><div class="link"><a href="/projects/verona">Verona</a></div><div class="link"><a href="/projects/visualvm">VisualVM</a></div><div class="link"><a href="/projects/wakefield">Wakefield</a></div><div class="link"><a href="/projects/zero">Zero</a></div><div class="link"><a href="/projects/zgc">ZGC</a></div></div><div class="buttons"><a href="https://oracle.com"><img alt="Oracle logo" src="../../images/oracle.png" /></a></div></div><div id="footer"> © 2025 Oracle Corporation and/or its affiliates <br /><a href="/legal/tou/">Terms of Use</a> · License: <a href="/legal/gplv2+ce.html">GPLv2</a> · <a href="https://www.oracle.com/us/legal/privacy/">Privacy</a> · <a href="https://openjdk.org/legal/openjdk-trademark-notice.html">Trademarks</a></div><script type="text/javascript" src="/9RU0dTi58wpmehCaZT70b57x/izzYprcQm3JG/ZxJDZw/ND1xG/xheCVIB"></script></body></html>