Distribution and persistence as aspects

This paper reports our experience using AspectJ, a general‐purpose aspect‐oriented extension to Java, to implement distribution and persistence concerns in a Web‐based information system. This system was originally implemented in Java and restructured with AspectJ. Our main contribution is to show that AspectJ is useful for implementing several persistence and distribution concerns in the considered application, but also in similar applications. We have also identified interferences between the implemented aspects and a few drawbacks in the language, so we suggest some minor language modifications that could significantly improve similar implementations. Despite those problems, we argue that the AspectJ implementation is superior to the pure Java implementation. Some of the aspects implemented in our experiment are abstract and constitute a simple aspect framework. The other aspects are application specific but we suggest that different implementations might follow the same aspect patterns. The framework and the patterns allow us to propose architecture‐specific guidelines that provide practical advice for both restructuring and implementing certain kinds of persistent and distributed applications with AspectJ. Copyright © 2006 John Wiley & Sons, Ltd.

[1]  Awais Rashid,et al.  Framed Aspects: Supporting Variability and Configurability for AOP , 2004, ICSR.

[2]  Hans-Arno Jacobsen,et al.  Resolving feature convolution in middleware systems , 2004, OOPSLA.

[3]  S. Chiba,et al.  Remote pointcut: a language construct for distributed AOP , 2004, AOSD '04.

[4]  Ruzanna Chitchyan,et al.  Persistence as an aspect , 2003, AOSD '03.

[5]  Laurence Duchien,et al.  JAC: an aspect‐based distributed dynamic framework , 2004, Softw. Pract. Exp..

[6]  D. Flannanghan JavaScript: The definitive guide , 1999 .

[7]  Martin P. Robillard,et al.  Does aspect-oriented programming work? , 2001, CACM.

[8]  Sérgio Soares,et al.  Implementing distribution and persistence aspects with aspectJ , 2002, OOPSLA '02.

[9]  Gail C. Murphy,et al.  Managing crosscutting concerns during software evolution tasks: an inquisitive study , 2002, AOSD '02.

[10]  Hans-Arno Jacobsen,et al.  Quantifying aspects in middleware platforms , 2003, AOSD '03.

[11]  Michiaki Tatsubori,et al.  Separation of Distribution Concerns in Distributed Java Programming , 2001 .

[12]  Richard Monson-Haefel,et al.  Enterprise JavaBeans , 1999, Java series.

[13]  C. Nogueira Amorim,et al.  Integrating Code Generation and Refactoring , 2002 .

[14]  Ramez Elmasri,et al.  Fundamentals of Database Systems , 1989 .

[15]  Adrian Mark Colyer,et al.  Applying AOP for Middleware Platform Independence , 2003 .

[16]  Fernando Castor,et al.  JaTS: A Java transformation system , 2001 .

[17]  Jason Hunter Java servlet programming , 1998, Java series.

[18]  Paulo Borba,et al.  PIP: Progressive Implementation Pattern , 2002 .

[19]  Paulo Borba,et al.  An Aspect-Oriented Implementation Method , 2004 .

[20]  Robert J. Walker,et al.  Implicit context: easing software evolution and reuse , 2000, SIGSOFT '00/FSE-8.

[21]  Dan Harkey,et al.  Client/Server programming with Java and Corba , 1997 .

[22]  Paulo Borba,et al.  Progressive Implementation of Distributed Java Applications , 1999 .

[23]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[24]  S. Soares PaDA : A Pattern for Distribution Aspects , 2002 .

[25]  Jörg Kienzle,et al.  AOP: Does It Make Sense? The Case of Concurrency and Failures , 2002, ECOOP.

[26]  Gregor Kiczales,et al.  Back to the future: a retroactive study of aspect evolution in operating system code , 2003, AOSD '03.

[27]  Vander Alves,et al.  Distributed Adapters Pattern: A Design Pattern for Object-Oriented Distributed Applications , 2002 .

[28]  Vander Alves,et al.  PDC: Persistent Data Collections pattern , 2001 .

[29]  William G. Griswold,et al.  Getting started with ASPECTJ , 2001, CACM.

[30]  Stefan Hanenberg,et al.  Parametric introductions , 2003, AOSD '03.

[31]  Christian Becker,et al.  Quality of Service - Aspects of Distributed Programs , 1998 .

[32]  Ian S. Graham The HTML SourceBook , 1995 .

[33]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[34]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[35]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[36]  Mira Mezini,et al.  Variability management with feature-oriented programming and aspects , 2004, SIGSOFT '04/FSE-12.

[37]  Jim Waldo,et al.  A Note on Distributed Computing , 1996, Mobile Object Systems.