ESC/Java2: a verification tool combining several analysis techniques (types, dataflow, proof). An overview of the checks it performs: exception freedom for common exceptions (null pointers, array indices, class casts). The lack of soundness and completeness: false positives and defects missed. Some further and specialised annotations extending core JML (non_null, unreachable, modifies, pure). Specification inheritance.
Tips on installing ESC/Java2
These steps work at the time of writing:
- Install Java 1.5 from Sun’s
Java 5 SE download page. Choose the Java SE Development Kit 5.0 (currently u17).- Note: even if you have a 64-bit operating system, choose a 32-bit JDK because the packaged Eclipse versions require this.
- Download and unpack the Mobius Delta release from http://kind.ucd.ie/products/opensource/Mobius/
- Make sure that the JDK you have just downloaded is on your PATH. Start the included Eclipse version by running eclipse/eclipse inside
the unpacked zip. - Configure Eclipse to work properly with ESC/Java2:
- Make Eclipse generate Java 1.4 bytecode. To do this, open the Eclipse preferences dialog (in Windows/Linux, Window->Preferences…; in Mac Eclipse->Preferences…). Set the Compiler compliance level to 1.4 in Java->Compiler settings.
- Make the ESC/Java2 use the internal version of the Simplify theorem prover:
in the Java->ESC/Java2 settings, make sure you check the Use Internal Version checkbox and select the appropriate version of your OS for the Simplify Internal Version combo box. - If you are using Linux or Mac, you need to do one more step, you need to make sure Simplify is executable; this can be done from the command-line prompt by typing:
chmod 755 ECLIPSE_HOME/eclipse/plugins/mobius.simplify.plugin_1.5.6/*
These steps are given at http://santos.cis.ksu.edu/771/node/8 which has a bit more information.
References
- ESC/Java 2 home page, KindSoftware, Systems Research Group, University College Dublin.
http://kind.ucd.ie/products/opensource/ESCJava2
- Current lead maintainers of ESC/Java 2. Site has the software, documentation, release notes, and some historical material.
- Eclipse plugin for ESC/Java 2, web site. SAnToS laboratory, Kansas State University.
http://jmleclipse.projects.cis.ksu.edu/docs/esc-java.shtml
- The ESC/Java 2 plugin is actually distributed from Dublin, but the documentation is still in Kansas.
- JMLEclipse plugin. SAnToS laboratory, Kansas State University.
http://jmleclipse.projects.cis.ksu.edu - SAnToS labs have several projects on specification and verification of Java code. This one is a front-end to the standard JML tools.
- Patrice Chalin, Joe Kiniry, Gary Leavens, and Erik Poll. Beyond Assertions: Advanced Specification and Verification with JML and ESC/Java2. In Formal Methods for Components and Objects: Proceedings of the 4th International Symposium FMCO 2005, Lecture Notes in Computer Science 4111, pages 342–363. Springer, 2005. DOI: 10.1007/11804192_16
- K. Rustan M. Leino. Extended Static Checking: A Ten-Year Perspective. In Informatics: 10 Years Back, 10 Years Ahead. Lecture Notes in Computer Science 2000, Springer. DOI: 10.1007/3-540-44577-3_11
- Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata. Extended Static Checking for Java. In Programming Language Design and Implementation: Proceedings of the ACM SIGPLAN Conference PLDI 2002. ACM SIGPLAN Notices 37(5):234–245. DOI:10.1145/512529.512558
- Donald H. Rumsfeld. Defense Department briefing, 12 February 2002. Also in Hart Seely, Pieces of Intelligence: The Existential Poetry of Donald H. Rumsfeld. Simon & Schuster, 2003.