Aspect-Oriented Programming Beyond Dependency Injection

Dependency injection is a hot topic among industrial developers using component frameworks. This paper first mentions that dependency injection and aspect-oriented programming share the same goal, which is to reduce dependency among components for better reus- ability. However, existing aspect-oriented programming languages/ frameworks, in particular, AspectJ, are not perfectly suitable for expressing inter-component dependency with a simple and straightforward representation. Their limited kinds of implicit construction of aspect instances (or implementations) cannot fully express inter-component dependency. This paper points out this fact and proposes our aspect-oriented programming system named GluonJ to address this problem. GluonJ allows developers to explicitly construct and associate an aspect implementation with aspect targets.

[1]  Michael Golm,et al.  Jumping to the Meta Level: Behavioral Reflection Can Be Fast and Flexible , 1999, Reflection.

[2]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[3]  Ian Welch,et al.  From Dalang to Kava - The Evolution of a Reflective Java Extension , 1999, Reflection.

[4]  Michael Eichberg,et al.  Alice: Modularization of Middleware Using Aspect-Oriented Programming , 2004, SEM.

[5]  Mira Mezini,et al.  Programming with Aspectual Components , 1999 .

[6]  Joseph Gil,et al.  AspectJ2EE = AOP + J2EE: Towards an aspect based, programmable and extensible middleware framework , 2004 .

[7]  Brian Cantwell Smith,et al.  Reflection and semantics in LISP , 1984, POPL.

[8]  Mira Mezini,et al.  Conquering aspects with Caesar , 2003, AOSD '03.

[9]  Takashi Masuda,et al.  Designing an Extensible Distributed Language with a Meta-Level Architecture , 1993, ECOOP.

[10]  Naoyasu Ubayashi,et al.  Association aspects , 2004, AOSD '04.

[11]  Rod Johnson,et al.  Expert One-on-One J2EE Development without EJB , 2004 .

[12]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[13]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[14]  Laurence Duchien,et al.  JAC: A Flexible Solution for Aspect-Oriented Programming in Java , 2001, Reflection.

[15]  Joseph Gil,et al.  AspectJ2EE = AOP + J2EE , 2004, ECOOP.

[16]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[17]  Wim Vanderperren,et al.  JAsCo: an aspect-oriented approach tailored for component based software development , 2003, AOSD '03.

[18]  Doug Orleans,et al.  Incremental programming with extensible decisions , 2002, AOSD '02.