Title Java API Compatibility Validator
Student Aleksandar Pantaleev
Mentor Miguel Mendez
Abstract
It is my understanding that the Google Web Toolkit would be much benefited by having a tool that "could examine two versions of a set of Java classes and report on interface changes that affect user code," as per http://code.google.com/p/google-web-toolkit/wiki/GWT_GSoC . I propose to complete such a tool within the timeframe of Google's Summer of Code 2007.

As a Ph.D. student in Software Engineering / Software Analysis and Understanding, I have ample experience with various algorithms and data structures relevant to analyzing object-oriented source code and runtime behavior. What is more, Java has been my first language of choice for implementing analysis tools, which is directly pertinent to the needs of the Google Web Toolkit.

I am slightly puzzled by the suggestion to use Java reflection to solve the problem, as that is sub-optimal in my opinion, and in fact is a step that can be skipped. A better solution would be to employ direct comparison of the Abstract Syntax Trees (AST) of the two versions of Java classes, and report the corresponding differences. I propose to develop a tool that will:

- Build the Abstract Syntax Trees of the Java classes in question.
- Compare pairs of Abstract Syntax Trees to encounter any changes between two versions of a set of Java classes.
- Report the identified differences in a concise structure that can be either examined by a human, or passed on to automated tools.

Further capabilities can be included in the tool as suggested by mentors and as time permits.