Client Server Computing
Client Server Computing
LICIA CAPRA
and
WOLFGANG EMMERICH
and
CECILIA MASCOLO
Department of Computer Science
University College London
Recent advances in wireless networking technologies and the growing success of mobile computing
devices, such as laptop computers, third generation mobile phones, personal digital assistants,
watches and the like, are enabling new classes of applications that present challenging problems
to designers. Mobile devices face temporary loss of network connectivity when they move; they
are likely to have scarce resources, such as low battery power, slow CPU speed and little memory;
they are required to react to frequent and unannounced changes in the environment, such as high
variability of network bandwidth, and in the remote resources availability, and so on. To support
designers building mobile applications, research in the field of middleware systems has prolifer-
ated. Middleware aims at facilitating communication and coordination of distributed components,
concealing difficulties raised by mobility from application engineers as much as possible. In this
survey, we examine characteristics of mobile distributed systems and distinguish them from their
fixed counterpart. We introduce a framework and a categorization of the various middleware
systems designed to support mobility, and we present a detailed and comparative review of the
major results reached in this field. An analysis of current trends inside the mobile middleware
community and a discussion of further directions of research conclude the survey.
Address: Dept. of Computer Science, University College London, Gower Street, London WC1E
6BT, UK. E-mail:{L.Capra|W.Emmerich|C.Mascolo}@cs.ucl.ac.uk
Permission to make digital or hard copies of part or all of this work for personal or classroom use is
granted without fee provided that copies are not made or distributed for profit or direct commercial
advantage and that copies show this notice on the first page or initial screen of a display along
with the full citation. Copyrights for components of this work owned by others than ACM must
be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on
servers, to redistribute to lists, or to use any component of this work in other works, requires prior
specific permission and/or a fee. Permissions may be requested from Publications Dept, ACM
Inc., 1515 Broadway, New York, NY 10036 USA, fax +1 (212) 869-0481, or permissions@acm.org.
2 · L. Capra, W. Emmerich and C. Mascolo
1. INTRODUCTION
Wireless devices, such as laptop computers, mobile phones, personal digital assis-
tants, smartcards, watches and the like, are gaining wide popularity. Their com-
puting capabilities are growing quickly, while their size is shrinking, allowing many
of them to be held by hand. These devices can be connected to wireless networks
of increasing bandwidth, and software development kits are available that can be
used by third parties to develop applications [Sun Microsystem, Inc. 2000]. The
combined use of these technologies on personal devices enables people to access
their personal information as well as public resources anytime and anywhere.
Applications on these types of devices, however, present challenging problems to
designers. Devices face temporary and unannounced loss of network connectivity
when they move; they discover other hosts in an ad-hoc manner; they are likely
to have scarce resources, such as low battery power, slow CPU speed and little
memory that need to be exploited efficiently; they are required to react to frequent
changes in the environment, such as new location, transfer to a different device,
high variability of network bandwidth, that will remain by orders of magnitude
lower than in fixed networks.
When developing distributed applications, designers do not have to deal explicitly
with problems related to distribution, such as heterogeneity, scalability, resource
sharing, and the like. Middleware developed upon network operating systems pro-
vides application designers with a higher level of abstraction, hiding the complexity
introduced by distribution. Existing middleware technologies, such as transaction-
oriented, message-oriented or object-oriented middleware [Emmerich 2000b] have
been built adhering to the metaphor of the black box, i.e., distribution is hidden
from both users and software engineers, so that the system appears as a single inte-
grated computing facility. In other words, distribution becomes transparent [ANSA
1989].
These technologies have been designed and are successfully used for stationary
distributed systems built with fixed networks, but they do not appear to be suit-
able for the mobile setting. Firstly, the interaction primitives, such as distributed
transactions, object requests or remote procedure calls, assume a high-bandwidth
connection between components, that is constantly available. In mobile systems,
in contrast, unreachability and low bandwidth are the norm rather than an excep-
tion. Secondly, object-oriented middleware systems, such as CORBA [Pope 1998],
mainly support synchronous point-to-point communication, that requires the client
asking for a service, and the server delivering that service, to be up and running si-
multaneously. However, in a mobile environment, it is often the case that client and
server hosts are not connected at the same time, because of volunteer disconnec-
tions (e.g., to save battery power) or involuntary ones (e.g., no network coverage).
Finally, traditional distributed systems assume a stationary execution environment,
characterized by stable and high bandwidth, fixed location for every hosts, well-
known services, and so on. This view contrasts with the new extremely dynamic
scenarios of mobile systems, where the location of a device changes all the time, and
new services can be discovered dynamically while moving. While it is reasonable,
in stationary systems, to completely hide context information (e.g., location) and
implementation details from the application, in mobile settings it becomes both
Middleware for Mobile Computing · 3
more difficult and makes little sense. By providing transparency, the middleware
must take decisions on behalf of the application. The application, however, can nor-
mally make more efficient and better quality decisions based on application-specific
information.
In order to cope with these limitations, many research efforts have been focused
on designing new middleware systems capable of supporting the requirements im-
posed by mobility. As a result of these efforts, a pool of mobile middleware systems
has been produced. In this survey, we provide a framework and a classification of
the most relevant literature in this area, highlighting goals that have been attained
and goals that still need to be pursued. Our aim is to help middleware practition-
ers and researchers to categorize, compare and evaluate the relative strengths and
limitations of approaches that have been, or might be, applied to this problem.
Because exhaustive coverage of all existing and potential approaches is impossible,
we attempt to identify key characteristics of existing approaches that divide them
into more or less natural categories. This allows classes of middleware systems, not
just instances, to be compared.
Middleware
Hardware
Middleware
Comp_1 ... Comp_l
Network Operating System
Middleware
Network
Hardware
Network Operating System
Host a
Hardware
Host c
This definition of distributed system applies to both fixed and mobile systems.
To understand the many differences existing between the two, we extrapolate three
concepts hidden in the previous definition that greatly influence the type of middle-
ware system adopted: the concept of device, of network connection and of execution
context. These concepts are depicted in Fig. 2.
Distributed System
Type of Device
Fixed
Mobile
Permanent
Intermittent
Static
Dynamic
little memory, low battery power, small screen size, and so on.
Type of Execution Context. With context, we mean everything that can influ-
ence the behaviour of an application; this includes resources internal to the device,
like amount of memory, screen size, etc., and external resources, like bandwidth,
quality of the network connection, location, nearby hosts (or services), and so on.
In a fixed distributed environment, context is more or less static: bandwidth is
high and continuous, location almost never changes, hosts can be added, deleted or
moved, but this happens infrequently as they are big, heavy and expensive. Ser-
vices may change as well, but the discovery of available services is easily performed
by forcing service providers to register with a well-known location service. Context
is extremely dynamic in mobile systems. Hosts may come and leave rapidly, and
the services that are available when we disconnect from the network may not be
there anymore when we reconnect. Service lookup is much more complicated in the
mobile scenario, especially if we lack a fixed infrastructure completely, as we cannot
assume any knowledge about the configuration of the context, and therefore we do
not know the identity of any default server to contact for a service lookup operation.
Location is no longer fixed: the size of wireless devices has shrunk so much that
most of them can be carried in a pocket and moved around easily. Depending on
where we are and if we are moving, bandwidth and quality of the network connec-
tion may vary greatly as well. For example, if our PDA has got both a WaveLan
network card and a GSM module, we may pass from 10Mbs bandwidth when we
are close to a base station (e.g., in a conference room) to 9,600 baud when we are
too far apart from it (e.g., in a car in our way home).
According to the type of device, of network connection and of context that build
6 · L. Capra, W. Emmerich and C. Mascolo
A
B
Ad-hoc mobile (or simply ad-hoc) distributed systems consist of a set of mobile
hosts, connected to the network intermittently through high-variable quality links,
and executing in an extremely dynamic environment. They differ from traditional
distributed systems in that there is no fixed infrastructure: mobile hosts can isolate
themselves completely and may evolve independently, opportunistically forming
clusters depicted as clouds in Fig. 4. Communication is symmetric but not transitive
as it depends on distance; for instance, host A can be connected to host B which
is also connected to host C, however host A and C may not be connected to each
other. Mobile network technologies, such as Bluetooth [Bray and Sturman 2000],
facilitate these complicated configurations with multiple so called piconets whose
integration forms scatternets.
However, the non-functional requirements discussed for traditional distributed
systems still hold. For example, scalability is once again an issue as network band-
width is shared among the hosts in the same cell, and this number is increasing
rapidly thanks to the lowering of the prices of hand-held devices, making them acces-
sible to a broader user community. As for heterogeneity, while stationary computers
stay connected to a single network, mobile devices encounter more heterogeneous
connections, as they leave the range of one network transceiver and switch to an-
other. Also the problem of fault tolerance seems now to be more severe: while
network failures can be considered exceptions in a traditional distributed system,
wireless communication is very susceptible to disconnections, to the extreme that
they can be considered the “normal” way of operating. The same can be said
for resource sharing: as it is so easy to connect to a wireless link (“anytime, any-
where”), the security of a wireless communication can be compromised much more
easily than fixed communication, especially if the transmission encompasses a large
area, so that security measures do need to be included in the design of any mobile
computing applications.
As the physical infrastructure has changed, the middleware solutions envisioned
for traditional distributed systems cannot be successfully adopted in the mobile
setting to achieve the above mentioned requirements, as we will discuss in Sec-
tion 5. Ad-hoc networks represent the latest trend in distributed computing and
8 · L. Capra, W. Emmerich and C. Mascolo
researchers, both in academia and in industry, are putting a lot of efforts in try-
ing to define new middleware models for this scenario. We will discuss the most
successful paradigms and some practical solutions in Section 6.
Application
Presentation
Session
Transport
Network
Data link
Physical
Sun Java/RMI [Pitt and McNiff 2001], or message-oriented technologies like IBM
MQSeries [Redbooks 1999]. Although very successful in fixed environments, these
systems do not appear to be suitable in a mobile setting, given the different re-
quirements that they entail. We will discuss this issue in more details in Section 5.
Researchers have been and are actively working to design middleware targeted to
the mobile setting, and many different solutions have been investigated recently.
In order to classify, discuss and compare middleware developed to date, and un-
derstand their suitability in a mobile setting, we introduce the reference model
depicted in Fig. 7.
Middleware
Heavy-weight
Light-weight
Synchronous
Asynchronous
Transparency
Awareness
ware. In the previous scenario, for example, it would be the application layer to
choose which replica to contact in the non-congestioned portion of the network.
can transparently decide on which hosts to create replicas of data and where
to redirect requests to access that data in case a network failure inhibits direct
access to the master copy, in a completely transparent manner. Hiding context
information inside the middleware eases the burden of application programmers
that do not have to deal with the achievement of non-functional requirements
(e.g., fault tolerance) explicitly, concentrating, instead, on the real problems of
the application they are building.
DB_3
PDA 2
DB_1
Shop Database
Home PC
DB_2 PDA 1
Fig. 8 illustrates our case study. Two main parties are involved: the shop, with
its branches represented by the distributed database, and a set of customers, repre-
sented by PCs and mobile devices. We assume that each branch stores its product
catalogue in its local database and makes it accessible to its customers for consulta-
tion at any time. As a possible set of customers we consider a couple, owning a PDA
each and sharing a home PC. The couple does its weekly shopping electronically:
they use the PC when they are at home and their PDAs while roaming around town.
running on the PC to request data from the shop DB each time an access to a cate-
gory or to a product in the catalogue is needed, using for example ADSL [Summers
1999], this is not affordable in case of a PDA or a mobile phone, due to the high
costs and low quality of the network connection. Even for a PC, going through
the wire frequently decreases the quality of the service significantly, as a result of
network latency.
In order to deal with this problem, the most frequently adopted solution is to
replicate the product catalogue locally and update it whenever prices or the port-
folio of the shop change. Even in this situation, PCs and PDAs exhibit rather
different characteristics: while a PC generally has a large amount of disk space
that supports replication of the entire product catalogue, the PDA has a limited
amount of memory, which inhibits replicating the full catalogue. Each time the
mobile client application tries to access a product that has not been replicated lo-
cally, a request must be sent through the network to the PC or directly to a branch
database, in order to gain access to it. To avoid performance degradation, we do
not want to use these low quality links frequently, as they can be as slow as 9,600
baud for GSM. Moreover, we would like to be able to continue working even when
we are disconnected. It is therefore necessary to ‘prefetch’ the data the client wants
to access. The question about which information should be replicated becomes then
very important.
The replication policies adopted so far by many middleware systems include,
among the others, LRU (Least Recently Used) data and MFU (Most Frequently
Used) data: in all cases, it is the middleware that decides which information to
replicate. If replication is transparent, the client application has no way to influ-
ence this choice, even though the application is the only one to know what it needs
to access. Instead of letting the middleware guess what the client is going to need,
middleware has to support replication awareness, that is, the application must be
able to instruct the middleware on what it has to ‘copy’ locally and what it can
instead access remotely (‘link’). This decision depends on both context informa-
tion (e.g., amount of available memory) and on application-specific knowledge. We
therefore need a middleware system that supports context-awareness and allows
applications to dynamically adapt the middleware to environmental changes.
Intermittent Connection. Apart from the product catalogue, the application pro-
vides the abstraction of a shopping basket that is kept on the PC and is replicated
on each PDA. We cannot expect a middleware to keep the different replicas synchro-
nized at all times, as it happens in fixed environment, because in a mobile setting
it will be often the case for the two PDAs to be connected at different times and in
different locations, as a result of opportunistic and intermittent connections typical
of these devices. Middleware must therefore allow the couple to do its weekly shop-
ping independently of each other and synchronize the shopping basket only from
time to time, or directly at the end of the week before submitting an order to the
shop, when the devices are in reach and can communicate either with their infrared
ports or through the PC.
Intermittent connection, and therefore asynchronous communication, opens how-
ever a new problem: as we want to submit a unique joint order, we need to reconcile
the different (possibly conflicting) versions that the two family members have on
Middleware for Mobile Computing · 15
their PDAs. This is not a trivial problem. Having two different shopping baskets
does not necessary mean having conflicts to resolve (e.g., the parties may order
products in different categories). Even when a conflict exists, there is no obvious
way to solve it. We do not want the application designers to manually program
the reconciliation task, as this is a general service necessary to a large set of mobile
applications. Instead, mobile middleware systems should enable the application to
drive and tune the reconciliation service provided by the middleware itself, using
application-specific knowledge the middleware does not have.
Dynamic context. Once the shopping basket has been successfully reconciled,
we may want to submit the order to the shop. This can be done from the PC at
home, using a reliable and high bandwidth connection, or from a PDA while moving
around, experiencing high variability in the quality of the network connection. The
submission of the order is a critical operation and different protocols can be used
for this purpose, for instance, two-phase commit or three-phase commit; while the
second is the safest, it is also the heaviest. The middleware cannot opt for one
protocol instead of the other transparently, by simply testing the condition of the
network, as this decision strictly depends on the non-functional requirements of the
application (e.g., reliability, performance, etc.).
Finally, while moving, it may happen that we want to submit an order and collect
the products purchased within short time directly from a particular branch of the
shop we know we will visit along the way. In the presence of physical mobility,
the nearby shops cannot be statically computed but need to be determined at the
time the user sends the order. We therefore need to make the application aware
of its location, locate the shop, and then send the order there. In other words,
the application needs to know its own physical location as well as the one of the
component (the branch) providing the service it is looking for.
As a result of executing in a dynamic environment, middleware for mobile com-
puting applications needs to disclose information about the execution context, mak-
ing applications aware of what is happening around.
The question that naturally arises now is whether a lightweight middleware that
supports asynchronous communication, discloses contextual information to appli-
cations, and allows dynamic adaptation to changes exists. In the following two
sections we review the solutions developed to date, highlighting their strengths and
limitations.
1 Other categories can be identified, like middleware for scientific computing, but we omit their
discussion here because they are only loosely related to the mobile setting.
16 · L. Capra, W. Emmerich and C. Mascolo
The classification of middleware for fixed distributed systems in the three cat-
egories (i.e., object-oriented, message-oriented and transaction-oriented) discussed
above is actually not rigid. There is in fact a trend of merging these categories
together, as shown by the CORBA Object Transaction Service, a convergence of
object-oriented and transaction-oriented middleware, or by the CORBA Event Ser-
vice and the publish/subscribe communication à la CCM, a union of object-oriented
and message-oriented middleware. This combination however leads to more com-
plex and heavyweight middleware that makes it even less suitable for mobile sys-
tems.
tation. Initially, the use of reflection was restricted to the field of programming
language design [Kiczales et al. 1991]; some years later, reflection has been ap-
plied to the field of operating systems [Yokote 1992] and, more recently, distributed
systems [McAffer 1996].
Examples of middleware built around the principle of reflection include, but are
not limited to, OpenORB [ExoLab 2001], OpenCorba [Ledoux 1999], dynamic-
TAO [Kon et al. 2000], Blair et al. work [Blair et al. 1998], MULTE-ORB [Plage-
mann et al. 1999], Flexinet [Hanssen and Eliassen 1999], Globe [van Steen et al.
1999; Bakker et al. 1999].
The role of reflection in distributed systems has to do with the introduction of
more openness and flexibility into middleware platforms. In standard middleware,
the complexity introduced through distribution is handled by means of abstraction.
Implementations details are hidden from both users and application designers and
encapsulated inside the middleware itself. Although having proved to be successful
in building traditional distributed systems, this approach suffers from severe limi-
tations when applied to the mobile setting. Hiding implementation details means
that all the complexity is managed internally by the middleware layer; middleware
is in charge of taking decisions on behalf of the application, without letting the
application influence this choice. This may lead to computationally heavy middle-
ware systems, characterized by large amounts of code and data they use in order to
transparently deal with any kind of problems and find the solution that guarantees
the best quality of service to the application. Heavyweight systems cannot however
run efficiently on a mobile device as it cannot afford such a computational load.
Moreover, in a mobile setting it is neither always possible, nor desirable, to hide
all the implementation details from the user. The fundamental problem is that by
hiding implementation details the middleware has to take decisions on behalf of the
application; the application may, however, have vital information that could lead
to more efficient or suitable decisions. Both these limitations can be overcome by
reflection. A reflective system may bring modifications to itself by means of inspec-
tion and/or adaptation. Through inspection, the internal behaviour of a system is
exposed, so that it becomes straightforward to insert additional behaviour to mon-
itor the middleware implementation. Through adaptation, the internal behaviour
of a system can be dynamically changed, by modification of existing features or by
adding new ones. This means that a middleware core with only a minimal set of
functionalities can be installed on a mobile device, and then it is the application
which is in charge of monitoring and adapting the behaviour of the middleware
according to its own needs.
The possibilities opened by this approach are remarkable: light-weight middle-
ware can be built that support context awareness. Context information can be
kept by middleware in its internal data structures and, through reflective mech-
anisms, applications can acquire information about their execution context and
tune the middleware behaviour accordingly. No specific communication paradigm
is related to the principle of reflection, so this issue is left unspecified and depends
on the specific middleware system built. Despite the many possibilities opened by
reflection, this principle has been mainly used to create reflective extensions of the
Object Request Broker (ORB) of CORBA, therefore supporting only a synchronous
form of communication between components. Moreover, these systems are still too
Middleware for Mobile Computing · 19
class level
instance of
class A class change
and adaptation of the underlying software. Their approach is based on the marriage
of reflection and components.
According to their reflective architecture, every interface (and not every object
which can have multiple interfaces) has a set of meta-spaces associated. Each meta-
space is structured as three distinct accessible meta-space models, covering encapsu-
lation, composition and environment (see Fig. 10). The encapsulation meta-model
provides access to the set of methods and attributes of the particular interface. The
composition meta-model provides access to the constituent objects of the object it-
self. The environment meta-model finally provides access to the execution environ-
ment. The problem of maintaining integrity is minimized, as every object/interface
has its own meta-space, so that changes to a meta-space can only affect a single ob-
ject. Moreover, the metaspaces are highly structured, again minimizing the scope
for changes.
Composition Environment
Meta-Space
Encapsulation
Object
The fundamental idea behind the design of Globe is the new concept of dis-
tributed shared object. Instead of viewing a distributed object as an entity running
on a single machine, possibly with replicas residing on other machines, Globe views
a distributed shared object (DSO) as a conceptual object, distributed over multi-
ple machines, with its local representatives (proxies and replicas) cooperating to
provide a single (consistent) image (see Fig. 11). This view of a distributed shared
object adds flexibility with respect to replication, caching and distribution of the
object’s state. In particular, the local representatives of an object take care of the
replication and distribution of the DSO’s state. The way the state of the object
is replicated can now be governed completely by object- and application-specific
requirements.
Distributed
Object
Host1 Host2
Network
Local
Representative
Host3 Host4
6.2.1 Lime.
In Lime [Picco et al. 1999], the shift from a fixed context to a dynamically changing
one is accomplished by breaking up the Linda tuple space into many tuple spaces,
each permanently associated to a mobile unit, and by introducing rules for transient
sharing of the individual tuple spaces based on connectivity.
As shown in Fig. 12, each mobile unit has access to an interface tuple space (ITS)
that is permanently and exclusively attached to that unit and transferred along with
it when movement occurs. Each ITS contains tuples that the unit wishes to share
with others and it represents the only context accessible to the unit when it is
alone. Access to the ITS takes place using conventional Linda primitives, whose
semantics is basically unaffected. However, the content of the ITS (i.e., the set of
tuples that can be accessed through the ITS) is dynamically recomputed in such a
way that it looks like the result of the merging of the ITSs of other mobile units
currently connected. Upon arrival of a new mobile unit, the content perceived by
each mobile unit through its ITS is recomputed taking the content of the new mobile
Middleware for Mobile Computing · 23
Mobile Units
unit into account. This operation is called engagement of tuple spaces; the opposite
operation, performed on departure of a mobile unit, is called disengagement. The
tuple space that can be accessed through the ITS of a mobile unit is therefore
shared by construction and transient because its content changes according to the
movement of mobile units.
The term mobile unit can be understood either as mobile agent or as mobile host.
In the first case, the context is logical mobility, in the second one, physical mobility.
The Lime notion of transiently shared tuple space is applicable to a generic mobile
unit, regardless of its nature, as long as a notion of connectivity ruling engagement
and disengagement is properly defined.
Lime fosters a style of coordination that reduces the details of mobility and dis-
tribution to changes to what is perceived as the local tuple space. This powerful
view simplifies application design in many scenarios, relieving the designer from
explicitly maintaining a view of the context consistent with changes in the config-
uration of the system. As previously stated, however, this may be too restrictive
in domains where higher degrees of context awareness are needed, for example to
control the portion of context that has to be accessed.
Lime tries to cope with this problem, first by extending Linda operations with
tuple location parameters that allow to operate on different projections of the tran-
siently shared tuple space. Secondly, information about the system configuration is
made available through a read-only transiently shared tuple space called LimeSys-
tem, containing details about the mobile components present in the community and
their relationship; finally, reactions can be set on the tuple space, to enable actions
to be taken in response to a change in the configuration of the system.
Although enabling some form of context inspection, adaptation of middleware
behaviour is still not supported.
6.2.2 TSpaces.
TSpaces [Wyckoff et al. 1998] is an IBM middleware system whose goal is to support
communication, computation and data management on hand-held devices. TSpaces
is the marriage of tuplespace and database technologies, implemented in JavaTM .
The tuplespace component provides a flexible communication model; the database
component adds stability, durability, advanced query capabilities and extensive data
storage capacity; JavaTM adds instant portability.
The TSpaces design distinguishes between clients and servers. A tuple space
exists only on a TSpaces server, while a server may host several spaces. Once a
24 · L. Capra, W. Emmerich and C. Mascolo
TSpaces client
TSpaces server
read(p)
TSpaces client
answer p
TSpace1
write(r) p
q TSpaces client
r take(q)
answer q
tuple space has been created, a TSpaces client is allowed to perform operations, like
read and write, on it. A TSpaces server is a centralized server that listens to client
requests: each time a client issues an operation, information is sent to the server
that, using a lookup operation, finds out the tuplespace on which the operation
needs to be performed and passes the operation and tuple operand to it to process
(see Fig. 13).
There are two particular server systems tuple spaces: Galaxy, that contains tuples
describing each tuple space that exists on a server; and Admin, that contains access
control permissions for each tuplespace and whose goal is to check whether the issuer
of each operation has the proper access control privileges.
TSpaces is different from other tuple space based systems for the following rea-
sons: first, the behaviour of the middleware is dynamically modifiable. New oper-
ators can be defined, and new datatypes and operators can be introduced. Second,
TSpaces employs a real data management layer, with functionalities similar to re-
lational database systems. Operations are performed in a transactional context
that ensures the integrity of data. Support for indexing and query capability is
provided. Data (i.e., tuples stored in the database) and operations that act on data
are kept separated, so that operations can be added or changed without affecting
the database.
This system suffers from severe limitations when applied to an ad-hoc setting.
There is a clear distinction between TSpaces clients and servers: while the first can
be hand-held devices, the second requires higher computing capabilities and more
resources, as they are the ones that store tuple spaces persistently and execute
transactional operations on them. Moreover, as a result of sudden disconnections,
information is no longer available to clients, as all tuples are retained by servers.
This is an example of middleware that suits well a nomadic setting but fails to
succeed in an ad-hoc one.
6.2.3 JavaSpaces.
guishes itself from Linda to many extents: tuples are typed as objects in the Java
programming language, so they may have methods (i.e., behaviour) associated with
them. Not only tuples but also fields are objects, so that any Java class can be
communicated as a tuple and be made persistent. Transactions are provided for
tuple spaces integrity.
As discussed for TSpaces, there is a sharp distinction between clients and servers.
The client side has a small footprint, as it is designed to run on devices with scarce
resources (e.g., limited local memory). The server side is supposed to be resource-
richer and it may run a relational or object-oriented database to achieve persistence
of tuple spaces. This means once again that JavaSpaces is better suited for a no-
madic environment than for an ad-hoc one.
The architecture of the Nexus infrastructure is depicted in Fig. 15. As the picture
shows, there are four different components working together.
The User Interface support is running on the mobile device carried by the user and
contains basic functionality, which is required by Nexus Clients to interact with the
Nexus platform, and to display and navigate through the model. It also provides
Middleware for Mobile Computing · 27
1
Nexus
Clients/ User Interface 3 Communication
Applications
Outdoor Indoor
support for adapting to devices with different levels of computing power, different
amounts of memory, different levels of network connection or different displays.
The interior of a Nexus platform is then split into three main elements: commu-
nication, distributed data management and sensors.
Sensors: Nexus applications run both in outdoor and indoor areas. It would be
difficult to use only one sensor for positioning in both environments (e.g., GPS can
be used outdoor but not indoor, as its satellite signals are blocked by buildings).
Therefore, a multi-sensor tool is needed, based on different positioning systems.
Communication: To access information, mobile devices need to be able to connect
to the information source, e.g. the Internet, using wireless communication. For a
wide area network, data services of mobile telephone systems, such as GSM or
UMTS, can be used. Inside a building, wireless LAN, such as Bluetooth, can
be used instead. The Nexus communication layer acts as a broker to bridge the
differences between existing heterogeneous networks.
Distributed data management. According to the demands of different location
aware applications, spatial data have to be offered in multiple representations.
Hence, appropriate algorithms to deduce all the necessary levels of detail have
to be implemented into the platform. In order to guarantee the interoperability,
relationships between different models must be defined and data formats must be
exchangeable. All these different aspects concerning the management of data within
Nexus are managed by the Distributed data Management component.
As previously stated, this infrastructure supports only location-awareness. Other
elements of the environment, such as bandwidth, battery power, and so on, should
be taken into account to develop a full context-aware model.
the mechanisms they provide to detect and resolve conflicts that naturally arise in
mobile systems. Despite a proliferation of different, proprietary data synchroniza-
tion protocols for mobile devices, we still lack a single synchronization standard, as
most of these protocols are implemented only on a subset of devices and are able
to access a small set of networked data. This represents a limitation for both end
users, application developers, service providers and device manufacturers.
Another major problem is discovery of services. In a dynamic and mobile en-
vironment, hosts come and leave rapidly, and services there were available before
disconnecting from the network may not be there any longer when reconnecting.
Jini [Arnold et al. 1999] is an architecture that allows groups of devices and soft-
ware components to federate into a single, dynamic distributed system, enabling
dynamic discovery of services inside the network federation.
We now discuss the main characteristics of the above mentioned systems.
Odissey
Web warden
Viceroy
Application
Upcalls
Interceptor
Middleware
Server
Client
machine Storage
boundaries System Application
write/read Bayou API
anti-entropy
Server
Server
Client
Storage
Application Storage System
write/ System
Bayou API
read
disconnected workgroups. Bayou allows arbitrary read and write operations to any
replica without the need for explicit coordination with other replicas: every com-
puter eventually receives updates from every other, either directly or indirectly,
through a chain of peer-ware interactions. Weakly consistent replicated data is not
transparent to applications; instead, they are aware that they may read weakly
consistent data and that their write operations may conflict with those of other
users and applications. Moreover, applications are involved in the detection and
resolution of conflicts since these naturally depend on the semantics of the applica-
tion. In particular, the system provides the application with a means for specifying
its own notion of a conflict, along with its policy for resolving it. In return, the
system implements the mechanisms for reliably detecting conflicts, as specified by
the application, and for automatically resolving them when possible.
Automatic detection is achieved through a mechanism called dependency check:
every write operation is accompanied by a dependency check that consists of a
query and its expected result. A conflict is detected if the query, when run at a
server against its current copy of the data, does not return the expected result.
This dependency check is therefore a pre-condition for performing the update. If
the check fails, then the requested update is not performed and the server invokes
a procedure to resolve the detected conflict. Once a conflict has been detected, a
merge procedure is run by the Bayou server in an attempt to resolve it. Merge pro-
cedures are provided by application programmers in the form of templates that are
then filled in with the details of each write. Users do not have to know about them,
except when automatic conflict resolution cannot be done and manual resolution is
needed.
Bayou guarantees that all the servers will move towards eventual consistency.
This means that all the servers will eventually receive all the write operations
(through a process called anti-entropy), although the system cannot enforce bounds
on write propagation delays since these depend on network connectivity factors that
are outside Bayou’s control. Eventual consistency is guaranteed by two factors:
writes are performed in the same well-defined order on all the servers, and detection
and resolution procedures are deterministic so that servers resolve the same conflict
in the same way.
Middleware for Mobile Computing · 31
Unlike previous systems like Coda, that promote transparency of conflict detec-
tion and resolution, Bayou exploits application knowledge for dependency checks
and merge procedures. Moreover, while Coda locks complete file volumes when
conflicts have been detected but not yet resolved, Bayou allows replicas to always
remain accessible. This permits clients to continue to read previously written data
and to issue new writes, but it may lead to cascading conflict resolution if the newly
issued operations depend on data that are in conflict.
One of the major drawbacks of Bayou is its client-sever architecture. Although
in principle client and server may co-exist on a host (see Fig. 17), in practice the
system requires that each data collection is replicated in full on a number of servers.
This is, of course, unaffordable for hand-held devices that can therefore play only
the role of clients in this architecture. Bayou is therefore most suited for nomadic
rather than ad-hoc applications.
6.4.3 xmiddle.
xmiddle allows mobile hosts to share data when they are connected, or replicate
the data and perform operations on them off-line when they are disconnected;
reconciliation of data takes place once the hosts reconnect.
Unlike tuple-space based systems (see Section 6.2), which store data in flat un-
structured tuples, xmiddle allows each device to store its data in a tree structure.
Trees allow sophisticated manipulations due to the different node levels, hierarchy
among the nodes, and the relationships among the different elements which could
be defined.
When hosts get in touch with each other, they need to be able to interact.
xmiddle allows communication through sharing of trees. On each device, a set
of possible access points for the private tree is defined; they essentially address
branches of the tree that can be modified and read by peers. The size of these
branches can vary from a single node to a complete tree; unlike systems such as
Coda and Odyssey (see Section 6.4.1), where entire collections of files have to be
replicated, the unit of replication can therefore be easily tuned to accommodate
different needs. For example, replication of a full tree can be performed on a
laptop, but only of a small branch on a PDA, as the memory capabilities of these
devices differ greatly.
In order to share data, a host needs to explicitly link to another host’s tree. The
concept of linking to a tree is similar to the mounting of network file systems in
distributed operating systems to access and update information on a remote disk.
Figure 18 shows the general structure of xmiddle and the way hosts get in touch
and interact. As long as two hosts are connected, they can share and modify the
information on each other’s linked data trees. When disconnections occurs, both
explicit (e.g., to save battery power or to perform changes in isolation from other
hosts) and implicit (e.g., due to movement of a host into an out of reach area), the
disconnected hosts retain replicas of the trees they were sharing while connected,
and continue to be able to access and modify the data.
When the two hosts reconnect, the two different, possibly conflicting, replicas
need to be reconciled. xmiddle exploits the tree differencing techniques developed
in [Tai 1979] to detect differences between the replicas which hosts use to con-
currently and off-line modify the shared data. However, it may happen that the
32 · L. Capra, W. Emmerich and C. Mascolo
HostA
HostC
HostB
a.
HostA
HostC
HostB b.
Fig. 18. a. Host HB and Host HC are not connected. b. Host HB and Host HC connect and Host
HB receives a copy of the tree that it has linked from Host HC .
reconciliation task cannot be completed by the xmiddle layer alone, because, for
example, different updates have been performed on the same node of the tree. In
order to solve these conflicts, xmiddle enables the mobile application engineer to
associate application-specific conflict resolution policies to each node of the tree.
Whenever a conflict is detected, the reconciliation process finds out which policy
the application wants the middleware to apply, in order to successfully complete
the merging procedure.
At the moment, xmiddle is implemented using the eXtended Markup Language
(XML) [Bray et al. 1998] and related technologies. In particular, application data
are stored in XML documents, which can be semantically associated to trees. Re-
lated technologies, such as the Document Object Model (DOM) [Apparao et al.
1998], XPath [Clark and DeRose 1999] and XLink [Maler and DeRose 1998], are
then exploited to manipulate nodes, address branches, and manage references be-
tween different parts of an XML document. Reconciliation policies are specified as
part of the XML Schema [Fallside 2000] definition of the data structures that are
handled by xmiddle itself.
xmiddle moves a step forward other middleware systems which focus on the
problem of disconnected operations. In particular, unlike Coda and Odyssey, the
unit of replication can be easily tuned, in order to accommodate different applica-
tion and device needs. This issue may play a key role in mobile scenarios, where
devices have limited amount of memory and the quality of the network connection is
often poor and/or expensive. Moreover, xmiddle addresses pure ad-hoc networks
and not only nomadic ones, as no assumption is made about the existence of more
powerful and trusted hosts which should play the role of servers and on which a
collection of data should be replicated in full.
Although representing a good starting point for developing middleware for mobile
computing, at present xmiddle suffers from some limitations that require further
investigation: the communication paradigm (i.e., sharing of trees) provided is too
poor and needs to be improved in order to model more complex interactions that
can occur in mobile settings; moreover, no attention is given to the issue of context
awareness.
Middleware for Mobile Computing · 33
6.4.4 Jini.
Jini [Arnold et al. 1999] is a distributed system middleware based on the idea of
federating groups of users and resources required by those users. Its main goal is to
turn the network into a flexible, easily administered tool on which resources (both
hardware devices and software programs) and services can be found, added and
deleted by humans and computational clients.
The most important concept within the Jini architecture is the service. A service
is an entity that can be used by a person, a program or another service. Members
of a Jini system federate in order to share access to services. Services can be found
and resolved using a lookup service that maps interfaces indicating the functionality
provided by a service to sets of objects that implement that service. The lookup
service acts as the central marketplace for offering and finding services by members
of the federation. A service is added to a lookup service by a pair of protocols called
discovery and join: the new service provider locates an appropriate lookup service
by using the first protocol, and then it joins it, using the second one (see Fig. 19).
A distributed security model is put in place in order to give access to resources only
to authorized users.
Lookup Service
Service Object
Service Attributes
1) Discovery
Jini assumes the existence of a fixed infrastructure which provides mechanisms for
devices, services and users to join and detach from a network in an easy and natural,
often automatic, manner. It relies on the existence of a network of reasonable speed
connecting Jini technology-enabled devices that have some memory and processing
power. As a result, Jini systems can support the development of nomadic, rather
than ad-hoc, distributed systems.
Consulting the product catalogue. This operation requires part of the catalogue
to be replicated on the portable devices, in order to allow users to access informa-
tion even when they are disconnected from the network. Two questions need an
answer: from whom we replicate data, and which portion of data we copy locally.
In a mobile setting, hosts (and services) come and leave rapidly; we need therefore
a mechanism to discover which hosts are around and which services (e.g., which
data) they export. Jini (see Section 6.4.4) provides this lookup service, but this
would only work in a nomadic scenario. In an ad-hoc setting we cannot rely on any
fixed infrastructure: hosts must be able to reconfigure their own connection groups
while they move, through connections and disconnections with the other hosts. As
for the second question, it should be the application (or, better, the user), and not
the middleware, who chooses which portion of the catalogue to replicate locally,
as previously stated; there must be a mechanism that allows users to influence the
middleware behaviour. The Globe system (see Section 6.1.3) allows application de-
signers to specify different replication policies tailored to the user’s need. Not only
Globe, but any reflective system can be used to allow applications to dynamically
choose the policy that middleware has to apply to achieve the replication task as,
by definition, reflection allows dynamic adaptation of the middleware behaviour.
However, Globe, as all the other reflective systems discussed, is too heavyweight
to run on a mobile device as it would cause unbearable performance degradation.
Odyssey and Bayou could be used as well, but only in a nomadic scenario, because
of the limitations discussed in Section 6.4.1 and 6.4.2, in particular, their client-
server architectures.
Determining an order. This operation can be split into two parts: filling in an
order and then submitting it to the shop. Filling in an order requires: support for
disconnected operations, as it is often the case that different members of the family
are not connected at the same time and in the same place (i.e., they are not in
reach); and support for synchronization of conflicting shopping baskets. This, in
particular, is a process that should be application-driven as we can only determine
at the application level whether there are conflicts and how to solve them. Reflec-
tive middleware solutions discussed in Section 6.1 cannot be successfully applied
as they all provide a synchronous communication paradigm; tuple-space based sys-
tems (see Section 6.2), appear to be more appropriate. These systems support the
exploitation of the opportunistic and intermittent connection typical of hand-held
devices, and of disconnected operations in a very natural manner. However, they
fail in providing a proper means to achieve data reconciliation. Tuple spaces are
multi-sets, which means that every tuple can be duplicated in the space. When-
ever two or more devices, which replicate a piece of data (represented as a tuple),
disconnect and modify it, the reconciliation process of rejoining the tuple spaces
during reconnection becomes an unnatural operation (due to the multi-set prop-
erty of tuple spaces). Moreover, it would be extremely difficult to add to flat and
unstructured tuples the level of semantics required to implement application-driven
reconciliation policies. Richer data structured are needed to achieve this goal. Once
the shopping basket has been successfully reconciled, an order needs to be submit-
ted. This requires knowledge of the context of execution, in particular, location,
to decide to which branch of the shop to ship the order. Different systems that
Middleware for Mobile Computing · 35
support location awareness exist (see Section 6.3); however, location is not the only
contextual information we need to be aware: bandwidth and quality of the network
connection are also necessary in order, for instance, to choose the right protocol to
use to submit the order. To our knowledge, no middleware system developed to
date supports such a comprehensive form of context awareness.
9. SUMMARY
The growing success of mobile computing devices and networking technologies, such
as WaveLan [Held 2000] and Bluetooth [Bray and Sturman 2000], have called for the
investigation of new middleware that deal with mobile computing challenges, such
as sudden disconnections, scarce resource availability, fast changing environment,
etc. During the last years, research has been active in the field of middleware,
and a considerable number of new systems has been designed to support this new
computational paradigm.
In this survey we have presented a reference model to classify distributed systems
into traditional, nomadic and ad-hoc ones. We have highlighted their similarities
and mainly their differences. Another model has been illustrated, to point out the
characteristics that a middleware for mobile computing should have. This model
has been helpful to demonstrate the unsuitability of traditional middleware systems
in a mobile setting, as the principles that have driven their design run counter to
the new requirements imposed by mobility.
Three main classes of middleware for mobile computing (i.e., reflective middle-
ware, tuplespace-based middleware and context-aware middleware) have been iden-
tified, illustrated and comparatively discussed; details of some real solutions have
been shown as well. Although addressing some of the issues related to mobility,
none of these systems succeed in providing support for all the requirements high-
lighted by our framework. Around these three main categories, another pool of
systems has been built, mainly to support the development of specific classes of
applications; ad-hoc solutions have been developed that cannot however be re-used
in other scenarios.
A real application has helped us highlighting what can be achieved using these
systems but also the extents in which they fail to support the development of mobile
applications. Many issues requires further investigations and there are groups of
researchers that are already working to find a solutions to these open questions.
ACKNOWLEDGMENTS
The authors would like to thank Zuhlke Engineering (UK) Ltd. for supporting
Licia Capra; Stefanos Zacharias Zachariadis for having provided insights in the
use of reflection in mobile computing middleware, and for the implementation of
xmiddle; Steve Hailes for his helpful comments on our research agenda.
Middleware for Mobile Computing · 37
REFERENCES
Alternis S.A. Solutions for Location Data Mediation. http://www.alternis.fr/.
ANSA. 1989. The Advanced Network Systems Architecture (ANSA). Reference manual,
Architecture Project Management, Castle Hill, Cambridge, UK.
Apparao, V., Byrne, S., Champion, M., Isaacs, S., Jacobs, I., Hors, A. L., Nicol, G.,
Robie, J., Sutor, R., Wilson, C., and Wood, L. 1998. Document Object Model
(DOM) Level 1 Specification. W3C Recommendation http://www.w3.org/TR/1998/REC-
DOM-Level-1-19981001 (Oct.), World Wide Web Consortium.
Arnold, K., O’Sullivan, B., Scheifler, R. W., Waldo, J., and Wollrath, A. 1999.
The Jini[tm] Specification. Addison-Wesley.
Asthana, A. and Krzyzanowski, M. C. P. 1994. An indoor wireless system for personal-
ized shopping assistence. In Proceedings of IEEE Workshop on Mobile Computing Systems
and Applications (Santa Cruz, California, Dec. 1994), pp. 69–74. IEEE Computer Society
Press.
Baker, S. 1997. Corba Distributed Objects : Using Orbix. Addison-Wesley.
Bakker, A., van steen, M., and Tanenbaum, A. 1999. From Remote Objects to Phys-
ically Distributed Objects. In Proc. 7th IEEE Workshop on Future Trends of Distributed
Computing Systems (Cape Town, South Africa, Dec. 1999), pp. 47–52.
Bennett, F., Richardson, T., and Harter, A. 1994. Teleporting - making applications
mobile. In Proc. of the IEEE Workshop on Mobile Computing Systems and Applications
(Santa Cruz, California, Dec. 1994), pp. 82–84. IEEE Computer Society Press.
Blair, G., Coulson, G., Robin, P., and Papathomas, M. 1998. An Architecture for
Next Generation Middleware. In Proceedings of Middleware ’98 (Sept. 1998), pp. 191–206.
Springer Verlag.
Bray, J. and Sturman, C. F. 2000. Bluetooth: Connect Without Cables. Prentice Hall.
Bray, T., Paoli, J., and Sperberg-McQueen, C. M. 1998. Extensible Markup Language.
Recommendation http://www.w3.org/TR/1998/REC-xml-19980210 (March), World Wide
Web Consortium.
Brown, P. 1998. Triggering information by context. Personal Technologies 2, 1 (March),
1–9.
Capra, L., Emmerich, W., and Mascolo, C. 2001a. Middleware for Mobile Computing:
Awareness vs. Transparency (Position Summary). In Proceedings of the 8th Workshop on
Hot Topics in Operating Systems (HotOS-VIII) (Schloss Elmau, Germany, May 2001), pp.
142.
Capra, L., Emmerich, W., and Mascolo, C. 2001b. Reflective Middleware Solutions for
Context-Aware Applications. In Proceedings of REFLECTION 2001. The Third Interna-
tional Conference on Metalevel Architectures and Separation of Crosscutting Concerns
(Kyoto, Japan, Sept. 2001). To appear.
CellPoint, Inc. 2000. The CellPoint System. http://www.cellpt.com/thetechnology2.htm.
Clark, J. and DeRose, S. 1999. XML Path Language (XPath). Technical Report
http://www.w3.org/TR/xpath (Nov.), World Wide Web Consortium.
Demers, A., Petersen, K., Spreitzer, M., Terry, D., Theimer, M., and welch, B. 1994.
The Bayou Architecture: Support for Data Sharing among Mobile Users. In Proceedings of
the IEEE Workshop on Mobile Computing Systems and Applications (Santa Cruz, Cali-
fornia, Dec. 1994), pp. 2–7.
Dey, A., Futakawa, M., Salber, D., and Abowd, G. 1999. The Conference Assistant:
Combining Context-Awareness with Wearable Computing. In Proc. of the 3rd International
Symposium on wearable Computers (ISWC ’99) (San Franfisco, California, Oct. 1999), pp.
21–28. IEEE Computer Society Press.
Eliassen, F., Andersen, A., Blair, G. S., Costa, F., Coulson, G., Goebel, V., Hansen,
O., Kristensen, T., Plagemann, T., Rafaelsen, H. O., Saikoski, K. B., and Yu,
W. 1999. Next Generation Middleware: Requirements, Architecture and Prototypes.
In Proceedings of the 7th IEEE Workshop on Future Trends in Distributed Computing
Systems (Dec. 1999), pp. 60–65. IEEE Computer Society Press.
38 · L. Capra, W. Emmerich and C. Mascolo
Picco, G., Murphy, A., and Roman, G.-C. 1999. Lime: Linda meets Mobility. In Proc.
21st Int. Conf. on Software Engineering (ICSE-99) (May 1999), pp. 368–377. ACM Press.
Pitt, E. and McNiff, K. 2001. Java.rmi : The Remote Method Invocation Guide. Addison
Wesley.
Plagemann, T., Eliassen, F., Goebel, V., Kristensen, T., and Rafaelsen, H. 1999.
Adaptive QoS Aware Binding of Persistent Objects. In Proceedings of International Sym-
posium on Distributed Objects and Applications (DOA’99) (Edinburgh, Scotland, Sept.
1999). IEEE Computer Society Press.
Pope, A. 1998. The Corba Reference Guide : Understanding the Common Object Request
Broker Architecture. Addison-Wesley.
Redbooks, I. 1999. MQSeries Version 5.1 Administration and Programming Examples.
IBM Corporation.
Rogerson, D. 1997. Inside COM. Microsoft Press.
Roman, G.-C., Murphy, A. L., and Picco, G. P. 2000. Software Engineering for Mobil-
ity: A Roadmap. In The Future of Software Engineering - 22nd Int. Conf. on Software
Engineering (ICSE2000) (May 2000), pp. 243–258. ACM Press.
Satyanarayanan, M. 1996. Mobile Information Access. IEEE Personal Communica-
tions 3, 1 (Feb.), 26–33.
Satyanarayanan, M., Kistler, J., Kumar, P., Okasaki, M., Siegel, E., and Steere, D.
1990. Coda: A Highly Available File System for a Distributed Workstation Environment.
IEEE Transactions on Computers 39, 4 (April), 447–459.
Schilit, B., Adams, N., and Want, R. 1994. Context-Aware Computing Applications. In
Proc. of the Workshop on Mobile Computing Systems and Applications (Santa Cruz, CA,
Dec. 1994), pp. 85–90.
SignalSoft. 2000. Wireless Location services. http://www.signalsoftcorp.com/.
Smith, B. 1982. Reflection and Semantics in a Procedural Programming Langage. Phd
thesis (Jan.), MIT.
Stevens, W. R. 1997. UNIX Network Programming. Prentice Hall.
Summers, C. 1999. ADSL. CRC Press.
Sun Microsystem, Inc. 2000. CLDC and the K Virtual Machine (KVM).
http://java.sun.com/products/cldc/.
Sun Microsystems, Inc. 2001. Jxta Initiative. http://www.jxta.org/.
Tai, K. 1979. The Tree-to-Tree Correction Problem. Journal of the ACM 29, 3, 422–433.
Terry, D., Theimer, M., Petersen, K., Demers, A., Spreitzer, M., and Hauser, C. 1995.
Managing Update Conflicts in Bayou, a Weakly Connected Replicated Storage System. In
Proceedings of the 15th ACM Symposium on Operating Systems Principles (SOSP-15)
(Cooper Mountain, Colorado, Aug. 1995), pp. 172–183.
van Steen, M., Hauck, F., Homburg, P., and Tanenbaum, A. 1999. Globe: a Wide-Area
Distributed System. IEEE Concurrency 7, 1 (March), 70–78.
Waldo, J. 1998. Javaspaces specification 1.0. Technical report (March), Sun Microsystems.
Wyckoff, P., McLaughry, S. W., Lehman, T. J., and Ford, D. A. 1998. T Spaces. IBM
Systems Journal 37, 3, 454–474.
Yokote, Y. 1992. The Apertos reflective operating system: The concept and its implemen-
tation. In Proceedings of OOPSLA’92 (1992), pp. 414–434. ACM Press.