Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: RE: [aspectj-users] Philosophical Questions

Hello,

I fully agree here with you, Adrian.

kind regards 
   Arno

***********************************************
Arno Schmidmeier
phone +49/9151/90 50 30
Yes, I have realized projects with AspectJ
Yes, I do provide consulting services for AspectJ
************************************************
 


Adrian Colyer <adrian_colyer@xxxxxxxxxx> schrieb am 07.07.2003,
22:42:48:
> I wanted to jump in on this one too as its a topic that's been on my mind 
> these last few days. Here's how I see it...
> 
> When anyone first comes to AOP, the examples they see and the kind of 
> concerns that they deal with tend to be very "orthogonal" to the core 
> application they're working on (or "non-functional" if you like that 
> term). I'm talking about the classic things like tracing and logging and 
> error handling etc.. In the AspectJ tutorial we sometimes call them 
> "auxiliary" aspects. With those kinds of aspects in mind, then a "pure" 
> Java plus XML approach has a certain appeal - the aspects are not critical 
> to the core application, and "configuring" them via XML does not severely 
> impact your understanding of the program. In the J2EE / middleware 
> community which is very used to filters, interceptors, deployment 
> descriptors etc this will feel like a very natural thing to do.
> 
> The problem comes when you get beyond the 
> "oo-application-with-a-few-auxiliary-aspects-bolted-on-the-side" phase. 
> When you start to do aspect-oriented programming with core aspects as a 
> natural part of your application design, then all of a sudden the 
> framework + XML approach looks a whole lot less attractive. You really do 
> want a solution that works as part of the programming language, with your 
> development tools, expressing your intent as clearly as possible in the 
> source code. AspectJ lets you do that, and allows you to think of aspects 
> as first class entities in the language - this is so powerful. I don't 
> want to have to parse side XML files and perform a "weave" in my head in 
> order to figure out what my program means. Personally, I'll even use an 
> inner aspect inside a single class to handle a policy that cuts across the 
> methods of that class (acquiring and releasing connections in a db access 
> class for example) where it makes the intent clearer. You just wouldn't do 
> that with run-time interceptors and XML configuration.
> 
> So, I think that these frameworks have an appeal for folks looking at 
> auxiliary aspects. If that's all you want, then some of the frameworks are 
> very good examples of doing that. I also believe AspectJ is very good at 
> handling these kinds of concerns btw.. But if you want an approach that 
> takes you into aspect-oriented programming, that grows with you as your 
> confidence and understanding grows, and that gives you a uniform way of 
> handling aspects from development time aspects right through to core 
> function, then you need AspectJ. And once you've gone beyond auxiliary 
> aspects, and tasted what it's like to really explore aop, you'll never 
> look back :)
> 
> -- Adrian
> Adrian_Colyer@xxxxxxxxxx
> 
> 
> 
> 
> "Gregor Kiczales" 
> Sent by: aspectj-users-admin@xxxxxxxxxxx
> 07/07/2003 16:59
> Please respond to aspectj-users
>  
>         To:     
>         cc: 
>         Subject:        RE: [aspectj-users] Philosophical Questions
> 
> 
> I'm really glad you sent this message.  This reply is about a general 
> point, I'll tackle the specific points later today.
>  
> The flurry of alternative AOP frameworks is clearly a good thing. It shows 
> that AOP has moved from the invention phase to the first innovation phase. 
> More people are looking at the technology, in a solution oriented 
> approach, to see what it can do for them.This will be an exciting time.
>  
> But while I think lots of innovation is great, I worry that these systems 
> may cause people who are just starting to learn about AOP to reach some 
> false conclusions.  Specifically:
>  
>  - because these systems have no IDE support, they run the risk of stoking 
> the false argument that AO programs are hard to understand or debug. With 
> AspectJ, a simple ajdt demo is enough to show that these problems are 
> solved.
>  
>  - because these systems are dynamically typed, they run the risk of 
> convincing people that AOP is inefficient and also that debugging will be 
> more difficult with AOP.
>  
>  - because these systems don't necessarily have orthogonal join point 
> models, they may seem simpler, but run the risk of making larger AOP 
> programs more complex to write and/or understand.
>  
>  - because most of these systems are a subset of AOP, they run the risk of 
> causing people outside the community to complain that "the AOP people are 
> talking a lot about a very little". For example, many people look at these 
> systems and conclude that AOP is just interception -- they miss the whole 
> point about how pointcuts allow building up crosscutting structure.
>  
>  - because of the claims people make about these systems, they run the 
> risk of causing people to believe that no one is doing any commercial AOP 
> yet, and that AspectJ doesn't work. Many AOP developers would be better 
> served, IMHO, to use AspectJ with its much higher degree of engineering, 
> documentation and support.
>  
> Don't get me wrong, I strongly believe this round of innovation should 
> continue, it is a great thing. I am personally enjoying discussions with 
> some of the authors of these new systems as to elements of their design.
>  
> But I wish the voice of AspectJ experience was more represented in this 
> round of debate about using AOP in practice.  For example this idea that 
> AspectJ is too powerful needs some debunking. Its trivial to subset 
> AspectJ and still end up with an orthogonal, type-safe, efficient, system 
> that has 5 years of user experience with it. If size is the issue, that is 
> probably a better way to go.
>  
> So...
>  
> I'd really like to encourage AspectJ users who have running code and 
> experience to speak up more on the many blogs that are hosting most of 
> this round of AOP discussion. Please speak up! (Its sort of frustrating 
> that all this happens in individual blogs rather than discuss@xxxxxxxx, 
> but that's a whole other issue!)
> -----Original Message-----
> From: aspectj-users-admin@xxxxxxxxxxx 
> [mailto:aspectj-users-admin@xxxxxxxxxxx] On Behalf Of Merrick Schincariol
> Sent: Saturday, July 05, 2003 8:03 AM
> To: aspectj-users@xxxxxxxxxxx
> Subject: [aspectj-users] Philosophical Questions
> 
> Having just got back from TheServerSide Symposium in Boston, I can report 
> that AOP was definitely the talk of the conference. What was surprising to 
> me, however, was the lack of focus on AspectJ. Most comments were of the 
> form "it's too powerful for most developers" or that the special compiler 
> makes it difficult to sell in most organizations. Instead, most of the 
> talks focused on newer "pure Java" AOP frameworks.
> I personally find AspectJ to be a well designed implementation of AOP 
> concepts. On my weblog (http://www.freeroller.net/page/mschinc), I've been 
> documenting my own exploration of the capabilities that AspectJ provides. 
> Looking closer at "pure Java" approaches like AspectWerkz (
> http://aspectwerkz.codehaus.org/) something has been bothering me, but I 
> haven't been able to put my finger on it. I'd like to put a couple of 
> questions out to the list and see where your thoughts are on the subject.
> 1) Can Aspects themselves be broken down into smaller sub-components? 
> Most of the Java AOP frameworks break out aspects into a number of 
> different pieces. For example, you implement your advice as one Java 
> class, your introductions as another and then define (usually using XML) 
> the pointcuts and the relationships between the components. So one Aspect 
> could actually require many files to implement and define. Does the 
> complexity of this approach interfere with the AOP philosophy? My fear is 
> that when the implementation requirements are complex, from a language 
> point of view, you start to lose track of the problem you are actually 
> trying to solve.
> As an aside, I think the AspectWerkz design for advice is broken. Because 
> each type of advice is a class (pre, post and around) and each advice 
> class extends a pre-existing class, you can't share any information 
> between different types of advice on the same pointcut.
> 2) Can pointcuts be modeled separately from advice? 
> This follows on the above point, but it's one that I find a little odd. 
> Most (all?) of the pure Java approaches define their pointcuts in one file 
> and their advice in another. Presumably this means that advice can be 
> reused across multiple different aspect definitions. From a philosophical 
> point of view, can advice be modeled truly independently from pointcuts? I 
> would think that certain types of advice, particularly when dealing with 
> cflow and other advanced join points, really require the pointcut 
> definition to be present in order to make sense.
> 3) What role, if any, should metadata play in AOP? 
> I know Gregor has commented on the use of metadata a couple of times, but 
> the JBoss group is charging ahead with their "AOP" product which 
> encourages developers to use class metadata to load library aspects. This 
> strikes me as wrong in many ways, but the message that is reaching the 
> development community is that interceptors and metadata are all you need 
> to do AOP. Is this just a function of what's easy to implement, or are 
> people really having trouble grasping the concepts?
> I'm looking forward to hearing your thoughts. 
> Cheers, 
> Merrick


Back to the top