JML
JML, the Java Modeling Language, is a behavioral specification language for Java that enables programmers to state contracts for Java methods and classes without altering Java syntax. It allows preconditions, postconditions, invariants, and frame conditions to be expressed as part of the source.
Specifications are written in Java comments, using constructs such as requires, ensures, invariant, and assignable. For
JML specifications can be checked at runtime or by static analysis. Runtime assertion checking inserts checks
JML originated in the late 1990s as part of research into formal methods for object-oriented software. It
JML is not part of the Java language specification; it is a separate language that complements Java