TL;DR: This tutorial shows how to use AOP to implement crosscutting conerns in a concise modular way and includes a description of their underlying model, in terms of which a wide range of AOP languages can be understood.
Abstract: Aspect-oriented programming (AOP) is a technique for improving separation of concerns in software design and implementation. AOP works by providing explicit mechanisms for capturing the structure of crosscutting concerns. This tutorial shows how to use AOP to implement crosscutting conerns in a concise modular way. It works with AspectJ, a seamless aspect-oriented extension to the Java(tm) programming language, and with AspectC, an aspect-oriented extension to C in the style of AspectJ. It also includes a description of their underlying model, in terms of which a wide range of AOP languages can be understood.
TL;DR: AspectJ as mentioned in this paper 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.
Abstract: 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.
TL;DR: AspectJ implementations of the GoF design patterns show modularity improvements in 17 of 23 cases, manifested in terms of better code locality, reusability, composability, and (un)pluggability.
Abstract: AspectJ implementations of the GoF design patterns show modularity improvements in 17 of 23 cases. These improvements are manifested in terms of better code locality, reusability, composability, and (un)pluggability.The degree of improvement in implementation modularity varies, with the greatest improvement coming when the pattern solution structure involves crosscutting of some form, including one object playing multiple roles, many objects playing one role, or an object playing roles in multiple pattern instances.
TL;DR: This study took an existing framework written in Java/sup TM/, the JWAM framework, and partially reengineered its exception detection and handling aspects using AspectJ, an aspect oriented programming extension to Java, and found it supported implementations that drastically reduced the portion of the code related to exception Detection and handling.
Abstract: Aspect oriented programming (AOP) is intended to ease situations that involve many kinds of code tangling. The paper reports on a study to investigate AOP's ability to ease tangling related to exception detection and handling. We took an existing framework written in Java/sup TM/, the JWAM framework, and partially reengineered its exception detection and handling aspects using AspectJ/sup TM/, an aspect oriented programming extension to Java. We found that AspectJ supported implementations that drastically reduced the portion of the code related to exception detection and handling. In one scenario, we were able to reduce that code by a factor of 4. We also found that, with respect to the original implementation in plain Java, AspectJ provided better support for different configurations of exceptional behaviors, more tolerance for changes in the specifications of exceptional behaviors, better support for incremental development, better reuse, automatic enforcement of contracts in applications that use the framework, and cleaner program texts. We also found some weaknesses of AspectJ that should be addressed in the future.
TL;DR: This paper presents AspectC++ (Gal & Spinczyk 2001), a new language extension to C/C++ that provides powerful language elements to facilitate aspect-oriented programming even in domains with tight resource limitations.
Abstract: Small embedded systems are forced to operate under extreme resource constraints. At the same time these systems are very complex and many concerns in the implementation of such systems are of highly crosscutting nature. The concept of aspect orientation can be applied to allow a modular implementation of these concerns. With AspectJ the first complete and powerful language extension for aspect-oriented programming (AOP) has been created. However, the costs of the Java run-time environment are not feasible for most embedded applications.This paper presents AspectC++ (Gal & Spinczyk 2001), a new language extension to C/C++ that provides powerful language elements to facilitate aspect-oriented programming even in domains with tight resource limitations.