skip to main content
10.1145/1052898.1052906acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
Article

abc: an extensible AspectJ compiler

Published: 14 March 2005 Publication History

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.

References

[1]
abc. The AspectBench Compiler. Home page with downloads, FAQ, documentation, support mailing lists, and bug database. http://aspectbench.org.]]
[2]
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.]]
[3]
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.]]
[4]
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.]]
[5]
Michael Brukman and Andrew C. Myers. PPG: a parser generator for extensible grammars, 2003. Available at www.cs.cornell.edu/Projects/polyglot/ppg.html.]]
[6]
Shigeru Chiba and Kiyoshi Nakagawa. Josh: an open AspectJ-like language. In K. Lieberherr, editor, 3rd International Conference on AOSD, pages 102--111, 2004.]]
[7]
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.]]
[8]
Adrian Colyer and Andrew Clement. Large-scale AOSD for middleware. In 3rd International Conference on AOSD, pages 56--65. Association for Computing Machinery, 2004.]]
[9]
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.]]
[10]
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.]]
[11]
Chris Dutchyn, Gregor Kiczales, and Hidehiko Masuhara. Tutorial: AOP language exploration using the Aspect Sand Box. In 1st International Conference on AOSD, 2002.]]
[12]
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.]]
[13]
Etienne Gagnon, Laurie J. Hendren, and Guillaume Marceau. Efficient inference of static types for Java bytecode. In Static Analysis Symposium, pages 199--219, 2000.]]
[14]
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.]]
[15]
Stefan Hanenberg and Rainer Unland. Parametric introductions. In Mehmet Aksit, editor, 2nd International Conference on AOSD, pages 80--89, 2003.]]
[16]
David Hanson and Todd Proebsting. A research C# compiler. Software --- Practice and Experience, to appear, 2004.]]
[17]
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.]]
[18]
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.]]
[19]
Gregor Kiczales. The fun has just begun. Keynote address at AOSD. Available at aosd.net/archive/2003/kiczales-aosd-2003.ppt, 2003.]]
[20]
Shriram Krishnamurthi, Kathi Fisler, and Michael Greenberg. Verifying aspect advice modularly. In ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 2004.]]
[21]
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.]]
[22]
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.]]
[23]
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.]]
[24]
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.]]
[25]
Damien Sereni and Oege de Moor. Static analysis of aspects. In Proceedings of the 2nd International Conference on AOSD, pages 30--39, 2003.]]
[26]
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.]]
[27]
Kris De Volder. The TyRuBa metaprogramming system. Available at http://tyruba.sourceforge.net/.]]
[28]
Robert Walker and Kevin Viggers. Implementing protocols via declarative event patterns. In ACM Sigsoft International Symposium on Foundations of Software Engineering (FSE-12), 2004.]]

Cited By

View all
  • (2023)Residual Runtime Verification via Reachability AnalysisVerified Software. Theories, Tools and Experiments.10.1007/978-3-031-25803-9_9(148-166)Online publication date: 1-Feb-2023
  • (2021)An Extensible Compiler for Implementing Software Design Patterns as Concise Language ConstructsInternational Journal of Software Engineering and Knowledge Engineering10.1142/S021819402150032731:07(1043-1067)Online publication date: 23-Jul-2021
  • (2021)Finding and Use of Source Code Changes for Aspect-Oriented SoftwareEvaluation of Novel Approaches to Software Engineering10.1007/978-3-030-70006-5_19(469-493)Online publication date: 27-Feb-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
AOSD '05: Proceedings of the 4th international conference on Aspect-oriented software development
March 2005
210 pages
ISBN:1595930426
DOI:10.1145/1052898
  • General Chair:
  • Mira Mezini,
  • Program Chair:
  • Peri Tarr
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

  • Illinois Institute of Technology
  • BEA Systems, Inc.
  • Siemens AG, CT SE 2
  • IBMR: IBM Research
  • AOSD-Europe: European Network of Excellence on Aspect-Oriented Software Development
  • Oracle Corporation
  • AOSA: Aspect-Oriented Software Association, Inc
  • TheServerSide.COM

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 March 2005

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

AOSD05
Sponsor:
  • IBMR
  • AOSA

Acceptance Rates

Overall Acceptance Rate 41 of 139 submissions, 29%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)5
  • Downloads (Last 6 weeks)0
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Residual Runtime Verification via Reachability AnalysisVerified Software. Theories, Tools and Experiments.10.1007/978-3-031-25803-9_9(148-166)Online publication date: 1-Feb-2023
  • (2021)An Extensible Compiler for Implementing Software Design Patterns as Concise Language ConstructsInternational Journal of Software Engineering and Knowledge Engineering10.1142/S021819402150032731:07(1043-1067)Online publication date: 23-Jul-2021
  • (2021)Finding and Use of Source Code Changes for Aspect-Oriented SoftwareEvaluation of Novel Approaches to Software Engineering10.1007/978-3-030-70006-5_19(469-493)Online publication date: 27-Feb-2021
  • (2018)Method safety mechanism for asynchronous layer deactivationScience of Computer Programming10.1016/j.scico.2018.01.006156:C(104-120)Online publication date: 1-May-2018
  • (2017)Accurate reification of complete supertype information for dynamic analysis on the JVMACM SIGPLAN Notices10.1145/3170492.313606152:12(104-116)Online publication date: 23-Oct-2017
  • (2017)ADRENALIN-RV: Android Runtime Verification Using Load-Time Weaving2017 IEEE International Conference on Software Testing, Verification and Validation (ICST)10.1109/ICST.2017.61(532-539)Online publication date: Mar-2017
  • (2017)Function call interception techniquesSoftware: Practice and Experience10.1002/spe.250148:3(385-401)Online publication date: 16-May-2017
  • (2016)Application-specific language-oriented modularity: a case study of the ovirt projectCompanion Proceedings of the 15th International Conference on Modularity10.1145/2892664.2892692(178-183)Online publication date: 14-Mar-2016
  • (2016)Extended Code Coverage for AspectJ-Based Runtime Verification ToolsRuntime Verification10.1007/978-3-319-46982-9_14(219-234)Online publication date: 20-Sep-2016
  • (2016)Polymorphic bytecode instrumentationSoftware—Practice & Experience10.1002/spe.238546:10(1351-1380)Online publication date: 1-Oct-2016
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media