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.