Abstract
AspectJ™ 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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Proceedings of the Conference on Domain-Specific Languages (DSL). USENIX, Santa Barbara, California, USA (1997)
Bobrow, D.G., et al.: CommonLoops: Merging Lisp and Object-Oriented Programming. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Portland, Oregon (1986) 17–29
Cannon, H.: Flavors: A non-hierarchical approach to object-oriented programming. Symbolics Inc.(1982)
Coady, Y., G. Kiczales, and M. Feeley: Exploring an Aspect-Oriented Approach to Operating System Code. In: Position paper for the Advanced Separation of Concerns Workshop at the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Minneapolis, Minnesota, USA (2000)
DeVolder, K.: Aspect-Oriented Logic Meta Programming. In: Meta-Level Architectures and Reflection, Reflection’99. Springer, Saint-Malo, France (1999) 250–272
Filman, R.E. and D.P. Friedman: Aspect-Oriented Programming is Quantification and Obliviousness. In: Position paper for the Advanced Separation of Concerns Workshop at the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Minneapolis, Minnesota, USA (2000)
Friendly, L.: Design of Javadoc. In: The Design of Distributed Hyperlinked Programming Documentation (IWHD). Springer-Verlag, Montpellier, France (1995)
Goldberg, A.: Smalltalk-80: The Interactive Programming environment. Addisson-Wesley, Reading MA (1984)
Goldberg, A. and D. Robson: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, (1983)
Green, T.R.G. and M. Petre: Usability analysis of visual programming environments: a’ cognitive dimensions’ approach. Journal of Visual Languages and Computing. 7,2. (1996) 131–174
Griswold, D.: The Java HotSpot Virtual Machine Architecture. Sun Microsystems, Inc.(1998)
Ichisugi, Y., S. Matsuoka, and A. Yonezawa: RbCl: A reflective object-oriented concurrent language without a run-time kernel. In: International Workshop on New Models for Software Architecture (IMSA): Reflection and Meta-Level Architecture. Tama City, Tokyo (1992) 24–35
Irwin, J., et al.: Aspect-Oriented Programming of Sparse Matrix Code. In: Proceedings of the International Symposium on Computing in Object-Oriented Parallel Environments (ISCOPE). Springer, Marina del Rey, CA, USA (1997) 249–256
Kiczales, G., et al.: Aspect-Oriented Programming. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Springer-Verlag, Finland (1997)
Kiczales, G. and L. Rodriguez: Efficient Method Dispatch in PCL. In: LISP and Functional Programming. ACM Press, Nice, France (1990) 99–105
Lewis, J., et al.: Implicit Parameters: Dynamic Scoping with Static Types. In: Proceedings of the 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Boston, Massachusetts (2000) 108–118
Lieberherr, K.J.: Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. PWS Publishing Company, Boston (1996)
Lopes, C.V. and G. Kiczales: D: A Language Framework for Distributed Programming. Technical Report SPL97-010, P9710047. Xerox Palo Alto Research Center, Palo Alto, CA (1997)
Maes, P.: Concepts and Experiments in Computational Reflection. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Orlando, Florida (1987) 147–155
Masuhara, H., S. Matsuoka, and A. Yonezawa: Designing an OO reflective language for massively-parallel processors. In: Position paper for the workshop on Object-Oriented Reflection and Metalevel Architectures at the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). Washington, DC (1993)
Matsuoka, S., T. Watanabe, and A. Yonezawa: Hybrid group reflective architecture for object-oriented concurrent reflective programming. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Springer, Geneva, Switzerland (1991) 231–250
McAffer, J.: The CodA MOP. In: Position paper for the workshop on Object-Oriented Reflection and Metalevel Architectures at the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA),. Washington, DC (1993)
Mendhekar, A., G. Kiczales, and J. Lamping: RG: A Case-Study for Aspect-Oriented Programming. Technical Report SPL97-009, P9710044. Xerox Palo Alto Research Center, Palo Alto, CA (1997)
Mezini, M. and K.J. Lieberherr: Adaptive Plug-and-Play Components for Evolutionary Software Development. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Vancouver, British Columbia, Canada (1998) 97–116
Moon, D.A.: Object-Oriented Programming with Flavors. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Portland, Oregon (1986) 1–8
Okamura, H., Y. Ishikawa, and M. Tokoro: Metalevel Decomposition in AL-1/D. In: International Symposium on Object Technologies for Advanced Software. Springer Verlag, (1993) 110–127
Ossher, H., et al.: Subject-Oriented Composition Rules. In: Proceedings of the Conference on Object Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, Austin, Texas (1995) 235–250
Ossher, H. and P.L. Tarr: Hyper/J: multi-dimensional separation of concerns for Java. In: Proceedings of the International Conference on Software Engineering (ICSE). ACM, Limerick, Ireland (2000) 734–737
Parnas, D.L.: On the Criteria To Be Used in Decomposing Systems Into Modules. Communications of the ACM. 15,12. (1972) 1053–1058
Parnas, D.L.: Software Engineering or Methods for the Multi-Person Construction of Multi-Version Programs. Lecture Notes in Computer Science. Programming Methodology. (1974)
Shneiderman, B.: Direct Manipulation: A step beyond Programming languages, In: Human-Computer Interaction: A Multidisciplinary Approach, R.M. Baecker and W.A.S. Buxton, Editors. Morgan Kaufmann Publishers, Inc.: Los Altos, CA (1983) 461–467
Smith, B.C.: Reflection and Semantics in a Procedural Language, PhD Thesis. M.I.T(1982)
Smith, B.C.: Reflection and Semantics in LISP. In: Proceedings of the Symposium on Principles of Programming Languages (POPL). ACM, (1984) 23–35
Steele, G.L.: Common Lisp the Language. 2nd ed. Digital Press, (1990) 1029
Stroustrup, B.: The C++ Programming Language. 3rd ed. Addison-Wesley, (1997)
Tarr, P.L., et al.: N Degrees of Separation: Multi-Dimensional Separation of Concerns. In: Proceedings of the International Conference on Software Engineering (ICSE). ACM, Los Angeles, CA (1999) 107–119
Walker, R. and G. Murphy: Implicit Context: Easing Software Evolution and Reuse. In: Proceedings of the Conference on Foundations of Software Engineering (FSE). ACM, San Diego, California (2000)
Watanabe, T. and A. Yonezawa: Reflection in an object-oriented concurrent language. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). ACM, San Diego, CA (1988) 306–315
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G. (2001). An Overview of AspectJ. In: Knudsen, J.L. (eds) ECOOP 2001 — Object-Oriented Programming. ECOOP 2001. Lecture Notes in Computer Science, vol 2072. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45337-7_18
Download citation
DOI: https://doi.org/10.1007/3-540-45337-7_18
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42206-8
Online ISBN: 978-3-540-45337-6
eBook Packages: Springer Book Archive