Welcome to the home page for the Deterministic Parallel Java (DPJ) project at the University of Illinois at Urbana-Champaign. 

Project Overview

The broad goal of our project is to provide deterministic-by-default semantics for an object-oriented, imperative parallel language, using primarily compile-time checking.  “Deterministic” means that the program produces the same visible output for a given input, in all executions.  “By default” means that deterministic behavior is guaranteed unless the programmer explicitly requests nondeterminism.  This is in contrast to today’s shared-memory programming models (e.g., threads and locks), which are inherently nondeterministic and can even have undetected data races.  Our paper at HotPar 2009 states our research goals in more detail.  The other pages of this site provide additional information about the DPJ type system and language.


This work is funded by NSF grants CSA 07-02724 and CNS 07-20772, and by Intel and Microsoft through the Universal Parallel Computing Research Center at the University of Illinois.

Software Release

The DPJ compiler, runtime, and related materials are now available as open-source software.  See the Download page for information on how to get them.


Deterministic Parallel Java

University of Illinois at Urbana-Champaign