We have built a DPJ-to-Java compiler based on the open-source javac compiler from Sun Microsystems.  The compiler uses the ForkJoinTask library for parallel code generation.  See below for instructions on how to get the compiler, the supporting runtime, several benchmarks, and the documentation.  To download DPJizer (a refactoring tool that assists with writing DPJ programs), see the DPJizer page.


The current release, DPJ v1.0, implements the core deterministic language described in our OOPSLA 2009 paper.  Additional features are under development, as described in the Current Design page and our other papers.  It is anticipated that future releases will support those features.

Supported Platforms

The DPJ software has been tested on Linux and Mac OS X, and should work as described on other UNIX variants supporting Java 1.6.  Everything should also work in Windows, but we have not tested DPJ on Windows systems.  To do install and use DPJ as described in the documentation, you can install Cygwin on your Windows system to get a UNIX-like interface and tool set.


Installation Manual (PDF, HTML):  Read this document first.  It tells you how to get the DPJ software, set up your environment, and use the DPJ compiler.

Tutorial (PDF, HTML):  The next thing to read after you’ve installed DPJ and got it running.  This document introduces basic DPJ concepts and shows you how to write useful programs in DPJ.

Runtime Documentation (HTML):  This HTML documentation, generated by Javadoc, covers the DPJ runtime API, including DPJ’s special classes for handling arrays.  Refer to this as you are reading the tutorial and writing DPJ programs. 

Reference Manual (PDF, HTML):  Covers all major features of the language, with discussion and examples.  After you’ve mastered the concepts in the tutorial, refer to this document to understand particular language features and how they work in detail.

Specification (PDF, HTML): A precise and concise specification of the language, with minimal discussion and examples.  It defines, as opposed to explains, the language.  This document should be read in conjunction with the reference manual.

All the documentation is also available in the Documentation subdirectory of the source tree.

Download Instructions

You can download DPJ for user install or developer install.  The Installation Manual (see link above) explains the difference.

User install:  The user install is available as a tarball here:  dpjbin.tar.gz.

Developer install:  The source tree is available on GitHub.  You can check it out from inside the Eclipse IDE (recommended if you intend to browse or edit the DPJ compiler source) or from the command line.  See § 3.1 of the Installation Manual for further instructions.


The DPJ compiler is derived from Sun’s javac compiler and is covered by the Gnu General Public License version 2.  Some of the benchmark code is derived from other third-party code, and is subject to their licenses.  The rest of the code is licensed under the University of Illinois Open Source License.  Please see the file LICENSE.txt in the main directory for further detail.



Deterministic Parallel Java:  Download

University of Illinois at Urbana-Champaign