AspectJ represents one possible interpretation of AOP. For an interesting look at another interpretation of AOP, you should definitely look at Hyper/J to round out the "shipping" implementations that are out there.
These two implementations differ rather radically in terms of how they view the use of aspects in software. AspectJ treats aspects as being something that is used rarely - you identify the crosscutting concerns, implement them as an aspect, and apply them only where necessary. Hyper/J takes the approach that all software "features" are really aspects. They encourage the implementation of features as "hyperslices" and composing applications by weaving together hyperslices. If you look at the Hyper/J approach (which is arguably the more interesting and therefore controversial approach) you'll walk away scratching your head and wondering if classes are useful in their model. It's an interesting time for AOP. I had a lot of fun presenting my implementation (CLAW) at this year's inaugural AOSD (Aspect Oriented Software Development) conference in the Netherlands.[1] Folks attending that conference all agree that aspects are useful. What is not clear at all is how aspects will ultimately be applied in software. There were a few folks who presented industry experience with both AspectJ and Hyper/J. So there is certainly some anecdotal evidence that it works for the early adopter / visionary crowd. The bigger question is will the rank-and-file programmers of the world embrace aspects or is it a layer of abstraction that will be hidden from them? It's interesting to contrast the three implementations: CLAW is a JIT-time aspect weaver, Hyper/J is a link-time aspect weaver, and AspectJ is a compile-time aspect weaver. CLAW currently only supports execution join-points (think method interception). So does Hyper/J (although they do support call-site joint points but it's not their primary model). AspectJ has the most sophisticated join-point implementation of the three. AspectJ currently requires source code. CLAW and Hyper/J do not. AspectJ is moving towards weaving at link-time, which will remove the source code requirement. They are also moving towards commercialization, although it's not currently clear what's going to happen with that. The AOP community more or less lives on the AspectJ mailing list. Visit http://www.aspectj.org for details. CLAW is a research project. I spend roughly 60% of my time working on it. I intend on releasing bits sometime in the future, but since I'm a JIT-time weaver, I by definition bypass CLR security. Until I figure out a good security story there won't be any public bits ... ;( CLAW will also probably move to a link-time weaving approach in the near future. While JIT time weaving is very flexible, it's also more dangerous, and I'd rather see adoption over cool features. Cheers, -John http://www.iunknown.com [1] http://www.iunknown.com/Weblog/HellofromAOSD2002.html -----Original Message----- From: Peter Foreman [mailto:[EMAIL PROTECTED]] Sent: Tuesday, May 14, 2002 12:45 PM To: [EMAIL PROTECTED] Subject: [DOTNET] AOP & .Net 1) Is anyone working on AOP for .Net? 2) Is anyone working on or has anyone got anything similar to AspectJ? 3) Are there any mailing lists? Thanks in advance, Peter Foreman __________________________________________________ Do You Yahoo!? LAUNCH - Your Yahoo! Music Experience http://launch.yahoo.com You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.
