JAC: A Flexible Solution for Aspect-Oriented Programming in Java

This paper presents JAC (Java Aspect Components), a framework for aspect-oriented programming in Java. Unlike language such as AspectJ which are mostly class-based,JAC is object-based and does not require any language extensions to Java. It uses the Javassist class load-time MOP. An aspect program in JAC is a set of aspect objects that can be dynamically deployed and undeployed on top of running application objects. Aspect objects may define three kinds of aspect methods: wrapping methods (that wrap application methods and provide the ability to run code before and after the wrapped methods), role methods (that add new functionalities to application objects), and exception handlers. The aspects composition issue is handled through a well-defined wrapping controller that specifies for each wrapped object at wrap-time, runtime or both, the execution order of aspect objects.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  Harold Ossher,et al.  Subject-oriented composition rules , 1995, OOPSLA.

[3]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[4]  Laurence Duchien,et al.  An Automatic Aspect Weaver with a Reflective Programming Language , 1999, Reflection.

[5]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[6]  Mehmet Aksit Software Architectures and Component Technology: The State of the Art in Research and Practice , 2001 .

[7]  Olivier Motelet,et al.  A Formal Definition of Crosscuts , 2001, Reflection.

[8]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[9]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[10]  Mira Mezini,et al.  Component Integration with Pluggable Composite Adapters , 2002 .

[11]  Laurence Duchien,et al.  Distributed separation of concerns with aspect components , 2000, Proceedings 33rd International Conference on Technology of Object-Oriented Languages and Systems TOOLS 33.

[12]  Wouter Joosen,et al.  Dynamic and selective combination of extensions in component-based applications , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[13]  Harold Ossher,et al.  Multi-Dimensional Separation of Concerns and the Hyperspace Approach , 2002 .

[14]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[15]  Mira Mezini,et al.  Programming with Aspectual Components , 1999 .

[16]  Mira Mezini,et al.  Adaptive plug-and-play components for evolutionary software development , 1998, OOPSLA '98.

[17]  Wolfgang Weck,et al.  Generic Wrappers , 2000, ECOOP.