JavaCOP: Declarative pluggable types for java

  • Authors:
  • Shane Markstrum;Daniel Marino;Matthew Esquivel;Todd Millstein;Chris Andreae;James Noble

  • Affiliations:
  • Bucknell University, Lewisburg, PA;University of California, Los Angeles, Los Angeles, CA;University of California, Los Angeles, Los Angeles, CA;University of California, Los Angeles, Los Angeles, CA;Victoria University of Wellington, Wellington, New Zealand;Victoria University of Wellington, Wellington, New Zealand

  • Venue:
  • ACM Transactions on Programming Languages and Systems (TOPLAS)
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Pluggable types enable users to enforce multiple type systems in one programming language. We have developed a suite of tools, called the JavaCOP framework, that allows developers to create pluggable type systems for Java. JavaCOP provides a simple declarative language in which program constraints are defined over a program's abstract syntax tree. The JavaCOP compiler automatically enforces these constraints on programs during compilation. The JavaCOP framework also includes a dataflow analysis API in order to support type systems which depend on flow-sensitive information. Finally, JavaCOP includes a novel test framework which helps users gain confidence in the correctness of their pluggable type systems. We demonstrate the framework by discussing a number of pluggable type systems which have been implemented in JavaCOP in order to detect errors and enforce strong invariants in programs. These type systems range from general-purpose checkers, such as a type system for nonnull references, to domain-specific ones, such as a checker for conformance to a library's usage rules.