Search:       RSS, Atom

Site navigation:

Java types representation

Performing static subtype checks on component interfaces — particularly in the case of comparing an “old“ against a “new“ version of a component – entails two interesting “low level” challenges. The first is that the evaluation of subtype relation which backs the comparison has to be done at run time (normally it is done at compile time by the compiler). The second challenge is obtaining a representation of the component surface suitable for this subtyping evaluation: when only the distribution binary is available, language types visible on the surface need to be reconstructed from its contents before they can be compared.

We therefore investigate approaches to reconstruct complete representation of types that are visible on the component surface, on both its provided and required side. The result for the Java language, called Java Types, uses reflection and bytecode analysis to extract information about classes, and convert that to a model which covers the complete Java 5 language with its typing rules.

The JaCC (Java Class Comparator) library

This library performs the Java type extraction into a coherent representation, and also type comparison adhering to the Java Language Specification rules.

The library is covered by the Creative Commons Attribution Non-commercial Share Alike license.

  • JaCC homepage on the Assembla site.
  • TBD Documentation in the form of an draft article.

The library also forms a base for the OSGi Bundle Compatibility Checker and OSGi Version Generator implementations.