Special section on formal methods for industrial critical systems

International Journal on Software Tools for Technology Transfer

, Volume 7, Issue 3, pp 212-232

First online:

An overview of JML tools and applications

  • Lilian BurdyAffiliated withINRIA
  • , Yoonsik CheonAffiliated withDept. of Computer Science, University of Texas at El Paso
  • , David R. CokAffiliated withR&D Laboratories, Eastman Kodak Company
  • , Michael D. ErnstAffiliated withComputer Science & Artificial Intelligence Lab, MIT
  • , Joseph R. KiniryAffiliated withDept. of Computer Science, University of Nijmegen
  • , Gary T. LeavensAffiliated withDept. of Computer Science, Iowa State University
  • , K. Rustan M. LeinoAffiliated withMicrosoft Research
  • , Erik PollAffiliated withDept. of Computer Science, University of Nijmegen Email author 

Rent the article at a discount

Rent now

* Final gross prices may vary according to local VAT.

Get Access


The Java Modeling Language (JML) can be used to specify the detailed design of Java classes and interfaces by adding annotations to Java source files. The aim of JML is to provide a specification language that is easy to use for Java programmers and that is supported by a wide range of tools for specification typechecking, runtime debugging, static analysis, and verification.

This paper gives an overview of the main ideas behind JML, details about JML’s wide range of tools, and a glimpse into existing applications of JML.


Java Formal specification Assertion checking Program verification Design by Contract