I had a great lunch with Glenn Vanderburg yesterday. I convinced him to give me an abbreviated version of his talk on AspectJ that he just gave at the Rocky Mountain Software Symposium. AspectJ sounds extremely interesting and Glenn's enthusiasm about it makes me want to dive into Aspect Oriented Programming.
Aspect Oriented Programming is a technique that allows a greater separation of concerns in software development. A powerful example of this is using aspects to enable method tracing in an application. You can define an aspect that causes all the method signatures in the application to be printed as they are executed. The aspect is compiled in at compile time. Any execution with that compiled version of the software will have the tracing information in it. However, since tracing information is slow and clutters up output, the production version of the code might be compiled without that aspect in it. Unlike asserts or "if" statement wrappers around tracing information, the code to do the tracing does not even exist in the production version. Meaning that the runtime is not slowed down even to do a truth test.
All that being said, I am questioning the current state of the technology. As Glenn says, this is a first step toward aspect oriented development. So, the tools and technology are a bit complex right now. Although I haven't played with it yet, it sounds as if it might be hard to justify putting into use at a client. Most of the time projects introduce many new APIs and technologies to clients, and adding AspectJ may over-complicate the product into a maintenance nightmare.
But, as always, I could be wrong.
7:56:25 AM
|