90 likes | 109 Views
AspectJ Compiler is a powerful tool developed by the Programming Tools Group at Oxford University. It extends Java with aspect-oriented features, aiding in software architecture and design. With support for Eclipse and visualization, it helps in studying, analyzing, and improving AO techniques. The versatile tool consists of Polyglot for easy aspect addition, Soot for bytecode manipulation, and various representations for code analysis. While it excels in optimization, it has limitations like slower compilation and source-based aspect requirement. Future work includes monitoring synchronization and shared fields for enhanced functionality.
E N D
abc Compiler Zak Fry
Who and Where • Programming Tools Group at Oxford University, UK • Oege de Moor • Sable Research Group at McGill University, Quebec • Laurie Hendren
Language and Platform • AspectJ Compiler • Aspect Oriented (compliment to OOP) Extension of Java developed by Xerox PARC • Standalone with Eclipse support for generated code • Visualization support for crosscutting concerns
Architecture and Design • Polyglot – frontend that aids in adding AspectJ to Java • Soot – backend that deals with bytecode and aids in finding aspects/weaving • Inputs: .java and .class files • Outputs: AO .java and .class files
Representations • AspectJ AST • Java AST • Aspect Info • Instructions for weaver • Jimple • Skeleton • Regular IR • Woven IR • Final IR
Uses and Strengths • AspectJ and Aspect Oriented research • Conversion of OO Java to AO Java • Studying, Analyzing, Improving AO techniques • Strengths • Polyglot - Easy to extend or change aspect output • Soot (Jimple) – ease of translation between bytecode, Jimple, Java source • Optimization is much higher than competition
Benchmarks • EAJ – redefinition of “adding variables to pointcuts” – shows ease of adding functionality to abc (AOSD 2005) • Large study April 2006 of many AspectJ programs • Also: runtime verification, tracematches
Limitations • Slower than competitor ajc • Requires ALL aspects to be in source • No separate compilation
Future Work • Mostly individual extensions corresponding to individual projects • Monitoring synchronized blocks • Monitoring shared field access • Etc…