Hi AspectJ users,
First of all, we're not distracting to what AOP/AspectJ is all all. It's a winner at the time it came in... we just are opening a new space of language research in a way that is more natural to Java programmers. AspectJML does use the AspectJ/ajc compiler to enable crosscutting behavior.
With AspectJML, programmers feel like they are programming in plain Java, but AspectJML also allows them to modularize crosscutting concerns without having any meta-level shift or without having any extended syntax shift for advanced modularity. It's quite similar to @AspectJ but differ in several ways:
(1) does not have a class playing the role of an aspect; there is no notion of aspect in AspectJML;
(2) named method advice can be placed anywhere, e.g. interfaces and follows Java semantics of static and instance methods and visibility; that is, for example, a private advice method only affects the type it was declared;
(3) hierarchical structure can be used to enable modular crosscutting in AspectJML;
(4) Open class mechanism is supported in .ajml files, which work as slices. For example, for a class say Point.java, we can have Point.ajml, which is a slice of the type Point. When compiled, we get only one Point.class;
(5) Instance and Class/Static level advising
(6) ...
*** AspectJML is a non-classical notion of AOP that follows the classical notion of modularity and modular reasoning. AspectJ is a classical notion of AOP that does not. But in AspectJML we can mix all of these notions; that is, you can move back or forward between these AOP notions.
For the key ideas, please refer to the aop reloaded
paper. A paper with an overview of AspectJML and other supplemental material is under the way.
The fun has not gone! It just began!
--
...............................................................................................................................
Henrique Rebelo
http://www.cin.ufpe.br/~hemrCentro de Informática
Universidade Federal de Pernambuco , Brazil