]> source.dussan.org Git - aspectj.git/commitdiff
fix bug 59203 - dynamic AOP
authorwisberg <wisberg>
Sat, 28 Aug 2004 22:16:10 +0000 (22:16 +0000)
committerwisberg <wisberg>
Sat, 28 Aug 2004 22:16:10 +0000 (22:16 +0000)
docs/faq/faq.xml

index 4df03fe0e8c0748a1e4aa8a91e861b0c11bbe8a0..f178f09a0eb38e6e252be1ddf7f927e6d07f9823 100644 (file)
@@ -870,6 +870,48 @@ aspect.
           </para>
         </answer>
       </qandaentry>
+      <qandaentry>
+        <question id="q:dynamicaop"
+            xreflabel="Q:How does AspectJ compare with more dynamic AOP?">
+          <para>How does AspectJ compare with more dynamic AOP?
+          </para>
+        </question>
+        <answer>
+          <para>
+          Some AOP techniques are presented as "dynamic" because the weaving 
+          occurs when classes are loaded, because aspects can be configured 
+          in a separate XML file before launch, or because some advice
+          depends on runtime reflection.  They are said to be more flexible
+          than AspectJ.
+          </para>
+          <para>
+          This is a misconception.  First, the AspectJ 1.1 weaver has always 
+          supported weaving at compile-time or class-load-time.  Weaving at
+          compile-time reduces application launch and running time, and it helps
+          IDE's offer support for tracking down weaving errors and understanding
+          the impact of aspects on a system.
+          On the other hand, weaving at load-time simplifies build and deployment.
+          Before AspectJ 1.2, the user had to write a class loader that used the 
+          weaver API to weave at load time; since 1.2, AspectJ come with a 
+          command-line launcher to support weaving at class-load-time without 
+          any other changes to a build configuration.
+          </para>
+          <para>
+          Second, AspectJ programs, like Java programs generally, can be
+          written to support any level of XML configuration or to depend on
+          runtime reflection.  There are some benefits to using AspectJ;
+          e.g., the proceed() form within around advice simplifies a lot of 
+          the work that otherwise would go into writing a generalized 
+          interceptor, without introducing many of the runtime errors that can 
+          result from interceptors.  
+          For AspectJ examples of configurable or reflection-dependent programs,
+          see the sample code linked off the AspectJ documentation page
+          or the examples discussed on the mailing list, e.g.,
+          <ulink url="http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg02151.html">
+                       Incremental and runtime weaving support?</ulink>.
+          </para>
+        </answer>
+      </qandaentry>
       <qandaentry>
         <question id="q:aopandxp"
             xreflabel="Q:What is the relationship between AOP and 
@@ -4469,22 +4511,9 @@ vmparam -Xmx384m
         </question>
         <answer>
           <para>
-          Entries changed since the earlier September, 2003 version:
+          Entries changed recently:
             <itemizedlist>
-        <listitem><para><xref linkend="q:noaspectbound"/></para></listitem>
-        <listitem><para><xref linkend="q:duplicateclass"/></para></listitem>
-        <listitem><para><xref linkend="q:advicenotrunning"/></para></listitem>
-        <listitem><para><xref linkend="q:exampleprograms"/></para></listitem>
-        <listitem><para><xref linkend="q:aspectlibraries"/></para></listitem>
-        <listitem><para><xref linkend="q:newjoinpoints"/></para></listitem>
-        <listitem><para><xref linkend="q:whitepapers"/></para></listitem>
-        <listitem><para><xref linkend="q:implementation"/></para></listitem>
-        <listitem><para><xref linkend="q:contributions"/></para></listitem>
-        <listitem><para><xref linkend="q:interfaceDeclarations"/></para></listitem>
-        <listitem><para><xref linkend="q:aspectjandj2me"/></para></listitem>
-        <listitem><para><xref linkend="q:adviceOnOveriddenMethods"/></para></listitem>
-        <listitem><para><xref linkend="q:tejpsp"/></para></listitem>
-        <listitem><para><xref linkend="q:searchingsite"/></para></listitem>
+        <listitem><para><xref linkend="q:dynamicaop"/></para></listitem>
             </itemizedlist>
           </para>
         </answer>