Skip to main content

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 front end 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 back end 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. We illustrate the extension mechanisms of abc through a number of small, but nontrivial, examples. We then proceed to contrast the design goals of abc with those of the original AspectJ compiler, and how these different goals have led to different design decisions. Finally, we review a few examples of projects by others that extend abc in interesting ways.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. abc. The AspectBench Compiler. Home page with downloads, FAQ, documentation, support mailing lists, and bug database (2006), http://aspectbench.org (Cited 1 February 2006)

  2. Aldrich, J.: Open modules: Modular reasoning about advice. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 144–168. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  3. Aotani, T., Masuhara, H.: Compiling conditional pointcuts for user-level semantic pointcuts. In: Proceedings of the SPLAT workshop at AOSD 2005 (2005), http://www.daimi.au.dk/~eernst/splat05/

  4. AspectJ bug database. Wrong variable binding in || pointcuts (2004), https://bugs.eclipse.org/bugs/show_bug.cgi?id=61568

  5. AspectJ bug database. ITD on inner class: missing accessor method (2005), https://bugs.eclipse.org/bugs/show_bug.cgi?id=73856

  6. Avgustinov, P., Christensen, A.S., Hendren, L., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: abc: An extensible AspectJ compiler. In: Tarr, P. (ed.) AOSD 2005: 4th International Conference on Aspect-Oriented Software Development, ACM, New York (2005)

    Google Scholar 

  7. Avgustinov, P., Christensen, A.S., Hendren, L., Kuzins, S., Lhoták, J., Lhoták, O., de Moor, O., Sereni, D., Sittampalam, G., Tibble, J.: Optimising AspectJ. In: Sarkar, V., Hall, M.W. (eds.) PLDI 2005: ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 117–128. ACM, New York (2005)

    Chapter  Google Scholar 

  8. Bonér, J.: AspectWerkz — dynamic AOP for Java (2004), http://codehaus.org/~jboner/papers/aosd2004_aspectwerkz.pdf

  9. Brukman, M., Myers, A.C.: PPG: a parser generator for extensible grammars (2003), http://www.cs.cornell.edu/Projects/polyglot/ppg.html

  10. Chiba, S., Nakagawa, K.: Josh: an open AspectJ-like language. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 102–111 (2004)

    Google Scholar 

  11. Chiba, S., Nishizawa, M.: An Easy-to-Use Toolkit for Efficient Java Bytecode Translators. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 364–376. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  12. Colyer, A., Clement, A.: Large-scale AOSD for middleware. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 56–65. ACM, New York (2004)

    Google Scholar 

  13. De Volder, K.: Aspect-oriented logic meta programming. In: Cointe, P. (ed.) Reflection 1999. LNCS, vol. 1616, pp. 250–272. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  14. Douence, R., Fradet, P., Südholt, M.: Composition, reuse and interaction analysis of stateful aspects. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 141–150. ACM, New York (2004)

    Google Scholar 

  15. Douence, R., Fradet, P., Südholt, M.: Trace-based aspects. In: Filman, R., Elrad, T., Clarke, S., Akşit, M. (eds.) Aspect-Oriented Software Development. Addison-Wesley, Reading (2004)

    Google Scholar 

  16. Dufour, B., Goard, C., Hendren, L., de Moor, O., Sittampalam, G., Verbrugge, C.: Measuring the dynamic behaviour of AspectJ programs. In: Proceedings of the 19th ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, pp. 150–169. ACM, New York (2004)

    Chapter  Google Scholar 

  17. Dutchyn, C., Kiczales, G., Masuhara, H.: Tutorial: AOP language exploration using the Aspect Sand Box. In: Kiczales, G. (ed.) AOSD 2002: 1st International Conference on Aspect-Oriented Software Development, ACP (2002)

    Google Scholar 

  18. Eichberg, M., Mezini, M., Ostermann, K.: Pointcuts as functional queries. In: Chin, W.-N. (ed.) APLAS 2004. LNCS, vol. 3302, pp. 366–381. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  19. Ekman, T., Hedin, G.: Rewritable reference attributed grammars. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 147–171. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  20. Gagnon, E., Hendren, L.J., Marceau, G.: Efficient Inference of Static Types for Java Bytecode. In: Palsberg, J. (ed.) SAS 2000. LNCS, vol. 1824, pp. 199–220. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  21. Grove, D., DeFouw, G., Dean, J., Chambers, C.: Call graph construction in object-oriented languages. In: Bloom, T. (ed.) OOPSLA: ACM Conference on Object-Oriented Programming Systems, Languages and Applications, pp. 108–124. ACM, New York (1997)

    Chapter  Google Scholar 

  22. Gybels, K., Brichau, J.: Arranging language features for more robust pattern-based crosscuts. In: Akşit, M. (ed.) AOSD 2003: 2nd International Conference on Aspect-Oriented Software Development, pp. 60–69. ACM, New York (2003)

    Google Scholar 

  23. Hanenberg, S., Unland, R.: Parametric introductions. In: Akşit, M. (ed.) AOSD 2003: 2nd International Conference on Aspect-Oriented Software Development, pp. 80–89. ACM, New York (2003)

    Google Scholar 

  24. Hanson, D., Proebsting, T.: A research C# compiler. Software — Practice and Experience 34(13), 1211–1224 (2004)

    Article  Google Scholar 

  25. Harbulot, B., Gurd, J.R.: Using AspectJ to separate concerns in parallel scientific Java code. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 122–131. ACM, New York (2004)

    Google Scholar 

  26. Harbulot, B., Gurd, J.R.: A joinpoint for loops in AspectJ. In: Clifton, C., Lämmel, R., Leavens, G.T. (eds.) FOAL 2005: Foundations of Aspect-Oriented Languages, pp. 11–20 (2005); Technical report 05-05, Department of Computer Science, Iowa State University, http://www.cs.iastate.edu/~leavens/FOAL/index-2005.shtml

  27. Hilsdale, E., Hugunin, J.: Advice weaving in AspectJ. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 26–35. ACM, New York (2004)

    Google Scholar 

  28. Hugunin, J.: Guide for developers of the AspectJ compiler and weaver (2004), http://dev.eclipse.org/viewcvs/index.cgi/

  29. Kiczales, G.: The fun has just begun. Keynote address at AOSD (2003), Available at: aosd.net/archive/2003/kiczales-aosd-2003.ppt

  30. Krishnamurthi, S., Fisler, K., Greenberg, M.: Verifying aspect advice modularly. In: Taylor, R.N., Dwyer, M.B. (eds.) ACM SIGSOFT International Symposium on the Foundations of Software Engineering, pp. 137–146 (2004)

    Google Scholar 

  31. Masuhara, H., Kawauchi, K.: Dataflow Pointcut in Aspect-Oriented Programming. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 105–121. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  32. Masuhara, H., Kiczales, G., Dutchyn, C.: A Compilation and Optimization Model for Aspect-Oriented Programs. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 46–60. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  33. Miecznikowski, J., Hendren, L. J.: Decompiling Java Bytecode: Problems, Traps and Pitfalls. In: Horspool, R.N. (ed.) CC 2002. LNCS, vol. 2304, pp. 111–127. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  34. Millstein, T.: Practical predicate dispatch. In: Vlissides, J.M., Schmidt, D.C. (eds.) OOPSLA 2004: Conference on Object-oriented Programming, Systems, Languages and Applications, pp. 345–364. ACM, New York (2004)

    Google Scholar 

  35. Millstein, T., Reay, M., Chambers, C.: Relaxed MultiJava: Balancing extensibility and modular typechecking. In: Crocker, R., Steel Jr., G.L. (eds.) OOPSLA 2003: Conference on Object-Oriented Programming, Systems, Languages and Applications, pp. 224–240. ACM, New York (2003)

    Google Scholar 

  36. Nishizawa, M., Chiba, S., Tatsubori, M.: Remote pointcut — a language construct for distributed AOP. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 7–15. ACM, New York (2004)

    Google Scholar 

  37. Nystrom, N., Clarkson, M.R., Myers, A.C.: Polyglot: An Extensible Compiler Framework for Java. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 138–152. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  38. Ossher, H., Tarr, P.: Hyper/J: multi-dimensional separation of concerns for java. In: 22nd International Conference on Software Engineering, pp. 734–737 (2000)

    Google Scholar 

  39. Sakurai, K., Masuhara, H., Ubayashi, N., Matsuura, S., Komiya, S.: Association aspects. In: Lieberherr, K. (ed.) AOSD 2004: 3rd International Conference on Aspect-Oriented Software Development, pp. 16–25. ACM, New York (2004)

    Google Scholar 

  40. Sereni, D., de Moor, O.: Static analysis of aspects. In: Akşit, M. (ed.) AOSD 2003: Proceedings of the 2nd International Conference on Aspect-Oriented Software Development, pp. 30–39. ACM Press, New York (2003)

    Google Scholar 

  41. Skotiniotis, T., Lorenz, D.H.: Cona: Aspects for Contracts and contracts for aspects. In: OOPSLA 2004: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, pp. 196–197. ACM, New York (2004)

    Chapter  Google Scholar 

  42. Stolz, V., Bodden, E.: Temporal Assertions using AspectJ. In: Fifth Workshop on Runtime Verification (RV 2005). Electronic Notes in Theoretical Computer Science. Elsevier Science Publishers, Amsterdam (2005)

    Google Scholar 

  43. Vallée-Rai, R., Gagnon, E.M., Hendren, L. J., Lam, P., Pominville, P., Sundaresan, V.: Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? In: Watt, D.A. (ed.) CC 2000. LNCS, vol. 1781, pp. 18–34. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  44. De Volder, K.: The TyRuBa metaprogramming system, http://tyruba.sourceforge.net/

  45. Walker, R., Viggers, K.: Implementing protocols via declarative event patterns. In: FSE-12: ACM Sigsoft International Symposium on Foundations of Software Engineering, pp. 159–169 (2004)

    Google Scholar 

  46. Zhao, J.: Slicing aspect-oriented software. In: 10th IEEE Workshop on Program Comprehension, pp. 251–260 (2002)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Avgustinov, P. et al. (2006). abc : An Extensible AspectJ Compiler. In: Rashid, A., Aksit, M. (eds) Transactions on Aspect-Oriented Software Development I. Lecture Notes in Computer Science, vol 3880. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11687061_9

Download citation

  • DOI: https://doi.org/10.1007/11687061_9

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-32972-5

  • Online ISBN: 978-3-540-32974-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics