Fork me on GitHub

DoppioJVM

A Java Virtual Machine written in 100% JavaScript.

Read the academic paper »

Browse the code »

Click the button to start the demo. The demo will immediately preload a 40MB file containing the Java Class Library.

OS Resources

Contains support for a variety of UNIX-like operating system resources, including:

  • Thread Pool: Emulates multiple concurrent threads, letting DoppioJVM support multithreaded JVM programs.
  • File System: Maps files and directories to browser storage, cloud storage, zip files, and more! Uses our BrowserFS library.
  • Network Sockets: Maps outgoing TCP socket connections to WebSockets, which can connect to unmodified servers wrapped in Websockify.
  • Unmanaged Heap: Enables emulation of the controversial sun.misc.Unsafe API, which OpenJDK uses extensively internally.
  • Standard Streams: Supports stdin/stdout/stderr, which can be hooked up to arbitrary UIs (such as a terminal).

Compatibility

DoppioJVM uses an unmodified version of the Java 8 OpenJDK Java Class Library, giving it compatibility with a wide range of existing software.

Try software out by uploading a JAR with the "Upload Files..." button, and running it in the terminal with the java command!

Who

DoppioJVM is a research project from the PLASMA lab at the University of Massachusetts Amherst. DoppioJVM is primarily the work of John Vilk, with guidance from his advisor, Emery Berger. In addition, a number of other wonderful folks have made valuable contributions to DoppioJVM.