An Overview of AspectJ

Aspect] is a simple and practical aspect-oriented extension to Java With just a few new constructs, AspectJ provides support for modular implementation of a range of crosscutting concerns. In AspectJ's dynamic join point model, join points are well-defined points in the execution of the program; pointcuts are collections of join points; advice are special method-like constructs that can be attached to pointcuts; and aspects are modular units of crosscutting implementation, comprising pointcuts, advice, and ordinary Java member declarations. AspectJ code is compiled into standard Java bytecode. Simple extensions to existing Java development environments make it possible to browse the crosscutting structure of aspects in the same kind of way as one browses the inheritance structure of classes. Several examples show that AspectJ is powerful, and that programs written using it are easy to understand.

[1]  Kris De Volder Aspect-Oriented Logic Meta Programming , 1998, ECOOP Workshops.

[2]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[3]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[4]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[5]  Jr. Guy L. Steele,et al.  Common LISP: the language (2nd ed.) , 1990 .

[6]  M. Petre,et al.  Usability Analysis of Visual Programming Environments , 1996 .

[7]  Akinori Yonezawa,et al.  Reflection in an object-oriented concurrent language , 1988, OOPSLA '88.

[8]  John R. Gilbert,et al.  Aspect-Oriented Programming of Sparse Matrix Code , 1997, ISCOPE.

[9]  Satoshi Matsuoka,et al.  RbCl: A Reflective Object-Oriented Concurrent Language without a Run-time Kernel , 1992 .

[10]  Akinori Yonezawa,et al.  Hybrid Group Reflective Architecture for Object-Oriented Concurrent Reflective Programming , 1991, ECOOP.

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

[12]  Ben Shneiderman,et al.  Direct Manipulation: A Step Beyond Programming Languages , 1983, Computer.

[13]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[14]  Robert J. Walker,et al.  Implicit context: easing software evolution and reuse , 2000, SIGSOFT '00/FSE-8.

[15]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[16]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.

[17]  Mira Mezini,et al.  Adaptive plug-and-play components for evolutionary software development , 1998, OOPSLA '98.

[18]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[19]  Gregor Kiczales,et al.  Efficient method dispatch in PCL , 1990, LISP and Functional Programming.

[20]  Harold Ossher,et al.  Subject-oriented composition rules , 1995, OOPSLA.

[21]  David Lorge Parnas Software Engineering or Methods for the Multi - Person Construction of Multi - Version Programs , 1974, Programming Methodology.

[22]  Stanley M. Sutton,et al.  Hyper/J™: multi-dimensional separation of concerns for Java™ , 2001, ICSE '02.

[23]  Marian Petre,et al.  Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework , 1996, J. Vis. Lang. Comput..

[24]  Gregor Kiczales,et al.  RG: A Case-Study for Aspect-Oriented Programming , 1997 .

[25]  Bjarne Stroustrup,et al.  C++ : programovací jazyk : The C++ programming language (Orig.) , 1997 .

[26]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[27]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[28]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[29]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[30]  Mario Tokoro,et al.  Metalevel Decomposition in AL-1/D , 1993, ISOTAS.

[31]  Gregor Kiczales,et al.  D: A Language Framework for Distributed Programming , 1997 .

[32]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.

[33]  Theo D'Hondt,et al.  Aspect-Orientated Logic Meta Programming , 1999, Reflection.