| <html><head> | |
| <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | |
| <title>Chapter 1. Getting Started with AspectJ</title><link rel="stylesheet" href="aspectj-docs.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.44"><link rel="home" href="index.html" title="The AspectJTM Programming Guide"><link rel="up" href="index.html" title="The AspectJTM Programming Guide"><link rel="previous" href="preface.html" title="Preface"><link rel="next" href="starting-aspectj.html" title="Introduction to AspectJ"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Getting Started with AspectJ</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="starting-aspectj.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><h2 class="title"><a name="starting"></a>Chapter 1. Getting Started with AspectJ</h2></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="starting.html#starting-intro">Introduction</a></dt><dt><a href="starting-aspectj.html">Introduction to AspectJ</a></dt><dd><dl><dt><a href="starting-aspectj.html#the-dynamic-join-point-model">The Dynamic Join Point Model</a></dt><dt><a href="starting-aspectj.html#pointcuts">Pointcuts</a></dt><dt><a href="starting-aspectj.html#advice">Advice</a></dt><dt><a href="starting-aspectj.html#inter-type-declarations">Inter-type declarations</a></dt><dt><a href="starting-aspectj.html#aspects">Aspects</a></dt></dl></dd><dt><a href="starting-development.html">Development Aspects</a></dt><dd><dl><dt><a href="starting-development.html#tracing">Tracing</a></dt><dt><a href="starting-development.html#profiling-and-logging">Profiling and Logging</a></dt><dt><a href="starting-development.html#pre-and-post-conditions">Pre- and Post-Conditions</a></dt><dt><a href="starting-development.html#contract-enforcement">Contract Enforcement</a></dt><dt><a href="starting-development.html#configuration-management">Configuration Management</a></dt></dl></dd><dt><a href="starting-production.html">Production Aspects</a></dt><dd><dl><dt><a href="starting-production.html#change-monitoring">Change Monitoring</a></dt><dt><a href="starting-production.html#context-passing">Context Passing</a></dt><dt><a href="starting-production.html#starting-production-consistentBehavior">Providing Consistent Behavior</a></dt></dl></dd><dt><a href="starting-conclusion.html">Conclusion</a></dt></dl></div><div class="sect1"><a name="starting-intro"></a><div class="titlepage"><div><h2 class="title" style="clear: both"><a name="starting-intro"></a>Introduction</h2></div></div><p> | |
| Many software developers are attracted to the idea of aspect-oriented | |
| programming (AOP) but unsure about how to begin using the | |
| technology. They recognize the concept of crosscutting concerns, and | |
| know that they have had problems with the implementation of such | |
| concerns in the past. But there are many questions about how to adopt | |
| AOP into the development process. Common questions include: | |
| <div class="itemizedlist"><ul compact><li><p><a name="d0e80"></a>Can I use aspects in my existing code?</p></li><li><p><a name="d0e83"></a> | |
| What kinds of benefits can I expect to get from using aspects? | |
| </p></li><li><p><a name="d0e86"></a>How do I find aspects in my programs?</p></li><li><p><a name="d0e89"></a>How steep is the learning curve for AOP?</p></li><li><p><a name="d0e92"></a>What are the risks of using this new technology?</p></li></ul></div> | |
| </p><p> | |
| This chapter addresses these questions in the context of AspectJ: a | |
| general-purpose aspect-oriented extension to Java. A series of | |
| abridged examples illustrate the kinds of aspects programmers may | |
| want to implement using AspectJ and the benefits associated with | |
| doing so. Readers who would like to understand the examples in more | |
| detail, or who want to learn how to program examples like these, can | |
| find more complete examples and supporting material linked from the | |
| AspectJ web site ( <a href="http://eclipse.org/aspectj" target="_top">http://eclipse.org/aspectj</a> ). | |
| </p><p> | |
| A significant risk in adopting any new technology is going too far | |
| too fast. Concern about this risk causes many organizations to be | |
| conservative about adopting new technology. To address this issue, | |
| the examples in this chapter are grouped into three broad categories, | |
| with aspects that are easier to adopt into existing development | |
| projects coming earlier in this chapter. The next section, <a href="starting-aspectj.html">Introduction to AspectJ</a>, we present the core of AspectJ's | |
| features, and in <a href="starting-development.html">Development Aspects</a>, we present | |
| aspects that facilitate tasks such as debugging, testing and | |
| performance tuning of applications. And, in the section following, | |
| <a href="starting-production.html">Production Aspects</a>, we present aspects that | |
| implement crosscutting functionality common in Java applications. We | |
| will defer discussing a third category of aspects, reusable aspects, | |
| until <a href="language.html">The AspectJ Language</a>. | |
| </p><p> | |
| These categories are informal, and this ordering is not the only way | |
| to adopt AspectJ. Some developers may want to use a production aspect | |
| right away. But our experience with current AspectJ users suggests | |
| that this is one ordering that allows developers to get experience | |
| with (and benefit from) AOP technology quickly, while also minimizing | |
| risk. | |
| </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="preface.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="starting-aspectj.html">Next</a></td></tr><tr><td width="40%" align="left">Preface </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Introduction to AspectJ</td></tr></table></div></body></html> |