Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [aspectj-dev] Using AspectJ to implement AspectJ


Ron and Wes,

The terms tracing, logging and messaging mean different things to different people so I will define how I use them WRT the compiler and AOP opportunities:
- Tracing:        objectively recording method entry/exit with dynamic context, the primary subject of  https://bugs.eclipse.org/bugs/show_bug.cgi?id=150487, usually an ideal candidate for implementation with AOP, primarily used by developer rather than user.
- Error logging:        objectively record exception conditions, similar or possibly stronger case to tracing.
- Messages:        subjectively record a compiler event, not a candidate for AOP because messages are not typically issued at well defined AspectJ join points nor is the context consistent, calls are fare less numerous than tracing or logging and the presence of the calls actually helps the developer, primarily used by user.

My only plans to unite tracing/logging and messaging is through a MessageHandler that would allow all output from the compiler to be directed to a single, externally configurable destination e.g. JDK 1.4 logging.

Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/



"Wes" <wes@xxxxxxxxxxxxxx>
Sent by: aspectj-dev-bounces@xxxxxxxxxxx

18/07/2006 20:51

Please respond to
wes@xxxxxxxxxxxxxx; Please respond to
AspectJ developer discussions <aspectj-dev@xxxxxxxxxxx>

To
"AspectJ developer discussions" <aspectj-dev@xxxxxxxxxxx>
cc
Subject
RE: [aspectj-dev] Using AspectJ to implement AspectJ





Hi Ron, Matthew -
 
I'm all for eating your own dog food.
 
Just wrt error handling, as you know we have a message pattern that's designed around compiler requirements, i.e., many messages of different types, with different consumers, separation of formatting and logic (e.g., abort decisions).  It's been relatively easy to graft error-handling and tracing onto this message pattern, and it is easy to wire up loggers (i.e., other sinks) as consumers.  So in that case, I believe the plumbing is well modularized and that the message sources are also well-modularized (because that's where, say, a particular compiler error is detected.  Tracing, I agree, is different.  While it would be easy to add tracing to these sinks, but I'm not sure it would be performant or useful, since there's no sense mixing consumers of tracing and other messages.
 
The primary use by the AspectJ team of AspectJ is in developing teaching and demonstration materials, so it's not really fair to imply that we don't use AspectJ.  I believe we have, or should have, examples of every kind of use of AspectJ there is, so semantically I think we've covered.  Engineering-wise, it's true we don't rely on AspectJ in the configurations that users do, but (as Matthew mentioned) for the most interesting ones (e.g., LTW, binary weaving), we wouldn't use even if we used AspectJ in the compiler.
 
I've long thought that the AspectJ browser would be the first component to use aspects.   While it's nice to retrofit applications like the compiler, the interesting stuff happens when you can start from scratch and design in aspects.  The code for the browser is out there for anyone to rewrite and contribute back; it might be due for a refresh anyway.  
 
Wes
 
------------Original Message------------
From: "Ron Bodkin" <rbodkin@xxxxxxxxxxxxxx>
To: "'AspectJ developer discussions'" <aspectj-dev@xxxxxxxxxxx>
Date: Tue, Jul-18-2006 9:35 AM
Subject: RE: [aspectj-dev] Using AspectJ to implement AspectJ

I’m glad to hear there are plans to do this. I would argue that requirements for tracing tend to expand, so it’s a slippery slope to start scattering tracing code, and indeed there is a fair amount of logging code (all the message handling) and error handling code that seems well suited to modularizing with aspects. I’ll grant that using LTW to apply aspects to AspectJ would involve some changes and complexity to isolate a bootstrap AspectJ from a target one (with ClassLoaders or package names…), so it’s probably not so appealing.

 

I agree that there is a need to prioritize, but I think that the AspectJ project has to be committed to using AspectJ and should be looking for effective ways to use aspects, both to eat its own cooking as well as to show the world how project benefits from them. With AspectJ 1.5.2 I think the core code has become quite stable and the major areas to address are resource use (memory & speed) and tools support. Focusing on some key improvements in these areas first does make sense to me: I would argue that having AspectJ implemented with AspectJ will ultimately be the best way to address both of these priorities…

 


From: aspectj-dev-bounces@xxxxxxxxxxx [mailto:aspectj-dev-bounces@xxxxxxxxxxx] On Behalf Of Matthew Webster
Sent:
Tuesday, July 18, 2006 7:27 AM
To:
AspectJ developer discussions
Cc:
'AspectJ developer discussions'; aspectj-dev-bounces@xxxxxxxxxxx
Subject:
Re: [aspectj-dev] Using AspectJ to implement AspectJ

 


The value of using of AOP and AspectJ must always be evaluated on a case by case basis. Some of the compelling reasons for using a tracing aspect do not apply to the AspectJ project (at the moment): we don't have a large project team of mixed ability; we don't have a lot of tracing code. Additionally some of the options available to our users are not available to us: we can't use LTW for obvious reasons and our build system does not (yet) support binary weaving. At this time the cost of using AspectJ in terms incremental performance and/or required build changes outweigh those associated with a (very small) hand-coded tracing implementation. Having a more serviceable deliverable is more important right now than exploiting AOP.


As I said in the bug report we should be eating our own cooking (and we are in certain places already especially AJDT), the AspectJ compiler would be a good showcase for the technology and if we experience problems with the performance and reliability of the tools then we will be feeling our user's pain. I think in the near future we will start to use AspectJ more in the implementation of the compiler but only after we have looked at other issues such as memory footprint (Bug 146781 "Fast pipelining compilation system when only using dynamic crosscutting") and project structure (Bug 113948 "Repackage AspectJ"). Implementing these enhancements will help us solve the tools problems and bring us closer to using AspectJ.


Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/[1]

_______________________________________________
aspectj-dev mailing list
aspectj-dev@xxxxxxxxxxx

https://dev.eclipse.org/mailman/listinfo/aspectj-dev _______________________________________________
aspectj-dev mailing list
aspectj-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-dev


Back to the top