Reusable aspect-oriented implementations of concurrency patterns and mechanisms

In this paper, we present a collection of well-known high-level concurrency patterns and mechanisms, coded in AspectJ. We discuss benefits of these implementations relative to plain Java implementations of the same concerns. We detect benefits from using AspectJ in all the cases presented, in the form of higher modularity, reuse, understandability and unpluggability. For most of the implementations, two alternatives can be used: one based on traditional pointcut interfaces and one based on annotations.

[1]  Mark Grand Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML , 2002 .

[2]  Kurt Maly,et al.  Web‐based framework for distributed computing , 1997 .

[3]  Michael J. Flynn,et al.  Some Computer Organizations and Their Effectiveness , 1972, IEEE Transactions on Computers.

[4]  Ecnica De Lisboa,et al.  Separation and Composition of Concerns using Design Patterns, Pattern Languages, and Object-Oriented Frameworks , 1999 .

[5]  Stefan Hanenberg,et al.  AspectJ Idioms for Aspect-Oriented Software Construction , 2003, EuroPLoP.

[6]  Jiri Soukup,et al.  Implementing patterns , 1995 .

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

[8]  Mira Mezini,et al.  Separation of Concerns with Procedures, Annotations, Advice and Pointcuts , 2005, ECOOP.

[9]  Gregory R. Andrews,et al.  Foundations of Multithreaded, Parallel, and Distributed Programming , 1999 .

[10]  Akinori Yonezawa,et al.  Design and Partial Evaluation of Meta-Objects for a Concurrent Reflective Language , 1998, ECOOP.

[11]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[12]  John R. Gurd,et al.  Using AspectJ to separate concerns in parallel scientific Java code , 2004, AOSD '04.

[13]  Christian Koppen,et al.  PCDiff : Attacking the Fragile Pointcut Problem , 2004 .

[14]  Satoshi Matsuoka,et al.  Implementing Parallel Language Constructs Using a Re ective Object-Oriented Language , 1998 .

[15]  L.A. Smith,et al.  A Parallel Java Grande Benchmark Suite , 2001, ACM/IEEE SC 2001 Conference (SC'01).

[16]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[17]  Scott Oaks,et al.  Java Threads , 1997 .

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

[19]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[20]  Don Batory,et al.  Taming Aspect Composition: A Functional Approach , 2005 .

[21]  Matthew Alexander Webster,et al.  Eclipse AspectJ: Aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools , 2004 .

[22]  Mark Grand,et al.  Patterns in Java, Volume 1, A Catalog of Reusable Design Patterns Illustrated with UML , 1998 .

[23]  Satoshi Matsuoka,et al.  Highly efficient and encapsulated re-use of synchronization code in concurrent object-oriented languages , 1993, OOPSLA '93.

[24]  Gregory R. Andrews,et al.  Concepts and Notations for Concurrent Programming , 1983, CSUR.

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

[26]  John M. Vlissides,et al.  Automatic Code Generation from Design Patterns , 1996, IBM Syst. J..

[27]  Klaus-Peter Löhr,et al.  JAC: declarative Java concurrency , 2006, Concurr. Comput. Pract. Exp..

[28]  Mitsuhisa Sato,et al.  Design and Implementation of Metalevel Architecture in C++ -- MPC++ Approach -- , 1998 .

[29]  Leslie Lamport,et al.  Artificial Intelligence and Language Processing ]acques Cohen Editor a Simple Approach to Specifying Concurrent Systems , 2022 .

[30]  米沢 明憲 ABCL : an object-oriented concurrent system , 1990 .

[31]  Klaus-Peter Löhr,et al.  Object-Oriented Concurrent Programming , 1992, TOOLS.

[32]  Marco Meijers,et al.  Tool Support for Object-Oriented Patterns , 1997, ECOOP.

[33]  Doug Lea Concurrent Programming in Java. Second Edition: Design Principles and Patterns , 1999 .

[34]  Ramnivas Laddad,et al.  Aspectj in Action: Practical Aspect-Oriented Programming , 2003 .

[35]  David O. Holmes Synchronisation Rings Composable Synchronisation for Object-Oriented Systems , 1999 .

[36]  Ciaran Mchale,et al.  Synchronisation in Concurrent, Object-oriented Languages: Expressive Power, Genericity and Inheritan , 1994 .

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

[38]  Doug Lea,et al.  Concurrent Programming In Java , 1996 .

[39]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .