An Algebraic Semantics for an Abstract Language with Intra-Object-Concurrency

Object-oriented specification and implementation of reactive and distributed systems are of increasing importance in computer science. Therefore, languages like Java [1] and Object REX)( [3, 7] have been introduced which integrate objectorientation and concurrency. An important area in programming language research is the definition of semantics, which can be used for verification issues and as a basis for language implementations. In recent years several semantics for concurrent object-oriented languages have been proposed which are based on the concepts of process algebras; see, for example, [2, 6, 8, 9]. In most of these semantics, the notions of processes and objects are identified: Objects are represented by sequential processes which interact via communication actions. Therefore, in each object only one method can be active at a given time. Furthermore, language implementations based on these semantics tend to be inefficient, because the simulation of message passing among local objects by communication actions is more expensive than procedure calls in sequential languages. In contrast to this identification of objects with processes, languages like Java and Object REXX allow for intra-object-concurrency by distinguishing passive objects and active processes (in Java, processes are objects of a special class). Objects are data structures containing methods for execution, while system activity is done by processes. Therefore, different processes may perform methods of the same object at the same time. To avoid inconsistencies of data, the languages contain constructs to control intra-object-concurrency. In this paper, we introduce an abstract language based on Object REXX for the description of the behaviour of concurrent object-based systems, i.e. we ignore data and inheritance. The operational semantics of this language is defined by a translation of systems into terms of a process calculus developed previously. This calculus makes use of process creation and sequential composition instead of the more common action prefixing and parallel composition. Due to the translation of method invocation into process calls similar to procedure calls in sequential languages, the defined semantics is appropiate as a basis for implementation.