JML Specifications for the corresponding types in the Java Developement Kit (JDK). These specifications are intended for use in reasoning about specifications in the JDK, but are not endorsed by Sun Microsystems, Inc. in any way. The syntactic interfaces of the methods are copyright Sun Microsystems, Inc.

Specification Conventions

Specifications in .spec files should be interfaces, and these are compiled with JML's runtime assertion checking compiler (jmlc) to yield surrogate class files that are in the release. Other specifications should normally be found in .jml or .refines-spec files.

The specifications necessarily start with the Java interfaces, but we never include the javadoc comments or code from the JDK, since that would violate copyright restrictions.

The source code for this package uses the GNU Lesser General Public License, since it is part of the JML runtime libraries.


These types were designed by Sun Microsystems. Many of these were specified by Gary T. Leavens and Brandon Shilling, and David Cok has contributed several specifications as well. They have been refined by David R. Cok, using JML's connection to JUnit, along with with help from JML users. The specification of Object, and the enumerators, iterators, and collections in the JDK builds on work done for ESC/Java by Rustan Leino's group at HP SRC (which was Compaq SRC at the time).

At Iowa State, the development of JML was partially funded by a grant from Rockwell International Corporation and by the (US) National Science Foundation under grants CCR-9503168, CCR-9803843, CCR-0097907, and CCR-0113181.