The Java Modeling Language (JML) is a behavioral interface specification language that can be used to specify the behavior of Java modules (as in design by contract—DBC). It has many tools to do assertion checking, documentation generation, unit testing, static checking, verification, etc.
See the JMLSpecs web site for information on downloading various JML tools.
OpenJML is the next generation of the core JML tools and supports Java 1.7. It is based on OpenJDK.
The first publicly available JML tool suite, the Common JML Tools or "JML2", targeted Java 1.4 and earlier.
JML is used in a variety of courses, from early undergraduate through post-graduate, and in industrial and research tutorials. Several people have also developed screencasts and other online resources on formal methods techniques using JML. We’ve begun collecting these materials and links to other resources on our Teaching Materials page.
Wiki: DevelopmentNotes
Wiki: JAJML
Wiki: JIR
Wiki: JML2
Wiki: JML4
Wiki: JML6
Wiki: JMLTests
Wiki: JavaContracts
Wiki: JmlDocumentation
Wiki: JmlEclipse
Wiki: OpenJir
Wiki: OpenJml
Wiki: SafeJML
Wiki: SemanticDiscussionIndex
Wiki: TeachingMaterials
Wiki: space.menu
Wiki: temporalJML