Contracts for Java is a new open source tool from Google that makes it easier to implement contracts in Java. According to Google’s announcement, this new tool is based on Modern Jass by Johannes Rieken and inspired by the programming language Eiffel. It was created by two Google engineers – David Morgan, Andreas Leitner – using their 20% time, and was expanded as part of an internship by Nhat Minh Le.
According to Wikipedia, Design by Contract is:
An approach to designing computer software. It prescribes that software designers should define formal, precise and verifiable interface specifications for software components, which extend the ordinary definition of abstract data types with preconditions, postconditions and invariants. These specifications are referred to as “contracts”, in accordance with a conceptual metaphor with the conditions and obligations of business contracts.
According to Google’s announcement:
Traditionally, Java programmers enforced preconditions using explicit parameter validation code in public methods, and assertions in non-public methods. Likewise, they enforced invariants and postconditions using assertions. This approach is described in detail here. Since then, new features in Java 5 have enabled a more convenient and expressive implementation of contracts.