La programmazione di rete (o network programming) ha assunto
nell'ultimo decennio
un'importanza sempre maggiore grazie alla massiccia diffusione di Internet.
L'eterogeneita' delle reti e dei calcolatori che compongono Internet ha
dato luogo allo
sviluppo di linguaggi di programmazione che consentano di disegnare
applicazione
destinate ad essere eseguite in maniera distribuita su siti
diversi per natura e dislocazione
geografica.
Obiettivi del corso:
Nel corso verra' studiato il linguaggio JAVA RMI (Remote Method
Invocation)
attraverso cui e' possibile sviluppare software di rete,
indipendentemente dai sistemi
operativi utililizzati, e facendo uso di tutte le librerie e
potenzialita' di JAVA.
Molta enfasi verra' dato alla programmazione di sistemi distribuiti client/server, in cui un
server fornisce un servizio a clients che possono trovarsi dislocati su
macchine remote.
Verrano studiati anche esempi di sistemi peer-to-peer, in cui le entita' in
gioco sono tutte
allo stesso livello e tutte abilitate richiedere e/o fornire servizi.
Verranno studiate anche applicazioni conosciute come Agenti Mobili. Tali agenti si
muovono sulla rete passando di server in server alla ricerca di
informazioni e risorse.
Ovviamente lo sviluppo di tali applicazioni distribuite dovra' tener
conto di problemi legati
alla sicurezza, in quanto
nessun server al giorno d'oggi concede l'accesso ad agenti esterni se
non dopo che questi abbiano fornite sufficienti garanzie. Un'altra
problematica che verra'
affrontata a lezione e' quella della portabilita'
dei sistemi sviluppati; sarebbe infatti poco
interessante sviluppare agenti mobili in grado di migrare solo su
determinate macchine.
Attivita' formative:
Il corso e' costituito da 44 ore frontali di cui 18 ore verranno
riservate per le esercitazioni di laboratorio.
Programma del corso:
Il Corso studia la programmazione distribuita in JAVA RMI. Gli
argomenti trattati sono essenzialmente:
- Interfacce remote
- Programmazione client/server RMI/JRMP
- Registri RMI
- Servers UnicastRemoteObject
- Sicurezza e politiche di policy
- Mobilita' di codice
- Server attivabili
- Servizi di naming JNDI
- Servers RMI/IIOP
- Confronto con CORBA.