JPURE: A Modularly Checkable Purity System for Java

Purity Analysis is the problem of determining whether or not a method may have side-effects. This has applications in automatic parallelisation, extended static checking, and more.

JPure is a novel purity system for Java that employs purity annotations which can be checked modularly. This is done using a flow-sensitive, intraprocedural analysis. The system exploits two properties, called freshness and locality, to increase the range of methods that can be considered pure. JPure also includes an inference engine for annotating legacy code.


  • JPure: a Modular Purity System for Java. David J. Pearce. In Proceedings of the Conference on Compiler Construction, volume 6601 of Lecture Notes in Computer Science, pages 104--123, 2011. © Springer-Verlag [ Postscript / PDF / PPT / Conference Website ]


v0.2 July 2011 UNIX (inc. Linux) / Cygwin jpure-110711.tgz
v0.1 October 2010 UNIX (inc. Linux) / Cygwin jpure-210410.tgz


You will need to download the ANTLR runtime library as well; this should be loaded onto the classpath, or copied into the jpure/lib directory (where it should be picked up by the bin/jpure script). Finally, JPure builds on top of JKit.