Design and Implementation of Aspect-Oriented Programming Languages
10th October 2005 to 9th October 2008
"Aspect-oriented programming" consists of a set of new programming language features that help to structure programs
better. In particular, aspect-orientation makes it easier to express properties that would otherwise be scattered throughout
the code. The leading aspect-oriented programming language is a variant of Java, called Aspect]. There are a number of areas
where the AspectJ language could be improved. We identify a number of those deficiencies, and propose new language features
to overcome these difficulties. A common thread in several these features is that their implementation requires a compiler
to do very thorough analysis of the code at compile time. Another problem with AspectJ is that it can take quite a long time
to compile a program. Furthermore, the code that the compiler produces can be quite inefficient due to the use of aspects.
We propose ways of attacking both of these problems. The main tool that we shall use in our research is 'abc', a new compiler
for the Aspect) language, which was built by a team led by the applicant. abc has been designed to be easily extensible (to
make it easy to experiment with new features), and it also includes an infrastructure for sophisticated program analysis.
In previous work, the PI and his coworkers have demonstrated several important optimisations for Aspect], using this infrastructure.
The proposed team consists of the PI plus four research students. Each of these students has already made original research
contributions to the design of abc, and the team has already produced four papers for international conferences. It thus has
a proven track record This grant is also intended to continue the very fruitful collaboration with Laurie Hendren and her
team at McGill University (Canada). Hendren and PI initiated the initial construction of abc, while Hendren was on sabbatical
at Oxford, funded by and EPSRC visiting fellowship.