@article {10.3844/jcssp.2016.314.322, article_type = {journal}, title = {Abstract Interpretation of Java Bytecode for Immutability Analysis}, author = {Haase, Oliver}, volume = {12}, number = {7}, year = {2016}, month = {Aug}, pages = {314-322}, doi = {10.3844/jcssp.2016.314.322}, url = {https://thescipub.com/abstract/jcssp.2016.314.322}, abstract = {Even though immutability is a desirable property, especially in a multi-threaded environment, implementing immutable Java classes is surprisingly hard because of a lack of language support. We present a static analysis tool using abstract bytecode interpretation that checks Java classes for compliance with a set of rules that together constitute state-based immutability. Being realized as a Find Bugs plug in, the tool can easily be integrated into most IDEs and hence the software development process. Our evaluation on a large, real world codebase shows that the average run-time effort for a single class is in the range of a few milliseconds, with only a very few statistical spikes.}, journal = {Journal of Computer Science}, publisher = {Science Publications} }