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.


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.
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.