Java Contract Suite (JContractS) is a resurrection of the iContract tool originally developed by Reto Kramer of Reliable Systems. John Swapceinski started the resurrection by decompiling the original JAR files, and making the sources compile with JDK 1.4 and higher. The result of his work can be found on

Johan Stuyts started the project so proper further development of the project can take place.


Java Contract Suite aims to be Design by Contract implementation for Java 1.4 source code. Support for source code of higher Java versions will be added in the future.

Even though there have been a number of Design by Contract implementations in the past, the adoption of Design by Contract has been minimal. To accelerate adoption the project is available under the liberal Apache License Version 2.0, and will try to provide tasks/extensions/plugins for as many development tools as possible.

Why iContract?

There were other, more active Design by Contract implementations than iContract when it was resurrected. Below are the reasons for choosing iContract instead of another implementation.

With iContract the code and the contracts are kept in the same location. The invariants, preconditions and postconditions are added to the Javadoc of the classes and methods. You don't have to switch between two files constantly during development.

The syntax used by iContract is clean and terse. It is easy to read and understand for people who have never used iContract before.

iContract supports Java 1.4. Some other implementations make use of annotations, which require Java 5 or higher.

There is no need for JVM parameters, JVM agents, specific class loaders and/or specific frameworks. The classes built with iContract can be used as is in any deployment environment.

Other implementations

See the Design by Contract page at Wikipedia for a list of Design by Contract implementations for Java (and other languages).

The project page of JContractS at