== 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, xref:gettingstarted.adoc[Getting Started with AspectJ], 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, xref:language.adoc[The AspectJ Language], 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, xref:examples.adoc[Examples], 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 xref:idioms.adoc[Idioms] and one on xref:pitfalls.adoc[Pitfalls]. The back matter contains several appendices that cover an xref:quickreference.adoc[AspectJ Quick Reference], a more in depth coverage of its xref:semantics.adoc[Language Semantics], and a description of the latitude enjoyed by its xref:implementation.adoc[Implementation Notes].