ABSTRACT
Research in the design of aspect-oriented programming languages requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, new features for AspectJ have been proposed that require extensions in many dimensions: syntax, type checking and code generation, as well as data flow and control flow analyses.The AspectBench Compiler (abc) is an implementation of such a workbench. The base version of abc implements the full AspectJ language. Its frontend is built, using the Polyglot framework, as a modular extension of the Java language. The use of Polyglot gives flexibility of syntax and type checking. The backend is built using the Soot framework, to give modular code generation and analyses.In this paper, we outline the design of abc, focusing mostly on how the design supports extensibility. We then provide a general overview of how to use abc to implement an extension. Finally, we illustrate the extension mechanisms of abc through a number of small, but non-trivial, examples. abc is freely available under the GNU LGPL.
- abc. The AspectBench Compiler. Home page with downloads, FAQ, documentation, support mailing lists, and bug database. http://aspectbench.org.]]Google Scholar
- Jonathan Aldrich. Open modules: A proposal for modular reasoning in aspect-oriented programming. Technical Report CMU-ISRI-04-108, Institute for Software Research, Carnegie Mellon University, 2004.]]Google ScholarCross Ref
- Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, Ondrej Lhoták, Oege de Moor, Damien Sereni, Ganesh Sittampalam, and Julian Tibble. Building the abc AspectJ compiler with Polyglot and Soot. Technical Report abc-2004-4, aspectbench.org, 2004.]]Google Scholar
- Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, Ondrej Lhoták, Oege de Moor, Damien Sereni, Ganesh Sittampalam, and Julian Tibble. Optimising AspectJ. Technical Report abc-2004-3, aspectbench.org, 2004.]]Google Scholar
- Michael Brukman and Andrew C. Myers. PPG: a parser generator for extensible grammars, 2003. Available at www.cs.cornell.edu/Projects/polyglot/ppg.html.]]Google Scholar
- Shigeru Chiba and Kiyoshi Nakagawa. Josh: an open AspectJ-like language. In K. Lieberherr, editor, 3rd International Conference on AOSD, pages 102--111, 2004.]] Google ScholarDigital Library
- Shigeru Chiba and Muga Nishizawa. An easy-to-use toolkit for efficient Java bytecode translators. In 2nd International coference on Generative Programming and Component Engineering (GPCE '03), volume 2830 of LNCS, pages 364--376, 2003.]] Google Scholar
- Adrian Colyer and Andrew Clement. Large-scale AOSD for middleware. In 3rd International Conference on AOSD, pages 56--65. Association for Computing Machinery, 2004.]] Google ScholarDigital Library
- Kris de Volder. Aspect-oriented logic meta-programming. In Pierre Cointe, editor, 2nd International Conference on Meta-level Architectures and Reflection, volume 1616 of LNCS, pages 250--272, 1999.]] Google ScholarDigital Library
- Rémi Douence, Pascal Fradet, and Mario Südholt. Composition, reuse and interaction analysis of stateful aspects. In Karl Lieberherr, editor, 3rd International Conference on AOSD, pages 141--150, 2004.]] Google ScholarDigital Library
- Chris Dutchyn, Gregor Kiczales, and Hidehiko Masuhara. Tutorial: AOP language exploration using the Aspect Sand Box. In 1st International Conference on AOSD, 2002.]]Google Scholar
- Michael Eichberg, Mira Mezini, and Klaus Ostermann. Pointcuts as functional queries. In Second ASIAN Symposium on Programming Languages and Systems (APLAS 2004), Springer Lecture Notes in Computer Science, 2004.]]Google ScholarCross Ref
- Etienne Gagnon, Laurie J. Hendren, and Guillaume Marceau. Efficient inference of static types for Java bytecode. In Static Analysis Symposium, pages 199--219, 2000.]] Google ScholarDigital Library
- Kris Gybels and Johan Brichau. Arranging language features for more robust pattern-based crosscuts. In 2nd International Conference on AOSD, pages 60--69. ACM Press, 2003.]] Google ScholarDigital Library
- Stefan Hanenberg and Rainer Unland. Parametric introductions. In Mehmet Aksit, editor, 2nd International Conference on AOSD, pages 80--89, 2003.]] Google ScholarDigital Library
- David Hanson and Todd Proebsting. A research C# compiler. Software --- Practice and Experience, to appear, 2004.]] Google ScholarDigital Library
- Bruno Harbulot and John R. Gurd. Using AspectJ to separate concerns in parallel scientific Java code. In Proceedings of the 3rd international conference on AOSD, pages 122--131. ACM Press, 2004.]] Google ScholarDigital Library
- Jim Hugunin. Guide for developers of the AspectJ compiler and weaver, 2004. Available at http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/org.aspectj/modules/docs/developer/compiler-weaver/index.html? rev=1.1&content-type=text/html&cvsroot=Technology_Project.]]Google Scholar
- Gregor Kiczales. The fun has just begun. Keynote address at AOSD. Available at aosd.net/archive/2003/kiczales-aosd-2003.ppt, 2003.]]Google Scholar
- Shriram Krishnamurthi, Kathi Fisler, and Michael Greenberg. Verifying aspect advice modularly. In ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 2004.]] Google ScholarDigital Library
- Hidehiko Masuhara and Kazunori Kawauchi. Dataflow pointcut in aspect-oriented programming. In 1st Asian Symposium on Programming Languages and Systems, volume 2895 of LNCS, pages 105--121, 2003.]]Google ScholarCross Ref
- Hidehiko Masuhara, Gregor Kiczales, and Chris Dutchyn. A compilation and optimization model for aspect-oriented programs. In Compiler Construction, volume 2622 of LNCS, pages 46--60, 2003.]] Google ScholarCross Ref
- Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for Java. In 12th International Conference on Compiler Construction, volume 2622 of LNCS, pages 138--152, 2003.]] Google ScholarDigital Library
- Kouhei Sakurai, Hidehiko Masuhara, Naoyasu Ubayashi, Saeko Matsuura, and Seiichi Komiya. Association aspects. In Karl Lieberherr, editor, 3rd International Conference on AOSD, pages 16--25, 2004.]] Google ScholarDigital Library
- Damien Sereni and Oege de Moor. Static analysis of aspects. In Proceedings of the 2nd International Conference on AOSD, pages 30--39, 2003.]] Google ScholarDigital Library
- Raja Vallée-Rai, Etienne Gagnon, Laurie J. Hendren, Patrick Lam, Patrice Pominville, and Vijay Sundaresan. Optimizing Java bytecode using the Soot framework: Is it feasible? In Compiler Construction, 9th International Conference (CC 2000), pages 18--34, 2000.]] Google ScholarDigital Library
- Kris De Volder. The TyRuBa metaprogramming system. Available at http://tyruba.sourceforge.net/.]]Google Scholar
- Robert Walker and Kevin Viggers. Implementing protocols via declarative event patterns. In ACM Sigsoft International Symposium on Foundations of Software Engineering (FSE-12), 2004.]] Google ScholarDigital Library
abc: an extensible AspectJ compiler
Recommendations
abc the aspectBench compiler for aspectJ a workbench for aspect-oriented programming language and compilers research
OOPSLA '05: Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applicationsAspect-oriented programming (AOP) is gaining popularity as a new way of modularising cross-cutting concerns. The aspectbench compiler (abc) is a new workbench for AOP research which provides an extensible research framework for both new language ...
abc: the aspectbench compiler for aspectJ
GPCE'05: Proceedings of the 4th international conference on Generative Programming and Component Engineeringabc is an extensible, optimising compiler for AspectJ. It has been designed as a workbench for experimental research in aspect-oriented programming languages and compilers. We outline a programme of research in these areas, and we review how abc can ...
Comments