Lecture 8: ESC/Java2

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:

  1. 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.
  2. Download and unpack the Mobius Delta release from http://kind.ucd.ie/products/opensource/Mobius/
  3. 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.
  4. 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.

Comments are closed.