A coordination language for mobile components
Abstract In this paper we present the sigmapi coordination language, a core language for specifying dynamic networks of components. The language is inspired by the Manifold coordination language and by the pi-calculus. The main concepts of the language are components, classes, objects and channels. A program in sigmapi consists of a number of components, where each component is a collection of classes separable from its original context and re-usable in any other context. An object is an instance of a class that executes in parallel with the other objects active in the system. The sigmapi language differs from other models of object-oriented systems mainly in its treatment of communication and mobility: communication is anonymous via synchronous or asynchronous channels, while mobility is obtained by moving channels in the virtual space of linked objects. Thus, a channel is a transferable capability of communication, and objects are mobile in the sense that their communication possibilities may change during a computation. The language sigmapi itself does not impose exogenous coordination, meaning that the coordination primitives affecting each object can be executed within the computation of the object itself. However, only simple restrictions on the class-definitions of a sigmapi program suffice to enforce a separation between computation and coordination. Interaction typically occurs anonymously and under the full control of the objects involved. This make it easier to deal with Internet application where security policies must be enforced in view of the possibilities of attacks.