The technologies, architectures, and methodologies traditionally used
to develop distributed applications exhibit a variety of limitations a
nd drawbacks when applied to large scale distributed settings (e.g., t
he Internet). In particular, they fail in providing the desired degree
of configurability, scalability, and customizability. To address thes
e issues, researchers are investigating a variety of innovative approa
ches. The most promising and intriguing ones are those based on the ab
ility of moving code across the nodes of a network, exploiting the not
ion of mobile code. As an emerging research field, code mobility is ge
nerating a growing body of scientific literature and industrial develo
pments. Nevertheless, the field is still characterized by the lack of
a sound and comprehensive body of concepts and terms. As a consequence
, it is rather difficult to understand, assess, and compare the existi
ng approaches. In turn, this limits our ability to fully exploit them
in practice, and to further promote the research work on mobile code.
Indeed, a significant symptom of this situation is the lack of a commo
nly accepted and sound definition of the term ''mobile code'' itself.
This paper presents a conceptual framework for understanding code mobi
lity. The framework is centered around a classification that introduce
s three dimensions: technologies, design paradigms, and applications.
The contribution of the paper is two-fold. First, it provides a set of
terms and concepts to understand and compare the approaches based on
the notion of mobile code. Second, it introduces criteria and guidelin
es that support the developer in the identification of the classes of
applications that can leverage off of mobile code, in the design of th
ese applications, and, finally, in the selection of the most appropria
te implementation technologies. The presentation of the classification
is intertwined with a review of state-of-the-art in the field. Finall
y, the use of the classification is exemplified in a case study.