jpaul - Java Program Analysis Utilities Library

     Credo: "Papers have been written enough, let us see systems!" - Reinhard Wilhelm

jpaul is a Java implementation of several algorithms that are widely used in program analysis. Compiler writers often reimplement a (relatively small) set of algorithms: graph algorithms, dataflow engines, set constraint solvers etc. The goal of the jpaul project is to have these algorithms implemented independently of any compiler infrastructure project. jpaul emphasizes (in order): correctness, flexibility, ease-of-use, and asymptotic complexity (we are not very interested in cutting-edge low level optimizations). The intended audience consists of program analysis researchers in need of a correct, elegant, and fast way of prototyping their analysis ideas.

jpaul is implemented in Generic Java (JDK 1.5); you don't need any other package in order to use jpaul. For development, jpaul has very common dependencies: ant and junit.

The entire code is released under the terms of the (Modified) BSD Licence. In the spirit of scientific honesty, researchers who use jpaul are encouraged to acknowledge jpaul explicitly in their scientific publications; here is a suggested BibTeX entry.

NEWS: Version 2.5.1 released on April 5, 2006! - Release Notes; Download Area

Current Features

Getting Started

Mailing Lists

There are two mailing lists:

Projects that use jpaul

The jpaul Team

jpaul was started by Alex Salcianu in February 2005. Adam Kiezun provided many useful comments and formally joined the jpaul team in January 2006.


jpaul contains pieces of code contributed by the following people: Suhabe Bugrara (the initial version of the RegExps package), Darko Marinov (the Emacs prj.el script) and C. Scott Ananian (the initial versions of ReverseListIterator and UnionFind). Some of the code from this project was initially developed for the MIT FLEX compiler infrastructure.
Hosted by Logo
Copyright (c) 2005 - Alexandru Salcianu