jContractor: A Reflective Java Library to Support Design By Contract [chapter]

Murat Karaorman, Urs Hölzle, John Bruno
1999 Lecture Notes in Computer Science  
jContractor is a purely library based approach to support Design By Contract specifications such as preconditions, postconditions, class invariants, and recovery and exception handling in Java. jContractor uses an intuitive naming convention, and standard Java syntax to instrument Java classes and enforce Design By Contract constructs. The designer of a class specifies a contract by providing contract methods following jContractor naming conventions. jContractor uses Java Reflection to
more » ... e an instrumented version of a Java class by incorporating code that enforces the present jContractor contract specifications. Programmers enable the run-time enforcement of contracts by either engaging the jContractor class loader or by explicitly instantiating objects using the jContractor object factory. Programmers can use exactly the same syntax for invoking methods and passing object references regardless of whether contracts are present or not. Since jContractor is purely library-based, it requires no special tools such as modified compilers, modified JVMs, or pre-processors. An overview of jContractor's approach to solving these problems is given below:
doi:10.1007/3-540-48443-4_18 fatcat:2olh3jqlbfhanfnnar57gl3omu