Network Aware Programming: 
Objects, Languages, Implementations

Project Description
Sites
Themes
Papers
Events
News

Project Coordinator: 

Prof. Rocco De Nicola
Dipartimento di Sistemi e Informatica
Universita' degli Studi di Firenze

News:

How to submit bib files;

Site Coordinators:

Prof. Rocco De Nicola, Firenze;
Prof. Gian Luigi Ferrari, Pisa;
Prof. Paola Giannini, Piemonte Orientale;
Prof. Cosimo Laneve, Bologna;
Prof. Eugenio Moggi, Genova.  

Project Overview

The resources and services available to users over wireless or wide-area network often change according to bandwidth and location. Applications for these new types of networks are different from traditional distributed applications not only for scalability, heterogeneity, and autonomy, but specifically for the ability of dealing with dynamic and unpredictable changes of their network environment. We aim at identifying and implementing high level linguistic abstractions for network aware programming. These abstractions should relieve the programmer from the burden of explicitly dealing with low-level events, but still provide him with enough control to manage the distribution and use of resources, the structure of the components, the quality of service and the security issues. For these linguistic abstractions, we aim also at devising proper foundational models that can be used both to reason about system properties and to evaluate language implementations. Our research will be cast in two main areas:

Programming languages for network aware programming;
Models and calculi for mobility.

The research in these two areas should ultimately lead to the definition of a comprehensive semantic framework that encompasses languages, methods, patterns and implementations supporting the development of network-aware applications and the certification of their properties. In the project, we shall concentrate on a number of specific issues that will help us in achieving our main goal. We shall thus investigate the introduction of new linguistic constructs for mobility and network awareness and for quality of services programming. We shall study models and constructs that permit the coordination of mobile components, the dynamic negotiation of services and resources, the monitoring of resource usage, and the dynamic reconfiguration and run-time code generation. On the foundational side we shall investigate type theories, process calculi and models of concurrent objects with classes. On the implementation side, we will deliver prototype implementations of network-aware programming languages and define virtual machines and techniques for optimized compilations. We also plan to experiment with the proposed constructs on non-trivial network applications.
To reach these objectives we shall structure our project around five different themes that will be under the responsability of the chief investigators of the five sites involved in the project:

  1. Design and experiments with network aware languages - Rocco De Nicola (Firenze)
  2. Coordination and resource monitoring - Gianluigi Ferrari (Pisa)
  3. Dynamic configuration and assembly of components - Eugenio Moggi (Genova)
  4. Types and calculi for distributed programming - Paola Giannini (Piemonte Orientale)
  5. Virtual machines and prototype implemention - Cosimo Laneve (Bologna)

We shall work both on new experimental languages and on well-established languages, with the aim of extending them with new constructs and new semantic models that make them more amenable to network aware programming. In particular, we shall study possible extensions for KLAIM, a kernel developed by the groups at Firenze and Pisa. We shall also study extensions of the Join calculus, defined with the contribution of the group in Bologna. We shall also investigate the impact on well established languages like Java or C# of the modular approaches developed at Torino and Genova. The foundational expertise of the groups will guide and help us in assessing all the linguistic proposals. The type expertise of the group in Torino will be instrumental for adding type discipline to the languages and for understanding non classical use of types, e.g. for controlling access rights or security properties. The experience of the group in Bologna will be very useful for the prototype implementations and for the definition of abstract machines.