Shadow Programming: Reasoning About Programs Using Lexical Join Point Information

  • Pengcheng Wu
  • Karl Lieberherr
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3676)


The expressiveness of AspectJ’s dynamic join point model has been shown in many useful applications, while the static join point model (also called lexical shadows) has been studied less. We propose a notion of shadow programming that exposes a program’s adapted lexical shadow information to compile time language constructs to enable customized static analysis and more expressive join point selection mechanisms. In particular, within the framework of the AspectJ language and compiler, we have designed and implemented two compile time language constructs, called Statically Executable Advice and Pointcut Evaluator respectively, to show how the lexical shadow information can be used.


Program Text Method Body Check Logic Public Void Constructor Call 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Bloch, J.: Effective Java Programming Language Guide, pp. 25–35. Sun Microsystems Inc. (2001)Google Scholar
  2. 2.
    Chiba, S., Nakagawa, K.: Josh: an open AspectJ-like language. In: Proceedings of the 3rd international conference on Aspect-oriented software development, pp. 102–111. ACM Press, New York (2004)CrossRefGoogle Scholar
  3. 3.
    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)CrossRefGoogle Scholar
  4. 4.
    Felleisen, M.: Functional objects. In: Invited Talk at ECOOP (2004), Also available at:
  5. 5.
    Filman, R., Friedman, D.: Aspect-oriented programming is quantification and obliviousness. In: Workshop on Advanced Separation of Concerns, OOPSLA 2000, Minneapolis (2000), (October 2000)
  6. 6.
    Gybels, K., Brichau, J.: Arranging language features for more robust pattern-based crosscuts. In: Proceedings of the 2nd international conference on Aspect-oriented Software Development, pp. 60–69. ACM Press, New York (2003)CrossRefGoogle Scholar
  7. 7.
    Hilsdale, E., Hugunin, J.: Advice weaving in AspectJ. In: Proceedings of the 3rd international conference on Aspect-oriented software development, pp. 26–35. ACM Press, New York (2004)CrossRefGoogle Scholar
  8. 8.
  9. 9.
    JBoss Inc. JBoss AOP,
  10. 10.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  11. 11.
    Kniesel, G., Rho, T., Hanenberg, S.: Evolvable Pattern Implementations Need Generic Aspects. In: Proceedings of Workshop on Reflection, AOP and Meta-Data for Software Evolution (June 2004)Google Scholar
  12. 12.
    Lieberherr, K., Lorenz, D.H., Wu, P.: A Case for Statically Executable Advice: checking the Law of Demeter with AspectJ. In: Proceedings of the 2nd international conference on Aspect-oriented software development, pp. 40–49. ACM Press, New York (2003)CrossRefGoogle Scholar
  13. 13.
    Lieberherr, K.J.: Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. PWS Publishing Company, Boston (1996)Google Scholar
  14. 14.
    Lieberherr, K.J., Holland, I.: Formulations and Benefits of the Law of Demeter. SIGPLAN Notices 24(3), 67–78 (1989)CrossRefGoogle Scholar
  15. 15.
  16. 16.
    Masuhara, H., Kiczales, G., Dutchyn, C.: Compilation and optimization model for aspect-oriented programs. In: Proceedings of Compiler Construction (CC 2003). LNCS, vol. 2003, pp. 46–60. Springer, Heidelberg (2001)Google Scholar
  17. 17.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Englewood Cliffs (1997)zbMATHGoogle Scholar
  18. 18.
    Ostermann, K., Mezini, M., Bockish, C.: Expressive pointcuts for increased modularity. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 214–240. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  19. 19.
    Rho, T., Kniesel, G.: LogicAJ - Uniform Genericity for Aspect Languages. Technical Report IAI-TR-2004-4, Computer Science Department III, University of Bonn (December 2004)Google Scholar
  20. 20.
    Aotani, T., Masuhara, H.: Compiling Conditonal Pointcuts for User-Level Semantic Pointcuts. In: Software engineering Properties of Languages and Aspect Technologies Workshop, Chicago, IL, USA (March 2005)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Pengcheng Wu
    • 1
  • Karl Lieberherr
    • 1
  1. 1.Northeastern UniversityBostonUSA

Personalised recommendations