Professional Documents
Culture Documents
JEAN-PIERRE BRIOT
Laboratoire d’Informatique de Paris 6, UPMC—Case 169, 4 place Jussieu, 75252 Paris Cedex 05,
France; email: ^Jean-Pierre.Briot@lip6.fr&.
RACHID GUERRAOUI
Département d’Informatique, École Polytechnique Fédérale de Lausanne, CH-1015, Lausanne,
Switzerland; email: ^rachid.guerraoui@epfl.ch&.
AND
KLAUS-PETER LÖHR
Institut für Informatik, Freie Universität Berlin, D-14195 Berlin, Germany; email:
^lohr@inf.fu-berlin.de&.
This paper aims at discussing and classifying the various ways in which the object
paradigm is used in concurrent and distributed contexts. We distinguish among the
library approach, the integrative approach, and the reflective approach. The library
approach applies object-oriented concepts, as they are, to structure concurrent and
distributed systems through class libraries. The integrative approach consists of
merging concepts such as object and activity, message passing, and transaction,
etc. The reflective approach integrates class libraries intimately within an object-
based programming language. We discuss and illustrate each of these and point
out their complementary levels and goals.
guage and SR [Andrews et al. 1993], bell et al. 1993], based on the concept of
although less known, features versatile the microkernel. The architecture of the
and powerful concurrency constructs. (generic) distributed operating system
Argus [Liskov and Sheifler 1983] and is organized along abstract notions of
Emerald [Black et al. 1987] have be- class components, which may then be
come known for their distribution sup- specialized for a given instantiation/
port. porting of the (virtual) system. Such
Combining concurrency and distribu- systems are easier to understand, main-
tion with object orientation proper, that tain and extend, and should also ulti-
is, including inheritance, has been the mately be more efficient as only the
subject of many research projects since required modules have to be used for a
1985. Several new language designs given computation.
representing the integrative approach To illustrate the library approach, we
are discussed and compared in Papatho- survey examples of libraries for concur-
mas [1989; 1995]. An early book featur- rent and for distributed programming in
ing different articles on concurrent ob- two different well-known object-ori-
ject-oriented programming is by ented languages: (1) the Smalltalk-80
Yonezawa and Tokoro [1987]; a more programming language and environ-
recent one is by Agha et al. [1993]. ment, where a basic and simple object
Furthermore, several workshops have concept is uniformly applied to model
been devoted to object-based concur- and structure the whole system through
rency and distribution: see Agha [1989]; class libraries, including concurrency
Agha et al. [1991]; Briot et al. [1995]; and distribution aspects; and (2) C11,
Guerraoui et al. [1994]; and Tokoro et whose widespread use has resulted in a
al. [1992]. proliferation of concurrency libraries
[Wilson and Liu 1996].
2. THE LIBRARY APPROACH
2.2 Smalltalk Libraries
2.1 Modularity and Structuring Needs
Smalltalk is often considered as one of
The basic idea of the library approach is the purest examples of object-oriented
to apply encapsulation and abstraction, languages [Goldberg and Robson 1989].
and possibly also class and inheritance This is because its credo is to have only
mechanisms, as a structuring tool to a few concepts (object, message passing,
design and build concurrent and distrib- class, inheritance) and to apply them
uted computing systems. In other uniformly to any aspect of the language
words, the issue is to build and program and environment. One consequence is
a concurrent or distributed system with that the language is actually very sim-
a given object-oriented methodology and ple. The richness of Smalltalk comes
a given object-oriented programming from its set of class libraries, which
language. The main motivation is to describe and implement various pro-
increase modularity by decomposing gramming constructs (control struc-
systems into various components with tures, data structures, and so on), inter-
clear interfaces. This improves structur- nal resources (messages, processes,
ing of concurrent and distributed sys- compiler, and so on), and a sophisti-
tems, as opposed to UNIX-style sys- cated programming environment with
tems, in which the different levels of integrated tools (browser, inspector, de-
abstraction are difficult to distinguish bugger, and so on).
and understand. Actually, even basic control struc-
Applied to distributed operating sys- tures, such as loop and conditional, are
tems, the library approach has led to a not primitive language constructs, but
new generation of systems, such as Cho- just standard methods of standard
rus [Rozier 1992] and Choices [Camp- classes that make use of the generic
invocation of message passing. They are Simtalk [Bézivin 1989] or Actalk [Briot
based on booleans and execution clo- 1989] platforms. The Simtalk platform
sures (blocks). Blocks, represented as implements and classifies various syn-
instances of class BlockClosure, are chronization and simulation abstrac-
essential for building various control tions (pessimistic or optimistic simula-
structures that the user may extend at tion objects, Hoare monitors, Kessels
his wish. monitors, etc.) on top of Smalltalk stan-
dard abstractions/classes. A sample of
2.2.1 Libraries for Concurrent Programming the hierarchy of Simtalk classes is
shown in Figure 1. Within the Actalk
In Smalltalk, blocks are also the basis project for instance, the standard sched-
for multithreaded concurrency through uler was extended to parametrize and
processes. The standard class Process classify various scheduling policies.
describes their representation and its
associated methods implement process 2.2.2 Libraries for Distributed Pro-
management (suspend, resume, adjust gramming. Smalltalk offers libraries
priority, and so on). The behavior of the for remote communication, such as
process scheduler is itself described by Sockets and RPC, as well as standard
the class ProcessorScheduler. The libraries for storage and exchange of
basic synchronization primitive is the object structures for persistence, trans-
semaphore, represented by the class actions, and marshaling. The standard
Semaphore. Standard libraries also in- Smalltalk Binary Object Streaming Ser-
clude higher abstractions: class Shared- vice (BOSS) library provides basic
Queue to manage communication be- support for building distribution mech-
tween processes, and class Promise for anisms, e.g., marshaling and transac-
representing the eager evaluation of a tions. The HP Distributed Smalltalk
value computed by a concurrently exe- product provides a set of distributed
cuting process. services following the OMG (CORBA)
Thanks to this uniform approach, con- standard [OMG 1995], themselves im-
currency concepts and mechanisms are plemented as Smalltalk-80 class li-
well encapsulated and organized in a braries.
class hierarchy. Thus, they are much Projects like GARF [Garbinato et al.
more understandable and extensible 1994; 1995] and BAST [Garbinato et al.
than if they were just simple primitives 1996; Garbinato and Guerraoui 1997] go
of a programming language. Further- a step further in providing abstractions
more, it is relatively easy to build up on for reliable distributed programming. In
the basic standard library of concur- GARF, two complementary class hierar-
rency classes to construct more sophisti- chies have been developed for various
cated abstractions, as for example in the communication models (point-to-point,
multicast, atomic multicast . . .) and ob- guage for object-oriented systems pro-
ject models (monitor, persistent, repli- gramming. As a consequence, building
cated . . .). For instance, class Mailer concurrency and distribution libraries
implements remote message passing. in C11 has been more than a marriage
Class Abcast (a subclass of Mailer) of convenience. As explained in Section
broadcasts an invocation to a set of rep- 1.2, the systems programmer needs flex-
licated objects, and ensures that the ibility and therefore prefers libraries to
messages are totally ordered (ensure built-in features. She also likes to ex-
the consistency of the replicas). These ploit the low-level mechanisms and ser-
classes constitute adequate support for vices offered by the underlying execu-
the development of fault-tolerant appli- tion platform. As the library approach
cations where critical components are allows any functionality of a given plat-
replicated on several nodes of a net- form to be wrapped in C11 functions or
work. A sample of the hierarchy of classes, it is not surprising that a wide
GARF classes is shown in Figure 2. variety of concurrency and distribution
The BAST project aims at building mechanisms are cast in C11 libraries.
abstractions at a lower level. Roughly In fact, any programmer can readily
speaking, BAST provides distributed build wrappers for concurrency and dis-
protocols, such as total-order multicast tribution mechanisms from her favorite
and atomic commitment, that are used platform.
in the implementation of GARF classes.
For instance, BAST supports classes 2.3.1 Libraries for Concurrent Pro-
UMPObject for unreliable message gramming. Class libraries can be built
passing and subclasses RMPObject and for all kinds of process concepts, heavy-
RMPObject, respectively, for reliable weight or lightweight, and for their cor-
multicast communication [Garbinato et responding synchronization mecha-
al. 1996; Garbinato and Guerraoui, nisms. Many concurrent programs are
1997]. conveniently implemented using a
threading system (e.g., network servers,
2.3 C11 Libraries
interactive programs, parallel pro-
As opposed to Smalltalk, C11 is not grams). We look first into object-ori-
genuinely object-oriented [Stroustrup ented threading libraries.
1993]: it is an object-oriented extension
of C, a language originally designed for Representation of threads. Although
systems programming. Thus, C11 is defining classes for synchronization ob-
not the ideal vehicle for building object- jects such as semaphores is a straight-
oriented applications. Nevertheless, it forward exercise, it is not obvious how
has become the most widely used object- to cast a thread abstraction into a class.
oriented language, and it is the lan- There are at least three different ways,
depending on how the activity of a Note that the lifetime of its activity may
thread object is described: be shorter than its own lifetime (as an
object).
(1) A thread is an instance of a subclass
An example of the first approach is
of some class Thread, and the activ-
the coroutine part of Sun’s C11 library
ity of the thread is described by the
constructor of the subclass. This is [Sun 1995]. The library offers a class
akin to the Simula approach to co- task (i.e., this plays the role of the class
routines [Birtwistle et al. 1973]: the Thread in the preceding classification).
body of a coroutine class describes A task object is implemented as a co-
both initialization and activity of a routine with nonpreemptive scheduling.
coroutine object. There is also a class Inter-
rupt_handler that allows catching
(2) A thread is an instance of a subclass
UNIX software interrupts (signals).
of class Thread, but its activity is
Typical operations on tasks are re-
described by overriding a special
method. sult() (wait for termination), rd-
state() (get state), and the like. Syn-
(3) A thread is an instance of class chronization is supported by low-level
Thread, and its activity is described wait operations and by object queues.
by a function that is passed as a
Figure 3 shows a fragment of a simple
parameter to the constructor or a
program using the coroutine library.
special method.
The main program, by declaring the ob-
In all these approaches, creating a ject p, creates a task which executes the
thread object spawns a new thread. producer() constructor. There is no
(AVTL) [Sheffler 1996] is an example of for the design both of distributed appli-
library support for parallel processing of cations and of new extensions to the
vectors. Although an approach like Choices kernel.
AVTL is tailored towards a specific A specific C11 class library has been
class of applications, it has the advan- developed. For instance, class Object-
tage of hiding communication from the Proxy implements remote communica-
programmer. If we are willing to pay tions between objects, classes Memo-
the price of low-level message-based ryObject and FileStream represent
programming, unlimited flexibility is memory management, and class Ob-
achieved by libraries that connect to a jectStar provides some generalized
communication platform, for example, notion of pointer. Class ObjectStar
MPI [Skjellum et al. 1996]. Libraries of provides transparency for remote com-
this kind can be seen as the “parallel” munications without the need for a pre-
equivalent to threading libraries as de- compilation step. This class is also used
scribed previously. by the automatic garbage collector.
Class Disk abstracts and encapsulates
2.3.2 Libraries for Distributed Pro- a physical storage device that may be
gramming. We have seen that for instantiated, for example, in class
C11, the library approach tends to mir- SPARCstationDisk when porting
ror the functionality of the underlying Choices onto a SPARC station.
execution platform. This is true not only The experience of the Choices projects
for concurrency but also for distribu- shows that a distributed operating sys-
tion. So we often find library classes tem, developed with an object-oriented
that encapsulate remote communication methodology and programming lan-
mechanisms such as ports or sockets guage (C11 in this case), helps in
(e.g., ACE supports UNIX socket ob- achieving better genericity and extensi-
jects). bility.
DC11. The DC11 system men-
tioned previously supports remote ob- Peace. Similar in spirit to Choices,
ject invocation. Note, however, that dis- the Peace parallel operating system
tribution and concurrency are not [Schröder-Preikschat 1994] has as its
strictly orthogonal in DC11. Remote target distributed memory multicom-
invocation comes in two flavors: syn- puters. Like Choices, Peace is actually a
chronous and asynchronous (where family of object-oriented operating sys-
asynchrony leads to truly parallel exe- tems. Its components, implemented in
cution of client and server). Asynchro- C11, can be configured in different
nous invocation of local objects, how- ways in order to fit different hardware
ever, is not directly supported. platforms and offer varying functional-
Ironically, this implies that it is easier ity.
in DC11 to write a distributed program Peace makes heavy use of inheritance
than to write a centralized one. in implementing the system family con-
cept. A stepwise bottom-up design of
Choices. Choices [Campbell et al. minimal extensions using subclasses re-
1993] is a generic operating system, of sults in a fine-grain inheritance hierar-
which the objective is not only to be chy. Exploiting this scheme, application
easily ported onto various machines, programs interface to the operating sys-
but also to be able to adjust various tem simply by extending certain system
characteristics of both hardware, re- classes.
sources, and application interfaces such The basic unit of concurrent execu-
as: file format, communication network, tion, the thread, is introduced through a
and memory model (shared or distrib- series of abstractions. Most threads are
uted). An object-oriented methodology made up from two objects of classes
is presented together with the system, native and thread, respectively. The
concurrent and distributed program- guage or system may follow one dimen-
ming. In addition to classical constructs sion of integration but not another.
of sequential programming, concurrent
and distributed computation introduces (1) A first level of integration between
concepts such as process, semaphore, the concept of an object and the
monitor, and transaction. The library concept of a process (more generally
approach helps in structuring concur- speaking, the concept of an autono-
rency and distribution concepts and mous activity) leads to the concept
mechanisms, but keeps them disjoint of an active object. Indeed, an object
from the objects structuring the applica- and a process may both be consid-
tion programs. In other words, the pro- ered as communicating encapsu-
grammer still faces at least two differ- lated units (as noted in Meyer
ent major issues: programming with [1993]). Actor languages [Lieberman
objects and managing concurrency and 1987; Agha 1986] are typical exam-
distribution of the program, also with ples of programming languages
objects but not the same objects! based on the notion of an active
Furthermore, when using libraries, object. Objects that are not active
the programming style may become a are sometimes called passive.
little cumbersome, as the concurrency (2) A second level of integration associ-
and distribution aspects (and more spe- ates synchronization with object ac-
cifically the manipulation of the objects tivation, leading to the notion of a
implementing them) add to the stan- synchronized object. Message pass-
dard programming style. For instance, a ing is then considered an implicit
library implementing asynchronous and synchronization between the sender
remote communication in Eiffel will and the receiver. Furthermore, one
force the programmer to do some often associates mechanisms for
amount of explicit message manipula- controlling the activation of invoca-
tion (see Karaorman and Bruno [1993, tions at the level of an object, for
pp. 109–111]), as opposed to standard example, by attaching a guard to
implicit message passing. One may then each method. Note that the concept
choose to integrate such constructs di- of an active object already implies
rectly into the programming language some form of synchronized object, as
as the extension of a standard language, the existence of a (single) activity
for example, Eiffel// [Caromel 1990], or private to the object actually en-
to define a brand-new language contain- forces the serialization of invoca-
ing that construct. tions. However, some languages or
Rather than leaving the object pro- systems, such as Guide [Balter et al.
grams and the management of concur- 1994] or Arjuna [Parrington and
rency and distribution orthogonal, the Shrivastava 1988], associate syn-
integrative approach aims to merge chronization with objects although
them by integrating concepts and offer- they distinguish the notions of ob-
ing the programmer a unified object ject and autonomous activity. An-
model. other more recent example is Java
[Lea 1997], where a new private
lock is implicitly associated with
3.2 Dimensions of Integration
each newly created object.
There are various possible levels of inte- (3) A third level of integration considers
gration between object-oriented pro- the object as the unit of distribution,
gramming concepts and concurrency leading to the notion of a distributed
and distribution concepts. Here we dis- object. Objects are seen as entities
tinguish three main levels. Note that that may be distributed and repli-
they are relatively independent of each cated on several processors. The
other. Thus, as we show, a given lan- message-passing metaphor is seen
zation with message passing has the at the object level of what is called
advantage of transparently ensuring condition synchronization at the data
some significant part of the synchroni- level. (Andrews [1991] is an excellent
zation concerns. Indeed, synchroniza- book on synchronization principles and
tion of requests is transparent to the terminology.)
client object, being managed by the ob-
ject serving requests. Interobject Synchronization. Finally,
In the case of serialized active objects, it may be necessary to ensure some
requests are processed one at a time, consistency, not just individual but also
according to their order of arrival. Some global (coordination) between mutually
finer-grain or rather more global con- interacting objects. Consider a money
currency control may, however, be nec- transfer between two bank accounts.
essary for objects. We distinguish three The issue is ensuring the invisibility of
different levels of synchronization at possible transient and inconsistent
the object(s) level, which correspond re- global states while the transfer takes
spectively to the internal processing of place. Intraobject or behavioral synchro-
an object, its interface, and the coordi- nization are not sufficient, and a notion
nation between several objects. such as an atomic transaction [Bern-
stein et al. 1987] is needed to coordinate
Intraobject Synchronization. In in- the different invocations.
traobject concurrency (i.e., an object si-
multaneously computing several re- 3.4.3 Synchronization Schemes. Vari-
quests), it is necessary to include some ous synchronization schemes have been
concurrency control in order to ensure proposed to address these different lev-
the consistency of the object state. Usu- els of concurrency control. Many of
ally, the control is expressed in terms of them are actual derivations from gen-
exclusions between operations.4 The eral concurrent programming and have
typical example is the readers and writ- been more or less integrated within an
ers problem, where several readers are object-oriented concurrent program-
free to access simultaneously a shared ming framework.
book but the presence of one writer ex- We may make a general distinction
cludes all others (writers and readers). with regard to whether synchronization
Note that intraobject synchronization is specifications are centralized.
the equivalent at the object level of
what is called (mutual) exclusion syn- —Centralized schemes, such as path ex-
chronization at the data level. pressions, specify in an abstract and
centralized way the synchronization
Behavioral Synchronization. It is of the object. As they are centralized,
possible that an object may temporarily they tend to be naturally associated
be unable to process a certain kind of and then integrated with the class.
request that is nevertheless part of its —Decentralized schemes, such as
interface. The typical example is the guards, specify at the program-area
bounded buffer example, which may not level the synchronization of the ob-
accept some insertion request while it is ject. As they are decentralized, they
full. Rather than signaling an error, it tend to be naturally associated and
may delay the acceptance of that re- then integrated with a method.
quest until it is no longer full. This
makes synchronization of services be- There has been considerable debate
tween objects fully transparent. Behav- about the pros and cons of various
ioral synchronization is the equivalent schemes in these two general catego-
ries. Important issues are: expressivity,
4
Note that the case of a mutual exclusion be- reusability, provability, and efficiency.
tween all methods subsumes the case of a serial- Several variations are described in the
ized object (as defined in Section 3.3.1). following, always with a focus on how
they can be integrated with the object needs to be rewritten from scratch. The
concepts (for a more detailed and ex- general problem of reusing synchroniza-
haustive presentation, please see An- tion specifications is addressed in Sec-
drews [1991]). Note that most activity, tion 3.6.1.
synchronization, and communication
models described in these sections have Behavior Replacement. The Actor
been implemented as various compo- model of computation [Agha 1986] is
nent libraries in a common framework based on three main concepts: active
for object-oriented concurrent program- object, asynchronous message passing,
ming called Actalk [Briot 1996]. This and behavior replacement. This last
framework provides a relatively neutral concept is both simple and very expres-
foundation and platform to study, com- sive. When created, an actor is com-
pare, and experiment with various mod- posed of an address—with which is as-
els of activity (reactivity, body, etc.), sociated a mail queue buffering
communication (synchronous, asynchro- incoming messages—and an initial be-
nous, etc.) and synchronization. havior. The behavior may be described
as a set of variables/data and a set of
Path Expressions. A first example of methods, just as a standard object. The
a centralized scheme is the concept of behavior computes the first incoming
path expressions, which specifies in a message5 and specifies the replacement
compact notation the possible interleav- behavior, that is, the behavior that will
ing of invocations. The Procol language compute the next message (see Figure
[van den Bos and Laffra 1991] is an 9). As one may imagine, once triggered
example of integration of path expres- by an incoming message, the replace-
sions (called protocols in Procol) with ment behavior will specify in turn its
objects. own replacement behavior, and so on.
Note that as soon as the replacement
The Body Revisited. Another cen- behavior is specified, the computation of
tralized scheme is the concept of body, the next message may start. This im-
described Section 3.3.4. An important plies intraobject concurrency. Con-
observation is that in complex cases the versely, as long as the replacement be-
body may describe both application-spe- havior is not specified, the computation
cific behavior and the logic for accepting of the next message will not proceed.
invocations. The missing distinction This implies synchronization, to be
among these very different issues, their
centralized handling in the body plus its
imperative nature, are the source of 5
In a similar way to objects, the message will
several problems when specializing ob- select a method to be evaluated in the environ-
ject behaviors. In most cases the body ment of the behavior.
tions of an object can be specified. If (2) When a subclass extends the set of
operation op1 is declared compatible operations of the superclass, a new
with operation op2, both can be exe- operation is incompatible with all
cuted in an overlapping fashion. Incom- the inherited operations, unless ex-
patible operations are mutually exclu- plicitly stated otherwise.
sive. This approach can be traced back
to Andrews [1991], where a centralized Figure 12 shows the example of read-
ers and writers in Distributed Eiffel.
parallel clause is used to specify com-
Figure 13 shows the equivalent pro-
patibility in a precursor of the SR pro-
gram in CEiffel.
gramming language. Note that declar-
ing compatibilities is safer than
declaring exclusion requirements. 3.5 Distributed Objects
(1) When a given sequential class with- An object represents an independent
out any annotations is used as a unit of execution, encapsulating data,
template for shared objects, these procedures, and possibly private re-
objects are serial by default, thus sources (activity) for processing the re-
keeping their sequential semantics. quests. Therefore a natural option is to
ciency, and in the worst case to incon- that may not understand a message will
sistencies (by invoking the same then delegate it (i.e., forward it) to an-
operation several times). A solution pro- other object called its proxy. (Note that,
posed in Mazouni et al. [1995] is based in order to handle recursion properly,
on prefiltering and postfiltering. Prefil- the delegated message will include the
tering consists of coordinating process- initial receiver.) The proxy will process
ing by the replicas (when considered as the message in place of the initial re-
a client) in order to generate a single ceiver, or it can also delegate it itself
invocation. Postfiltering is the dual op- further to its own designated proxy.
eration for the replicas (when consid- This alternative to inheritance is very
ered as servers) in order to discard re- appealing as it relies only on message
dundant invocations. passing and hence fits well with a dis-
tributed implementation. Meanwhile,
3.6.4 Factorization Versus Distribu- the delegation mechanism needs some
tion. A more general limitation (i.e., nontrivial synchronization mechanism
less specific to the integrative approach) to ensure the proper handling (ordering)
comes from standard implementation of recursive messages, prior to other
frameworks for object factorization incoming messages. Thus, it may not
mechanisms, which usually rely on offer a general and complete alternative
strong assumptions about centralized solution [Briot and Yonezawa 1987].
(single memory) architectures.
The concept of class variables, sup- 4. THE REFLECTIVE APPROACH
ported by several object-oriented pro-
gramming languages (e.g., Smalltalk), 4.1 Combining Flexibility and
is difficult and expensive to implement Transparency
for a distributed system. Unless com-
plex and costly transaction mechanisms As discussed earlier, the library ap-
are introduced, their consistency is hard proach (library-based approach) helps
to maintain once instances of a same in structuring concurrent and distrib-
class can be distributed among proces- uted programming concepts and mecha-
sors. Note that this problem is general nisms, thanks to encapsulation, generic-
for any kind of shared variable. Stan- ity, class, and inheritance concepts. The
dard object-oriented methodology tends integrative approach minimizes the
to forbid the use of shared variables, but number of concepts to be mastered by
may advocate using class variables in- the programmer and makes mecha-
stead. nisms more transparent, but at the cost
In a related problem, implementing of possibly reducing the flexibility and
inheritance on a distributed system the efficiency of mechanisms offered. In-
leads to the problem of accessing remote deed, programming languages or sys-
code for superclasses, unless all class tems built from libraries are often more
code is replicated to all processors, extensible than languages designed
which has obvious scalability limita- with an integrative approach. In other
tions. A semi-automatic approach con- words, libraries help structure and sim-
sists of grouping classes into autono- ulate various solutions and thus usually
mous modules so as to help partition bring good flexibility, whereas brand-
the class code among processors. new languages may freeze their compu-
A radical approach replaces the inher- tation and communication models too
itance mechanism between classes by early. It would thus be interesting to
the concept/mechanism of delegation be- keep the unification and simplification
tween objects. This mechanism was ac- advantages of the integrative approach,
tually introduced in the Actor concur- while retaining the flexibility of the li-
rent programming language Act 1 brary approach.
[Lieberman 1987]. Intuitively, an object One important observation is that the
library approach and the integrative ap- sponding metaprograms is strictly en-
proach actually address different levels forced.
of concerns and use: the integrated ap- Reflection helps in decorrelating li-
proach is for the application program- braries specifying implementation and
mer and the library approach is for the execution models (execution strategies,
system programmer. The end user pro- concurrency control, object distribution)
grams applications with an integrative from the application programs. This in-
(simple and unified) approach in mind. creases modularity, readability, and re-
The system programmer, or the more usability of programs. Reflection also
expert user, builds or customizes the provides a methodology for opening up
system, through the design of libraries and making adaptable, through a meta-
of protocol components, along a library interface,8 implementation decisions
approach. and resource management that are of-
Therefore—and as opposed to what ten hard-wired and fixed or delegated
one may think at first glance—the li- by the programming language to the
brary approach and the integrative ap- underlying operating system.
proach are not in competition but rather In summary, reflection helps inte-
complementary. The issue is then: how grate protocol libraries intimately
can we actually combine these two lev- within a programming language or sys-
els of programming? To be more precise: tem, thus providing the interfacing
how do we interface them? It turns out framework (the glue) between the li-
that a general methodology for adapting brary and the integrative approaches/
the behavior of computing systems levels.
called reflection offers such a glue.
4.3 Reflection and Objects
each of its replicas. Again, marshaling Emerald [Black et al. 1987]). It may be
decisions, such as which argument interesting to semi-automate such deci-
should be passed by reference, by value, sions using various considerations such
by move (i.e., migrated, as in Emerald as processor load and ratio of remote
[Black et al. 1987]), with attachments, communications. Reflection helps in in-
may be specialized through the mar- tegrating such statistical data (residing
shaling descriptors supplied by the cor- for physical and shared resources) and
responding component. One may also in using them by various migration al-
specialize such aspects as which parts of gorithms described at the metalevel
the object should be replicated, and var- [Okamura and Ishikawa 1994].
ious management policies for enforcing
consistency between the original object 4.6.3 Customizing System Policies.
and its replicas. The Apertos distributed operating sys-
tem [Yokote 1992] is a significant and
4.6 Other Examples of Reflective innovative example of a distributed op-
Architectures erating system completely designed
along an object-based reflective archi-
Other examples of representative reflec- tecture (MOP). Supplementary to the
tive architectures and their applications modularity and the genericity of the
are mentioned in the following. Note architecture gained by using a library
that this is by no means an exhaustive (object-oriented) approach (as for
study. Choices, already discussed in Section
4.6.1 Dynamic Installation and Com- 2.3.2), reflection brings the (possibly dy-
position of Protocols. The general namic) customization of the system to-
MAUD methodology [Agha et al. 1993] wards application requirements; for in-
focuses on fault-tolerance protocols, stance, one may easily specialize the
such as server replication and check scheduling policy in order to support
point. Its strength is in offering a various kinds of schedulers, such as a
framework for dynamic installation and real-time scheduler. Another gain is in
composition of specialized metacompo- the size of the microkernel obtained,
nents. The dynamic installation of which is particularly small, as it is re-
metacomponents makes possible the in- duced to supporting the basic reflective
stallation of a given protocol only when operations and the basic resource ab-
needed and without stopping program stractions. This helps in both under-
execution. The possibility of associating standing and porting the system.
metacomponents not only to objects but
also to other metacomponents (which 4.6.4 Reflective Extension of an Exist-
are first-class objects) makes possible ing Commercial System. A reflective
the layered composition of protocols. A methodology has recently been used in
higher-level layer for specification of de- order to incorporate extended (i.e., re-
pendability protocols (called DIL [Stur- laxing some of the standard (ACID)
man and Agha 1994]) has been designed transaction properties) transaction
that makes use of the underlying models into an existing commercial
MAUD reflective architecture. transaction processing system. It ex-
tends a standard transaction processing
4.6.2 Control of Migration. The au- monitor in a minimal and disciplined
tonomy and self-containedness of ob- way (based on upcalls) to expose fea-
jects, further reinforced in the case of tures such as: lock delegation, depen-
active objects, makes them easier to mi- dency tracking between transactions,
grate as a single piece. Nevertheless, and definition of conflicts, and to repre-
the decision to migrate an object is an sent them as reflective operations
important issue that often remains the [Barga and Pu 1995]. These reflective
programmer’s responsibility (e.g., in primitives are then used to implement
various extended transaction models, plex systems that ultimately use very
such as: split/join, cooperative groups, low-level mechanisms, for example, net-
and the like. work communication. Furthermore,
such systems are often developed by
4.7 Related Models teams of programmers, and in such a
context, having separate modules with
We finally mention two models for cus- well-defined interfaces is of primary im-
tomizing computational behaviors that portance. The difficulty in maintaining
are closely related to reflection. and extending UNIX-like systems
comes mainly from their low modularity
4.7.1 The Composition-Filters Model.
The SINA language is based on the no- and insufficient level of abstraction.
tion of a filter, a way to specify arbitrary Although progress is being made in
manipulation and actions for messages that direction, it is still too early to
sent to (or from) an object [Aksit et al. exhibit a standard class library for con-
1994]. In other words, filters represent current and distributed programming.
some reification of the communication We need both a good knowledge of the
and interpretation mechanism between minimal mechanisms required and a
objects. By combining various filters for consensus on a set of such mechanisms
a given object, one may construct com- involving different technical communi-
plex interaction mechanisms in a com- ties, notably programming languages,
posable way. operating systems, distributed systems,
and databases. The fact that the sema-
4.7.2 Generic Run-Time as a Dual phore abstraction became a standard
Approach. The frontier between pro- primitive for synchronization leads us
gramming languages and operating sys- to think, however, that other abstrac-
tems is getting thinner. Reflective pro- tions for concurrent and distributed pro-
gramming languages have some high- gramming can also be identified and
level representation of the underlying adopted.
execution model. Conversely, and dual
to reflection, several distributed operat- 5.2 The Integrative Approach
ing systems provide a generic run-time
layer such as the COOL layer in the The integrative approach is very ap-
Chorus operating system [Lea et al. pealing in its merging of concepts from
1993]. These generic run-time layers object-oriented programming and those
are designed to be used by various pro- from concurrent and distributed pro-
gramming languages, thanks to some gramming. It thus provides a minimal
upcalls that delegate specific represen- number of concepts and a single concep-
tation decisions to the programming tual framework to the programmer.
language. Nevertheless, this approach unfortu-
nately has limitations in some aspects
5. PERSPECTIVES of the integration (e.g., inheritance
anomaly and duplication anomaly).
5.1 The Library Approach Another potential weakness is that a
too systematic unification/integration
The library approach aims at increasing may lead to a too restrictive model—
the flexibility, yet reducing the complex- “too much uniformity kills variety!”—
ity, of concurrent and distributed com- and may also lead to inefficiencies. For
puting systems by structuring them as instance, stating that every object is
class libraries. Each aspect or service is active and/or every message transmis-
represented by an object. Such modular- sion is a transaction may be inappropri-
ity and abstraction objectives are very ate for some applications not necessar-
important because concurrent and dis- ily requiring such protocols, and their
tributed computing systems are com- associated computational load. A last
broker (which provides remote commu- possibly reducing the flexibility and ef-
nication facilities). In that sense, ficiency of the mechanisms. The inte-
CORBA follows the integrative ap- grative approach can be viewed as a
proach. CORBA also specifies a set of top-down approach and is directed to-
services to support more advanced dis- wards application-builders.
tributed features such as transactions. By providing a framework for inte-
The CORBA object transaction service grating protocol libraries intimately
(named OTS) is specified and imple- within a programming language or sys-
mented in the form of a class library of tem, the reflective approach provides
distributed protocols, such as locking the interfacing framework (the glue) be-
and atomic commitment. In that sense, tween the library and the integrative
CORBA follows the library approach. approaches/levels. Meanwhile, it en-
Finally, most CORBA implementations forces the separation of their respective
provide facilities for message reification levels. In other words, reflection pro-
(messages can be considered as first- vides the meta-interface through which
class entities), and hence support cus- the system designer may install system
tomization of concurrency and distribu- customizations and thus change the ex-
tion protocols. In that sense, CORBA ecution context (concurrent, distributed,
implementations follow (to some extent) fault-tolerant, real-time, adaptive, and
the reflective approach. so on) with minimal changes in the ap-
plication programs.
6. SUMMARY The reflective approach contributes to
blurring the distinction between pro-
In order to understand and evaluate gramming language, operating system,
various object-based concurrent and dis- and database, and at easing the devel-
tributed developments, we have pro- opment, adaptation, and optimization of
posed a classification of the different a minimal dynamically extensible com-
ways in which the object paradigm is puting system. Nevertheless, we stress
used in concurrent and distributed con- that this does not free us from the ne-
texts. The three approaches we have cessity of having a good basic design
identified convey different yet comple- and finding a good set of foundational
mentary research streams in the object- abstractions [Guerraoui et al. 1996].
based concurrent and distributed sys-
tem community. ACKNOWLEDGMENT
The library approach (library-based
The comments of the reviewers have greatly con-
approach) helps in structuring concur- tributed to improving the quality of this article.
rent and distributed-programming con-
cepts and mechanisms through encapsu-
lation, genericity, class, and inheritance REFERENCES
concepts. The principal limitation of the
approach is that the programming of ACHAUER, B. 1993. The Dowl distributed object-
the application and that of the concur- oriented language. Commun. ACM 36, 9.
rent and distribution architecture, is ADA 1983. The Programming Language Ada
Reference Manual. In Lecture Notes in Com-
represented by unrelated sets of con- puter Science, vol. 155. Springer-Verlag, New
cepts and objects. The library approach York.
can be viewed as a bottom-up approach AGHA, G. 1986. Actors: A Model of Concurrent
and is directed towards system-builders. Computation in Distributed Systems. Series in
The integrative approach minimizes Artificial Intelligence, MIT Press, Cambridge,
the concepts to be mastered by the pro- MA.
grammer and makes mechanisms more AGHA, G. A., FRØLUND, S., PANWAR, R., AND STUR-
MAN, D. 1993. A linguistic framework for
transparent by providing a unified con- dynamic composition of dependability proto-
current and distributed high-level ob- cols. In Dependable Computing for Critical
ject model. However, this has the cost of Applications III (DCCA-3). IFIP Transactions,
in Computer Science, vol. 1107. Springer-Ver- GARF. In Proceedings of the ECOOP ’93
lag, New York. Workshop on Object-Based Distributed Pro-
CAMPBELL, R., ISLAM, N., RAILA, D., AND MADANY, gramming, LNCS 791, Springer-Verlag, 225–
P. 1993. Designing and implementing 239.
Choices: An object-oriented system in C11. GARBINATO, B., GUERRAOUI, R., AND MAZOUNI,
Commun. ACM 36, 9, 117–126. K. R. 1995. Implementation of the GARF
CAMPBELL, R. H. AND HABERMANN, A. N. 1974. Replicated Objects Platform. Distrib. Syst.
The specification of process synchronisation Eng. J. (Feb.), 14 –27.
by path expressions. In Operating Systems, E. GOLDBERG, A. AND ROBSON, D. 1989. Smalltalk-
Gelenbe and C. Kaiser, Eds. 80. The Language. Addison-Wesley, Reading,
CAROMEL, D. 1989. Service, asynchrony and MA.
wait-by-necessity. J. Object-Oriented Pro- GUERRAOUI, R. 1995. Modular atomic objects.
gram. 2, 4. Theor. Pract. Object Syst. 1, 2, 89 –99.
CAROMEL, D. 1990. Concurrency and reusabil- GUERRAOUI, R., CAPOBIANCHI, R., LANUSSE, A., AND
ity: From sequential to parallel. J. Object- ROUX, P. 1992. Nesting actions through
Oriented Program. 3, 3. asynchronous message passing: The ACS pro-
CAROMEL, D. 1993. Towards a method of object- tocol. In Proceedings of the European Confer-
oriented concurrent programming. Commun. ence on Object-Oriented Programming
ACM 36, 9, 90 –102. (ECOOP ’92). Lecture Notes in Computer Sci-
ence, vol. 615. Springer-Verlag, New York,
CAROMEL, D., BELLONCLE, F., AND ROUDIER, Y. 170 –184.
1996. The C11// System. In Parallel Pro-
gramming Using C11, G. V. Wilson and P. GUERRAOUI, R., NIERSTRASZ, O., AND RIVEILL, M.,
EDS. 1994. Proceedings of the ECOOP ’93
Lu, Eds., MIT Press, Cambridge, MA, 257–
296. Workshop on Object-Based Distributed Pro-
gramming. Lecture Notes in Computer Sci-
CHIBA, S. 1995. A metaobject protocol for C11. ence, vol. 791. Springer-Verlag, New York.
In Proceedings of the ACM Conference on Ob-
ject-Oriented Programming Systems, Lan- GUERRAOUI, R., ET AL. 1996. Strategic research
guages and Applications (OOPSLA ’95), Spe- directions in object oriented programming.
cial Issue of SIGPLAN Not. 30, 10 (Oct.), ACM Comput. Surv. 28, 4, 691–700.
285–299. GUNASEELAN, L. AND LEBLANC, R. J. 1992.
FINKE, S., JAHN, P., LANGMACK, O., LÖHR, K.-P., Distributed Eiffel: A language for program-
ming multi-granular distributed objects. In
PIENS, I., AND WOLFF, T. 1993. Distribution
Proceedings of the Fourth International Con-
and inheritance in the HERON approach to
ference on Computer Languages. IEEE Com-
heterogeneous computing. In Proceedings of
puter Science Press, Los Alamitos, Calif.
the Thirteenth International Conference on
Distributed Computing Systems. HALSTEAD, R. H. 1985. Multilisp: A language
for concurrent symbolic computation. ACM
FRØLUND, S. 1992. Inheritance of synchronisa-
Trans. Program. Lang. Syst. 7, 4.
tion constraints in concurrent object-oriented
programming languages. In Proceedings of the JÉZÉQUEL, J.-M. 1993. EPEE: An Eiffel envi-
European Conference on Object-Oriented Pro- ronment to program distributed-memory par-
gramming (ECOOP ’92). Lecture Notes in allel computers. J. Object-Oriented Program.
Computer Science, vol. 615. Springer-Verlag, 6, 2.
New York. JUL, E., LEVY, H. M., HUTCHINSON, N. C., AND
FRØLUND, S. 1996. Coordinating Distributed BLACK, A. P. 1988. Fine-grained mobility in
Objects. MIT Press, Cambridge, MA. the Emerald system. ACM Trans. Comput.
Syst. 6, 1.
GARBINATO, B. AND GUERRAOUI, R. 1997. Using
the strategy design pattern to compose reli- KAFURA, D. G. AND LEE, K. H. 1990. ACT11:
able distributed protocols. In Proceedings of Building a concurrent C11 with actors. J.
the Usenix Conference on Object-Oriented Object-Oriented Program. 3, 1.
Technologies and Systems (COOTS ’97) KALÉ, L. V. AND KRISHNAN, S. 1993. Charm11:
(June), S. Vinoski, Ed., Usenix. A portable concurrent object-oriented system
GARBINATO, B., FELBER, P., AND GUERRAOUI, R. based on C11. In Proceedings of the ACM
1996. Protocol classes for designing reliable Conference on Object-Oriented Systems, Lan-
designing reliable distributed environments. guages and Applications (OOPSLA ’93), ACM
In Proceedings of the European Conference on SIGPLAN Not. 28.
Object Oriented Programming (ECOOP ’96), KARAORMAN, M. AND BRUNO, J. 1993. Intro-
(June) P. Cointe, Ed. Lecture Notes in Com- ducing concurrency to a sequential language.
puter Science, vol. 1098. Springer-Verlag, Commun. ACM 36, 9, 103–116.
New York, 316 –343. KAY, A. 1969. The reactive engine. Ph.D. The-
GARBINATO, B., GUERRAOUI, R., AND MAZOUNI, sis, University of Utah.
K. R. 1994. Distributed programming in KICZALES, G., ED. 1994. Foil for the workshop on
open implementation. Available at http: gramming, G. A. Agha et al., Eds., MIT Press,
//www.parc.xerox.com/PARC/spl/eca/ Cambridge, MA, 107–150.
oi/workshop-94/foil/main.html. MAZOUNI, K., GARBINATO, B., AND GUERRAOUI,
KICZALES, G., DES RIVIÈRES, J., AND BOBROW, D. R. 1995. Building reliable client-server
1991. The Art of the Meta-Object Protocol, software using actively replicated objects. In
MIT Press, Cambridge, MA. Proceedings of TOOLS Europe ’95, Prentice-
LEA, D. 1997. Concurrent Programming in Hall, Englewood Cliffs, NJ, 37–53.
Java. Addison-Wesley, Reading, MA. MCAFFER, J. 1995. Meta-level programming
LEA, R., JACQUEMOT, C., AND PILLEVESSE, E. 1993. with CodA. In Proceedings of the European
COOL: System support for distributed pro- Conference on Object-Oriented Programming
gramming. Commun. ACM 36, 9, 37– 47. (ECOOP ’95). Lecture Notes in Computer Sci-
ence, vol. 952. Springer-Verlag, New York,
LEHRMANN MADSEN, O., MØLLER-PEDERSEN, B., AND 190 –214.
NYGAARD, K. 1993. Object-Oriented Pro-
MCHALE, C. 1994. Synchronisation in concur-
gramming in the BETA Programming Lan-
rent, object-oriented languages: Expressive
guage. Addison-Wesley, Reading, MA.
power, genericity and inheritance. Ph.D. dis-
LIEBERMAN, H. 1987. Concurrent object-ori- sertation. Dept. of Computer Science, Trinity
ented programming in Act 1. In Object-Ori- College, Dublin, Ireland.
ented Concurrent Programming, A. Yonezawa
MEYER, B. 1991. Eiffel: The Language, Pren-
and M. Tokoro, Eds., Computer Systems Se- tice-Hall, Englewood Cliffs, NJ.
ries, MIT Press, Cambridge, MA, 9 –36.
MEYER, B. 1993. Systematic concurrent object-
LISKOV, B. AND SHEIFLER, R. 1983. Guardians oriented programming. Commun. ACM 36, 9,
and actions: Linguistic support for robust, 56 – 80.
distributed programs. ACM Trans. Program.
MOSS, J. E. B. AND KOHLER, W. H. 1987.
Lang. Syst. 5, 3.
Concurrency features for the Trellis/Owl lan-
LÖHR, K.-P. 1992. Concurrency annotations. In guage. In Proceedings of the European Confer-
Proceedings of the ACM Conference on Object- ence on Object-Oriented Programming
Oriented Systems, Languages and Applica- (ECOOP ’87). Lecture Notes in Computer Sci-
tions (OOPSLA ’92), ACM SIGPLAN Not. 27, ence, vol. 276. Springer-Verlag, New York.
10. MOWBRAY, T. J. AND ZAHAVI, R. 1995. The Es-
LÖHR, K.-P. 1993. Concurrency annotations for sential CORBA: System Integration Using
reusable software. Commun. ACM 36, 9, 81– Distributed Objects. John Wiley & Sons and
89. The Object Management Group, New York.
LOPES, C. V. AND LIEBERHERR, K. J. 1994. NICOL, J., WILKES, T., AND MANOLA, F. 1993.
Abstracting process-to-function relations in Object-orientation in heterogeneous distrib-
concurrent object-oriented applications. In uted computing systems. IEEE Comput. 26, 6,
Proceedings of the European Conference on 57– 67.
Object-Oriented Programming (ECOOP ’94). OKAMURA, H. AND ISHIKAWA, Y. 1994. Object lo-
Lecture Notes in Computer Science, vol. 821. cation control using metalevel programming.
Springer-Verlag, New York, 81–99. In Proceedings of the European Conference on
MAES, P. 1987. Concepts and experiments in Object-Oriented Programming (ECOOP ’94).
computational reflection. In Proceedings of Lecture Notes in Computer Science, vol. 821.
the ACM Conference on Object-Oriented Pro- Springer-Verlag, New York, 299 –319.
gramming Systems, Languages and Applica- OMG 1995. The Common Object Request Bro-
tions (OOPSLA ’87), ACM SIGPLAN Not. 22, ker: Architecture and Specification (Revision
12, 147–155. 2.0). Object Management Group, Framing-
MAFFEIS, S. 1995. Run-time support for object- ham, MA.
oriented distributed programming. Ph.D. Dis- OSF 1994. DCE Application Development
sertation, Universität Zürich. Guide (Revision 1.0.2). Open Software Foun-
MASUHARA, H., MATSUOKA, S., ASAI, K., AND YON- dation, Cambridge, MA.
EZAWA, A. 1995. Compiling away the meta- PAPATHOMAS, M. 1989. Concurrency issues in
level in object-oriented concurrent reflective object-oriented programming languages. In
languages using partial evaluation. In Pro- Object-Oriented Development, D. C. Tsichritzis,
ceedings of the ACM Conference on Object- ed. Centre Universitaire d’Informatique, Uni-
Oriented Programming Systems, Languages versité de Genève, Geneva, Switzerland.
and Applications (OOPSLA ’95), ACM SIG- PAPATHOMAS, M. 1995. Concurrency in object-
PLAN Not. 30, 10, 300 –315. oriented programming languages. In Object-
MATSUOKA, S. AND YONEZAWA, A. 1993. Analysis Oriented Software Composition, O. Nierstrasz
of inheritance anomaly in object-oriented con- and D. Tsichritzis, Eds. Prentice-Hall, Engle-
current programming languages. In Research wood Cliffs, NJ, 31– 68.
Directions in Concurrent Object-Oriented Pro- PARRINGTON, G. D. AND SHRIVASTAVA, S. K. 1988.
Implementing concurrency control in reliable (PARLE ’92). Lecture Notes in Computer Sci-
distributed object-oriented systems. In Pro- ence, vol. 605. Springer-Verlag, New York,
ceedings of the European Conference on Ob- 261–275.
ject-Oriented Programming (ECOOP ’88). Lec- TOKORO, M., NIERSTRASZ, O. M., AND WEGNER, P.,
ture Notes in Computer Science, vol. 322. EDS. 1992. Proceedings ECOOP ’91 Work-
Springer-Verlag, New York, 234 –249. shop on Object-Based Concurrent Computing.
ROZIER, M. 1992. Chorus. In Proceedings of the Lecture Notes in Computer Science, vol. 612.
Usenix International Conference on Micro- Springer-Verlag, New York.
Kernels and Other Kernel Architectures, 27– WEGNER, P. 1990. Concepts and paradigms of
28. object-oriented programming. ACM OOPS
SCHILL, A. AND MOCK, M. 1993. DC11: Distrib- Manager 1, 1.
uted object-oriented system support on top of WEIHL, W. 1989. Local atomicity properties:
OSF DCE. Distrib. Syst. Eng. 1, 2, 112–125. Modular concurrency control for abstract data
SCHMID, D. C. 1995. An OO encapsulation of types. ACM Trans. Program. Lang. Syst. 11, 2.
lightweight OS concurrency mechanisms in WILSON, G. V. AND LU, P., EDS. 1996. Parallel
the ACE toolkit. Tech. Rep. TR WUCS-95-31, Programming Using C11. MIT Press, Cam-
Dept. of Computer Science, Washington Uni- bridge, MA.
versity, St. Louis, Mo.
YOKOTE, Y. 1992. The Apertos reflective operat-
SCHRÖDER-PREIKSCHAT, W. 1994. The Logical ing system: The concept and its implementa-
Design of Parallel Operating Systems. Pren- tion. In Proceedings of the ACM Conference on
tice-Hall, Englewood Cliffs, NJ. Object-Oriented Programming Systems, Lan-
SHEFFLER, T. J. 1996. The Amelia vector tem- guages and Applications (OOPSLA ’92). ACM
plate library. In Parallel Programming Using SIGPLAN Not. 27, 10, 414 – 434.
C11, G. V. Wilson and P. Lu, eds. MIT Press, YOKOTE, Y. AND TOKORO, M. 1987. Experience
Cambridge, MA, 43–90. and evolution of Concurrent Smalltalk. In
SKJELLUM, A., LU, Z., BANGALORE, P. V., AND DOSS, Proceedings of the ACM Conference on Object-
N. 1996. MPI11. In Parallel Program- Oriented Programming Systems, Languages
ming Using C11, G. V. Wilson and P. Lu, and Applications (OOPSLA ’87). ACM SIG-
eds. MIT Press, Cambridge, MA, 465–506. PLAN Not. 22, 12.
STROUSTRUP, B. 1993. The C11 Programming YONEZAWA, A. AND TOKORO, M., EDS. 1987.
Language. Addison-Wesley, Reading, MA. Object-Oriented Concurrent Programming.
STURMAN, D. AND AGHA, G. 1994. A protocol de- Computer Systems Series, MIT Press, Cam-
scription language for customizing failure bridge, MA.
semantics. In Proceedings of the Thirteenth YONEZAWA, A., BRIOT, J.-P., AND SHIBAYAMA,
International Symposium on Reliable Distrib- E. 1986. Object-oriented concurrent pro-
uted Systems, 148 –157. gramming in ABCL/1. In Proceedings of the
SUN 1995. C114.1 Library Reference Manual, ACM Conference on Object-Oriented Program-
Section 2. Part No. 802-3045-10, Nov., Sun ming Systems, Languages and Applications
Microsystems, Inc. (OOPSLA ’86). ACM SIGPLAN Not. 21, 11.
THOMAS, L. 1992. Extensibility and reuse of ob- YONEZAWA, A., MATSUOKA, S., YASUGI, M., AND
ject-oriented synchronisation components. In TAURA, K. 1993. Implementing concurrent
Proceedings of the International Conference on object-oriented languages on multicomputers.
Parallel Languages and Environments IEEE Parallel Distrib. Technol. (May).