JPure: A Modular 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. The authors present a novel purity system for Java that employs purity annotations which can be checked modularly. This is done using a flow-sensitive, intra-procedural 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. They evaluate their system against several packages from the Java Standard Library. Their results indicate it is possible to uncover significant amounts of purity efficiently.