Preface This programming guide does three things. It introduces the AspectJ language defines each of AspectJ's constructs and their semantics, and provides examples of their use. It includes appendices that give a reference to the syntax of AspectJ, a more formal description of AspectJ's semantics, and a description of notes about the AspectJ implementation. The first section, , provides a gentle overview of writing AspectJ programs. It also shows how one can introduce AspectJ into an existing development effort in stages, reducing the associated risk. You should read this section if this is your first exposure to AspectJ and you want to get a sense of what AspectJ is all about. The second section, , covers the features of the language in more detail, using code snippets as examples. All the basics of the language is covered, and after reading this section, you should be able to use the language correctly. The next section, , comprises a set of complete programs that not only show the features being used, but also try to illustrate recommended practice. You should read this section after you are familiar with the elements of AspectJ. Finally, there are two short chapters, one on and one on . The back matter contains several appendices that cover a quick reference to the language's syntax, a more in depth coverage of its semantics, and a description of the latitude enjoyed by its implementations.