jContractor: A Reflective Java Library to Support Design by Contract

  • Authors:
  • Murat Karaorman;Urs Hölzle;John L. Bruno

  • Affiliations:
  • -;-;-

  • Venue:
  • Reflection '99 Proceedings of the Second International Conference on Meta-Level Architectures and Reflection
  • Year:
  • 1999

Quantified Score

Hi-index 0.00

Visualization

Abstract

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 synthesize 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.