Inheritance in the Presence of Asynchronous Method Calls

This paper considers a formal object-oriented model for distributed computing. Object orientation appears as a leading framework for concurrent and distributed systems. However, the synchronization of the RPC communication model is unsatisfactory in many distributed systems. Asynchronous message passing gives better control and efficiency in this setting, but lacks the structure and discipline of traditional object-oriented methods. The integration of the message concept in the object-oriented paradigm is unsettled, especially with respect to inheritance and redefinition. We propose an approach combining asynchronous method calls and conditional processor release points, which reduces the cost of waiting for replies in the distributed environment while avoiding low-level synchronization constructs such as explicit signaling. Even the lack of replies to method calls in unstable environments need not lead to deadlock in the invoking objects. This property seems attractive in asynchronous, open, or unreliable environments. Furthermore, the approach allows active and passive behavior (client and server) to be combined in concurrent objects in a very natural way. In this paper, we consider the integration of these constructs with a mechanism for multiple inheritance within a small object-oriented language. The language constructs are formally described by an operational semantics defined in rewriting logic.

[1]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[2]  Pierre America,et al.  Pool-T: a parallel object-oriented language , 1987 .

[3]  Denis Caromel,et al.  Reactive Programming in Eiffel// , 1995, OBPDC.

[4]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[5]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, SEFM.

[6]  Elie Najm,et al.  A Formal Semantics for the ODP Computational Model , 1995, Comput. Networks ISDN Syst..

[7]  Vladimiro Sassone,et al.  The inheritance anomaly: ten years after , 2004, SAC '04.

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

[9]  Einar Broch Johnsen,et al.  A Run-Time Environment for Concurrent Objects With Asynchronous Method Calls , 2005, WRLA.

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

[11]  Olaf Owe,et al.  Reasoning control in presence of dynamic classes , 2000 .

[12]  Jean-Marc Geib,et al.  Object-Based Parallel and Distributed Computation , 1996, Lecture Notes in Computer Science.

[13]  Cosimo Laneve,et al.  Inheritance in the join calculus , 2003, J. Log. Algebraic Methods Program..

[14]  Carlo Ghezzi,et al.  CJava: Introducing Concurrent Objects in Java , 1997, OOIS.

[15]  Oscar Nierstrasz,et al.  A Tour of Hybrid A Language for Programming with Active Objects , 1992 .

[16]  Pierre America,et al.  Designing an Object-Oriented Programming Language with Behavioural Subtyping , 1990, REX Workshop.

[17]  Martin Wirsing,et al.  Formal Syntax and Semantics of Java , 1999 .

[18]  Nicholas Carriero,et al.  Linda in context , 1989, CACM.

[19]  Martin Wirsing,et al.  An Event-Based Structural Operational Semantics of Multi-Threaded Java , 1999, Formal Syntax and Semantics of Java.

[20]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

[21]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[22]  Johan Dovland,et al.  Reasoning about Asynchronous Method Calls and Inheritance , 2004 .

[23]  Amir Pnueli,et al.  Understanding UML: A Formal Semantics of Concurrency and Communication in Real-Time UML , 2002, FMCO.

[24]  Christiano Braga,et al.  Rewriting Logic as a Semantic Framework for Modular Structural Op-erational Semantics , 2001 .

[25]  G. Stewart Von Itzstein,et al.  On Implementing High Level Concurrency in Java , 2003, Asia-Pacific Computer Systems Architecture Conference.

[26]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[27]  M. Clavel Reflection in Rewriting Logic: Metalogical Foundations and Metaprogramming Applications , 2000 .

[28]  Gul Agha,et al.  Abstracting Interaction Patterns: A Programming Paradigm for Open Distributed Systems , 1997 .

[29]  Per Brinch Hansen,et al.  Java's insecure parallelism , 1999, SIGP.

[30]  Frank S. de Boer,et al.  Verification for Java's Reentrant Multithreading Concept , 2002, FoSSaCS.

[31]  Einar Broch Johnsen,et al.  Object-Oriented Specification and Open Distributed Systems , 2004, Essays in Memory of Ole-Johan Dahl.

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

[33]  Gregory R. Andrews,et al.  Concurrent programming - principles and practice , 1991 .

[34]  Neelam Soundarajan,et al.  Inheritance: from code reuse to reasoning reuse , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[35]  Einar Broch Johnsen,et al.  A Compositional Formalism for Object Viewpoints , 2002, FMOODS.

[36]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..