Breaks the browser language barrier (includes a plugin-free JVM).
Clone or download
John Vilk
John Vilk Merge pull request #512 from Solant/update-build-dependency
Update build dependency
Latest commit 3afc3cf Feb 8, 2018
Permalink
Failed to load latest commit information.
bin Re-committing bin files, removing logic to delete them on clean from … Aug 18, 2016
classes Small change to make unit tests Windows friendly. Oct 30, 2016
console Update to TypeScript 2.0 and BFS 1.0.0. Oct 22, 2016
docs Update README.md Nov 8, 2016
src Merge pull request #507 from amahdy/patch-1 Jan 10, 2018
tasks Updated locate-java-home package, fixed import issues Feb 7, 2018
vendor Fix/reimplement DoppioJVM's zip natives, which fixes the Dacapo test … Dec 2, 2015
.gitignore Update to TypeScript 2.0 and BFS 1.0.0. Oct 22, 2016
.npmignore Removing bower, updating npmignore, bumping version, adding NPM badge… May 25, 2016
.travis.yml Modified Travis CI script to actually run tests Feb 8, 2018
Gruntfile.js Update to TypeScript 2.0 and BFS 1.0.0. Oct 22, 2016
Grunttasks.ts Update to TypeScript 2.0 and BFS 1.0.0. Oct 22, 2016
LICENSE Upgrading to TS1.6, moving to TSD for DefinitelyTyped deps, using Loc… Oct 18, 2015
README.md Some clarification. Jun 11, 2017
appveyor.yml Update for TS 2.1+, use yarn on CI. Mar 27, 2017
install.js Migrate doppio.jar creation to this repository. May 20, 2016
jsconfig.json Miscellaneous cleanups and skeleton for the new UnixFileSystem class. Nov 3, 2015
package.json Downgrade browserfs version to fix tests that depend on output Feb 7, 2018
prepublish.js Adding NPM bin scripts to repository Aug 18, 2016
tsconfig.json Update to TypeScript 2.0 and BFS 1.0.0. Oct 22, 2016
yarn.lock Downgrade browserfs version to fix tests that depend on output Feb 7, 2018

README.md

doppio: A JVM in TypeScript v0.5.0

Join the chat at https://gitter.im/plasma-umass/doppio Build Status Build status npm version david-dm-status-badge david-dm-status-badge

doppio is a double shot of espresso. In this case, it's also a POSIX-compatible runtime system plus a JVM written in TypeScript and an active research project of the PLASMA group at the University of Massachusetts.

To try doppio now, head to the live demo page.

To learn more, read some documentation, or read our academic paper (alt. link w/ no paywall) published at PLDI 2014!

You can also get in touch via our mailing list or via the IRC channel #plasma-umass on Freenode.

Getting & Building the Code

Before attempting to build doppio, you must have the following installed:

  • Node v6.0 or higher
    • There is a bug that prevents you from compiling DoppioJVM with Node v4 and below.
  • NPM package grunt-cli installed globally
    • npm install -g grunt-cli
  • Java 8 JDK
  • (Recommended) Yarn

If you are on Windows, you will need the following installed:

  • Git (must be on your PATH)
  • Python (must be on your PATH)
  • A version of Visual Studio

Run the following commands to build doppio. Note that your first time building may take some time, as the build script will download the entire Java Class Library.

git clone https://github.com/plasma-umass/doppio.git
cd doppio
yarn install       # npm install should work if you do not have yarn
grunt release      # For browser integration.
grunt release-cli  # For command-line use.

Testing

Run the full test suite using node.js:

grunt test

Run the full test suite in a web browser:

grunt test-browser

Run a specific test by invoking the test runner manually:

node build/dev-cli/console/test_runner.js classes/test/Strings

Command-line Usage

Run doppio with node.js (after grunt release-cli):

./doppio classes.demo.Fib 7
./doppio -jar my_application.jar
./doppio -cp my/class/path SomeClass

Integrating Into Your Site

Check out our Developer Guide for information on how you can integrate doppio into your website!

You can also build and interact with a simple example application with:

grunt examples

The code is in docs/examples.