Network Aware Programming:
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:
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.
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.