Andre,
Great questions! This is indeed an exciting time of AOP/AspectJ!
The buzz surrounding AOP (and that includes many heated discussions!) is very healthy. The result of these discussions is likely to help in solidifying the AOP methodology. At the same time, practical applications and experience gained through them is vitally important to the evolution of AOP.
On AOP approaches: All the AOP approaches share a few commonalities � the join point model being the most prominent one. The differences are in how the weaving rules are expressed and how the weaving takes place.
Here is a high-level summary of differences between various AOP approaches:
Expression of rules: AspectJ expresses rules using extension to the Java programming language, whereas AspectWerkz, JBoss/AOP, and Nanning aspects do the same thing through a combination of a framework and an XML-based language. Weaving: In the standard AspectJ offering, weaving occurs during the compilation phase (however, you don�t need access to source code; just byte code is sufficient), whereas in other approaches, weaving happens at runtime (class loading time, to be precise). With AspectJ, it is certainly possible to use runtime weaving similar to that in AspectWerkz (with BEA Weblogic�s AspectJ support being the proof). There are other differences as well, but they are of secondary importance and may disappear over time. For example, AspectJ�s pointcut support is very rich, but AspectWerkz is adding new pointcuts to match those in AspectJ (the most recent being the control-flow based pointcuts).
On AOP adaptation: �AspectJ in Action� provides guidance on AOP adaptation through chapter introductions and summaries as well as includes a detailed discussion in the final chapter -- "The next step". The most important thing to remember is try simple aspects first. I recommend logging and policy enforcement as the first set of aspects. On most occasion you can take readymade aspects and compile them along with your code to start getting benefits. These aspects help in understanding the AOP methodology and logistical issues. Then you can go ahead in an incremental fashion with the other advanced applications.
On language-based AOP vs. others: I personally prefer language-based approach as in AspectJ. See Gregor Kiczales� post that says it much better:
http://www.theserverside.com/home/thread.jsp?thread_id=18878#80549 -Ramnivas
[ September 16, 2003: Message edited by: Ramnivas Laddad ]
[ September 16, 2003: Message edited by: Ramnivas Laddad ]