Abstract:
Aspect-Oriented Software Development (AOSD) is a young
and quickly growing field. On the one hand, AspectJ, an
implementation of Aspect-Oriented Programming (AOP) in Java,
has grown under the leadership of Gregor Kiczales (founder
of AOP) to be the de-facto standard for AOP languages. On the
other hand, there is not yet a complete understanding in the
programming language community as to what the essence of AOP
is. In the talk I describe two examples of deriving essential
AOP concepts by starting with AspectJ and selectively shutting
down language features of Java. In a negative example, we
stop using Java's dynamic dispatch and discover the lack of
"Aspectual Polymorphism" (joint work with Erik Ernst). In
a positive example, we stop using Java core reflection and
discover "Aspectual Reflection" (joint work with Sergei
Kojarski), a special case of "Pluggable Reflection" (joint
work with John Vlissides). AspectJ is used as the basis
for the presentation, but the results are not exclusive to
AspectJ---Aspectual Polymorphism and Aspectual Reflection help
bring about a much deeper understanding of the essence of AOP.