[JSR308] Release of JSR 308 implementation, checkers, case studies, proposal

Michael Ernst mernst at csail.mit.edu
Wed Oct 3 06:56:07 EDT 2007

We have released new versions of:
 1. the JSR 308 prototype implementation
 2. four type-checkers for finding/preventing errors,
    and a framework for writing your own checkers
 3. a technical report describing case studies that used
    all 4 type-checkers to find previously-unknown errors
 4. the JSR 308 proposal

In brief, you can find all of this at

Details follow.

1. The JSR 308 prototype implementation can be downloaded from

This release tracks Sun's recent re-organization of the OpenJDK
distribution.  The changes make our distribution an order of magnitude
smaller, and also easier to install.

2. The type-checkers, and the framework on which they are built, are
available at

This is the 7th release of the checkers and framework, and is
primarily a bugfix release.  It also includes partially-annotated
versions of the JDK, which eases use of the checkers.

The distribution contains 4 type checkers (also known as compiler
plug-ins or annotation processors):

 * for null pointer errors
 * for equality testing (interning) errors
 * for mutability errors (incorrect side effects), based on Javari
 * for mutability errors (incorrect side effects), based on IGJ

3. A technical report describes our experience using JSR 308 and
type-checkers that are built using it:

  Pluggable type-checking for custom type qualifiers in Java
  by Matthew M. Papi, Mahmood Ali, Telmo Luis Correa Jr., Jeff
  H. Perkins, and Michael D. Ernst.
  MIT Computer Science and Artificial Intelligence Laboratory technical
  report MIT-CSAIL-TR-2007-047, (Cambridge, MA), September 17, 2007.

As described in the report, the checkers revealed previously unknown
bugs in real programs.

4. The JSR 308 proposal has been revised in response to comments from


The new version gives the grammar for the Java language changes, adds
syntax for varargs, and expands the list of target types for classfile
format.  The most significant changes, however, are to the document's
organization rather than to its content.  The document is now split
into a normative main text, followed by non-normative appendices that
explain or amplify.  This makes the main text a manageable 8 pages
(most of which is grammar changes anyway), which should be less
offputting to readers.  Some design alternatives have been moved out
of the document for brevity.


More information about the JSR308 mailing list