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.

Reply via email to