Progetto e realizzazione di un linguaggio di programmazione per codice mobile


Candidato: Lorenzo Bettini

Relatore: Prof. Rocco De Nicola

Controrelatore: Prof. Pierluigi Crescenzi 


In questa tesi viene presentato X-Klaim, un linguaggio di programmazione per applicazioni distribuite con codice mobile. Con codice mobile si intende del software in grado di viaggiare su una rete eterogenea, e che pu essere eseguito sul sito di destinazione. Il linguaggio X-Klaim (eXtended-Klaim) un'estensione del kernel language Klaim, (Kernel Language for Agents Interactions and Mobility) che a sua volta estende Linda, un linguaggio di coordinamento per processi concorrenti; la comunicazione fra processi in Linda avviene tramite il tuple space, uno spazio di memoria condiviso. Un tuple space una collezione di tuple, ed una tupla una sequenza di campi istanziati (campi attuali) e campi da istanziare (campi formali). Per selezionare le tuple di un tuple space si utilizza il meccanismo del pattern matching: due tuple soddisfano il matching se hanno lo stesso numero di campi ed ogni campo soddisfa il matching col campo corrispondente (i due campi devono essere dello stesso tipo; due campi attuali devono essere uguali, cio avere lo stesso valore, mentre un campo formale soddisfa sempre il matching con un altro campo dello stesso tipo). Dopo il matching i campi formali, diventeranno attuali, avendo lo stesso valore dei campi corrispettivi della tupla con cui stato effettuato il matching. Linda si rivela insufficiente per applicazioni distribuite, in quanto tutte le tuple vengono mischiate in un unico tuple space.

Klaim gestisce spazi delle tuple multipli distribuiti, contenuti nei nodi della rete, a cui si pu accedere specificandone la localit. Si distingue fra localit fisiche (gli indirizzi effettivi dei nodi all'interno della rete) e localit logiche (nomi simbolici per riferirsi ai nodi). Le localit logiche vengono tradotte nelle effettive localit fisiche tramite gli ambienti di valutazione, adottando lo scoping statico (sfruttando cio l'ambiente del nodo mittente) o lo scoping dinamico (sfruttando l'ambiente del nodo destinatario). In Klaim possibile spedire agenti mobili su siti remoti, ed effettuare operazioni su tuple space remoti. X-Klaim aggiunge a Klaim le caratteristiche dei linguaggi di programmazione procedurali, che rendono la programmazione pi semplice, ma non aggiunge potenza espressiva. La semantica di X-Klaim stata data per traduzione in Klaim, e quindi quello che pu essere programmato in X-Klaim pu essere programmato anche in Klaim, ma con molte pi operazioni.

I classici linguaggi di programmazione si rivelano spesso non adatti alle applicazioni distribuite con codice mobile, in quanto quest'ultime richiedono nuovi paradigmi di programmazione. Java mette a disposizione molte caratteristiche per la scrittura di applicazioni distribuite, essendo indipendente dall'architettura ed offrendo molte classi per la programmazione in rete. Ed infatti stato utilizzato Java per realizzare l'infrastruttura per le primitive di Klaim: questa consiste di una libreria di classi, Klava (Klaim in Java), contenuta appunto nel package omonimo.

Un programma X-Klaim viene tradotto, tramite il compilatore xklaim (implementato coi tool lex e yacc), in un programma Java, che utilizza tale package. X-Klaim un linguaggio ad un livello pi alto rispetto a Java per le applicazioni distribuite, mettendo a disposizione a livello di sintassi le primitive per l'accesso agli spazi delle tuple distribuiti e alla gestione di agenti mobili; inoltre essendo un linguaggio Pascal-like molto semplice non richiede nozioni di programmazione ad oggetti, richieste invece per programmare in Java. Si pu comunque ricorrere a Java (a Klava) quando si ha la necessit di personalizzare la gestione delle operazioni sui tuple space, derivando dalle classi del pacchetto Klava e ridefinendo opportuni metodi, secondo la filosofia della programmazione ad oggetti. Ovviamente, poich i programmi scritti in X-Klaim saranno poi tradotti in Java, si ha la totale integrazione fra i due linguaggi. Il linguaggio X-Klaim rimane comunque indipendente dal linguaggio target, cio in questo caso da Java.

X-Klaim permette inoltre di gestire i time out (che sono stati aggiunti a Klaim in questa tesi); questo necessario nelle applicazioni distribuite per evitare di rimanere bloccati per troppo tempo, o per sempre, in attesa di tuple non presenti, oppure per la lentezza delle comunicazioni in rete. Si ha la possibilit di gestire una condizione di time out, eseguendo azioni alternative.

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.