JML Trac Wiki
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.
- The current release is available from the OpenJML web site.
- The OpenJML Eclipse plug-in is available from the Eclipse update site: http://jmlspecs.sourceforge.net/openjml-updatesite
- Some files are also available from the JML sourceforge project site.
- The source code is a module in the sourceforge SVN repository for the JML project. Note that the repository at http://jmlspecs.svn.sourceforge.net/viewvc/jmlspecs/ is obsolete since sourceforge has reorganized project directory structures.
Other Projects and Experimental Efforts
- JAJML is an experimental implementation of JML based on JastAdd.
- JMLTests is a subproject devoted to creating a common testing framework that incorporates the test corpus from JML2 and can be used by the developers of a variety of JML-based tools.
- JmlEclipse offers experimental support for JML via the Eclipse JDT compiler. JmlEclipse offers preliminary support for the JML Intermediate Representation (JIR), Java Contracts (JC) and more. It has been largely inspired by the following (now superseded) projects:
- OpenJIR is an experimental version of OpenJml supporting the embedding of JML specifications into class files in the form of JIR.
- SafeJML is a new variant of JML designed to specify Safety Critical Java (SCJ) programs.
- temporalJML is an extension of JML that supports specification and checking of temporal properties of programs.
- DevelopmentNotes on future directions for JML and JML tool support.
The first publicly available JML tool suite, the Common JML Tools or "JML2", targeted Java 1.4 and earlier.
- The OpenJML tool set is documented on its web site and in a user guide.
- The older JML2 Tool Suite tools are documented using Texinfo and the man file format. A summary of this information is found on the JML2 documentation webpage.
- Information for developers who need to update the documentation can be found on the [JmlDocumentation] page.
- The JML2 Tool Suite comes with a large collection of example JML-annotated programs.
Semantics and Discussion Summaries
- Discussions about JML's Semantics are summarized on the Wiki, but largely carried out on the jmlspecs-interest mailing list.
- JML2 Javadoc API
- OpenJml Javadoc API
- A Beginner's Guide to Specification Writing
- Specification Writing MobiusPve? workspace
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.