Section 10.7. RELATED WORK


10.7. RELATED WORK

AspectJ [22, 23] is an extension to the Java programming language in which concerns are encapsulated in a new construct called an aspect. Aspects implement features that crosscut class boundaries, just as mixin layers do in JL. Both aspects and mixin layers can add new methods to existing classes. Aspects can weave code before or after the execution of a method, an effect JL achieves using method overriding and explicit calls to super. Aspects can refine the behavior of any group of existing classes, while mixin layers can only refine the classes nested in their superclasses. Thus, aspects are more expressive and can address more kinds of concerns than JL mixins. On the other hand, aspects must express explicit ordering constraints, while the order of mixin application is implicit in their instantiations. Also, as generic classes, mixins are probably easier to integrate into existing type systems than aspects.

Hyper/J [18] provides Java support for multi-dimensional separation of concerns [34]. This approach to software development is more general than that of JL, because it addresses the evolution of all software artifacts, including documentation, test cases, and design, as well as code. Hyper/J focuses on the adaptation, integration, and on-demand remodularization of Java code. Like JL, encapsulated feature implementations, called hyperslices in Hyper/J, can be mixed and matched to create customized applications. Unlike JL, Hyper/J can extract and possibly reuse feature code not originally separated into hyperslices. That is, Hyper/J supports the unplanned re-factorization of code to untangle feature implementations. While JL generalizes current OO technology, Hyper/J represents a more radical shift in thinking that also requires the development of new composition techniques.



Aspect-Oriented Software Development
Aspect-Oriented Software Development with Use Cases
ISBN: 0321268881
EAN: 2147483647
Year: 2003
Pages: 307

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net