Participants : Jacques Noyé [ correspondent ] , Angel Núñez.
ECaesarJ is a new language developed in the context of the European project AMPLE (see Sec. 8.3 ), as joint work with the Technische Universität Darmstadt (TUD). The basic objective was to provide support for directly mapping the high-level features defined by a software product line onto implementation-level features, beyond standard feature-oriented programming. But the language has much wider applications. ECaesarJ can actually be seen as a language which smoothly integrates Object-Oriented Programming, Feature-Oriented Programming, Aspect-Oriented Programming, and Event-based Programming.
It is an extension of Java with virtual classes and propagating mixin composition (as its ancestor CaesarJ, developed at the TUD), but also polymorphic events and state machines . Unlike AspectJ, ECaesarJ does not include a class-like concept of aspect. Instead, it turns pointcuts and advices as (implicit) events and event handlers, which are standard class members. This makes it possible to use standard inheritance to reuse and refine them. Explicit events can also be used when events must be explicitly triggered as in traditional event-based programming.
This provides an asymmetric version of AOP where virtual classes can be used to deal with structural aspects whereas events can be used to deal with behavioral aspects.
Finally, a class can also include, as class members, state transitions. Combining this with virtual classes makes it possible to define, at the programming language level, refinable hierarchical state machines. The combination of state machines and events provides, in particular, effective language support for the State design pattern as well as a form of Event-based AOP.