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.