📑 Table of Contents

ESC/Java (and more recently ESC/Java2), the "Extended Static Checker for Java," is a programming tool that attempts to find common run-time errors in Java programs at compile time.[1] The underlying approach used in ESC/Java is referred to as extended static checking, which is a collective name referring to a range of techniques for statically checking the correctness of various program constraints. For example, that an integer variable is greater-than-zero, or lies between the bounds of an array. This technique was pioneered in ESC/Java (and its predecessor, ESC/Modula-3) and can be thought of as an extended form of type checking. Extended static checking usually involves the use of an automated theorem prover and, in ESC/Java, the Simplify theorem prover was used.

ESC/Java is neither sound nor complete. This was intentional and aims to reduce the number of errors and/or warnings reported to the programmer, in order to make the tool more useful in practice. However, it does mean that: firstly, there are programs that ESC/Java will erroneously consider to be incorrect (known as false-positives); secondly, there are incorrect programs it will consider to be correct (known as false-negatives). Examples in the latter category include errors arising from modular arithmetic and/or multithreading.

ESC/Java was originally developed at the Compaq Systems Research Center (SRC). SRC launched the project in 1997, after work on their original extended static checker, ESC/Modula-3, ended in 1996. In 2002, SRC released the source code for ESC/Java and related tools. Recent versions of ESC/Java are based around the Java Modeling Language (JML). Users can control the amount and kinds of checking by annotating their programs with specially formatted comments or pragmas.

The University of Nijmegen's Security of Systems group released alpha versions of ESC/Java2, an extended version of ESC/Java that processes the JML specification language through 2004. From 2004 to 2009, ESC/Java2 development was managed by the KindSoftware Research Group at University College Dublin, which in 2009 moved to the IT University of Copenhagen, and in 2012 to the Technical University of Denmark. Over the years, ESC/Java2 has gained many new features including the ability to reason with multiple theorem provers and integration with Eclipse.

OpenJML, the successor of ESC/Java2, is available for Java 1.8.[2] The source is available at https://github.com/OpenJML

[3]

See also

edit

References

edit
  1. ^ Flanagan, C.; Leino, K.R.M.; Lillibridge, M.; Nelson, G.; Saxe, J. B.; Stata, R. (2002). Extended static checking for Java. Proceedings of the Conference on Programming Language Design and Implementation. pp. 234–245. doi:10.1145/512529.512558. ISBN 1-58113-463-0.
  2. ^ "OpenJML download site on sourceforge".
  3. ^ "Java Modeling Language (JML) / Code / [r9606] /OpenJML/Trunk/OpenJML".
Notes
edit

📚 Artikel Terkait di Wikipedia

Java Modeling Language

the Extended Static Checker (ESC/Java) aid development. JML is a behavioural interface specification language for Java modules. JML provides semantics

List of tools for static code analysis

run time errors in source code. ESC/Java and ESC/Java2 – Based on Java Modeling Language, an enriched version of Java Frama-C – An open-source analysis

Static program analysis

SPARK programming language (a subset of Ada) and the Java Modeling Language—JML—using ESC/Java and ESC/Java2, Frama-C WP (weakest precondition) plugin for

Dafny

Leino at Microsoft Research after his prior work on developing ESC/Modula-3, ESC/Java, and Spec#. Dafny is regularly featured in software verification

Extended static checking

verification conditions. Extended static checking was pioneered in ESC/Modula-3 and, later, ESC/Java. Its roots originate from more simplistic static checking

Whiley (programming language)

specifications. For example, ESC/Java and the Java Modeling Language add annotations to specify preconditions and postconditions to Java. Likewise, Spec# and

E-graph

certificates. E-graphs are also used in the Simplify theorem prover of ESC/Java. Equality saturation is used in specialized optimizing compilers, e.g.

List of programmers

program verification, Modula-3 committee, Simplify theorem prover in ESC/Java Klára Dán von Neumann (1911–1963) – principal programmer for the MANIAC