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