Rocco De Nicola1, GianLuigi Ferrari2, Rosario
Pugliese1,
1 Dipartimento di Sistemi e Informatica, Universita' di
Firenze
2 Dipartimento di Informatica, Universita' di Pisa
Abstract
We investigate the issue of designing a kernel programming language
for Mobile Computing and describe Klaim, a language that
supports a programming paradigm where processes, like data, can be
moved from one computing environment to another. The language consists
of a core Linda with multiple tuple spaces and of a set of operators
for building processes. Klaim naturally supports programming with explicit
localities. Localities are first-class data (they can be manipulated like
any other data), but the language provides coordination mechanisms to control
the interaction protocols among located processes. The formal operational
semantics is useful for discussing the design of the language and provides
guidelines for implementations. Klaim is equipped with a type system that
statically checks access rights violations of mobile agents. Types are
used to describe the intentions (read, write, execute, etc.) of processes
in relation to the various localities. The type system is used to determine
the operations that processes want to perform at each locality, and to
check whether they comply with the declared intentions and whether they
have the necessary rights to perform the intended operations at the specific
localities. Via a series of examples, we show that many mobile code programming
paradigms can be naturally implemented in our kernel language. We also
present a prototype implementation of Klaim in Java.