Ron Bodkin, New Aspects
Gregor Kiczales, NSERC, Xerox, Sierra Software Design Chair
Track: Emerging Technology Tutorial
Date: Tuesday, April 22
Time: 1:30pm - 5:00pm
Location: Camino Real
AspectJ is a seamless aspect-oriented extension to Java. It can be used to cleanly modularize the crosscutting structure of concerns such as exception handling, security enforcement, testing, synchronization, performance optimizations, and resource sharing.
When implemented in a non-aspect-oriented fashion, the code for these concerns typically becomes spread out across entire programs. AspectJ controls such code-tangling and makes the underlying concerns more apparent, so programs are easier to develop and maintain.
Bodkin?s tutorial introduces Aspect-oriented programming and shows how to use AspectJ to implement crosscutting concerns in a concise, modular way. He also demonstrates and uses AspectJ's integration with IDEs such as JBuilder, NetBeans, Emacs, and Eclipse, in addition to the core AspectJ tools.
AspectJ is freely available at http://eclipse.org/aspectj
Attendees should have experience doing object-oriented design and implementation, and should be able to read Java code. No prior experience with aspect-oriented programming or AspectJ is required.
Bodkin provides additional background: "I was previously the CTO of C-bridge, which built systems for clients
using Java that connected to enterprise systems. We created frameworks
to capture patterns of use, but I saw some significant drawbacks to
traditional OO frameworks. I was excited by Aspect-Oriented Programming
(AOP) and as I investigated I realized how much better a solution it
offered. I joined Xerox PARC to apply the technology to the enterprise.
"AspectJ is the next big step in software modularity. Object orientation was
the last big step. That's very cool and always a bit controversial
(remember how many people denounced OO or said 'you can do the same
thing in C/Pascal/'?).
"After the tutorial, attendees should be able to modularize crosscutting concerns. This ranges from
development-time uses like tracing and non-invasive mock objects for
testing up to critical subsystems like fine-grained authorization
policies, persistence implementations, and error handling.
"In the field of software, I believe we are moving towards a world in
which we can build high quality, extremely flexible systems for far less
cost. Because software is what delivers the value to end uses, this
promises to unleash a tidal wave of innovation and improvement. I don't
expect to see truly intelligent machines in my life time, but I think we
will have much more sophisticated, integrated, configurable software for
large organizations, for individuals, and everything in between. It will
be able to act as our agent and as a 'coach' helping us organize our
activities and giving us tireless feedback."