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.
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, multi-object protocols, 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, making programs easier to develop and maintain.
This tutorial will introduce Aspect-oriented programming and show how to use AspectJ to implement crosscutting concerns in a concise, modular way. We will use numerous examples to develop participant's understanding of aspect-oriented programming through AspectJ, and hands-on exercises to enhance that understanding. We will also demonstrate and use AspectJ's integration with IDEs such as JBuilder 4.0 and Forte4J, and emacs, in addition to the core AspectJ tools.
AspectJ is freely available at http://www.aspectj.org
Erik Hilsdale is a researcher at the Xerox Palo Alto Research Center. As a member of the AspectJ project team, he focuses on language design, pedagogy and compiler implementation. He has written several conference and workshop publications in programming languages. He is an experienced and energetic instructor in programming languages with a long background with AspectJ.
Jim Hugunin is a researcher at the Xerox Palo Alto Research Center where he leads the implementation efforts for the AspectJ compiler and plays a key role in the design of the AspectJ language. His recent work has focused on building alternative languages that integrate seamlessly with the Java platform. Prior to coming to PARC, Jim designed and implemented JPython, a popular implementation of the Python scripting language for the Java platform.