La programmazione di rete (o network programming) ha assunto nell'ultimo decennio un'importanza sempre
maggiore grazie all'avvento 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 in profondita' il linguaggio  JAVA RMI (che sta per Remote Method Invocation)
in cui il programmatore puo' sviluppare software di rete indipendentemente dai sistemi
operativi utililizzati sottostanti, e facendo  uso di tutte le librerie e potenzialita' di JAVA.

Tipica applicazione distribuita che verranno studiate sono quelle client/server in cui un server fornisce un
servizio a clients che possonotrovarsi dislocati su macchine anche molto lontane. Un'altra modalita' di interazione
distribuita che verra' vista nel corso e' quella detta peer-to-peer in cui le entita' sono tutte allo stesso livello e
tutte abilitate richiedere e/o fornire servizi. Di particolare interesse sono le applicazioni conosciute come Agenti Mobili.
Tali agenti si muovono sulla retepassando di server in server e cercando le informazioni necessarie da riportare indietro
nei siti di origine.

Ovviamente lo sviluppo di tali applicazioni distribuite da' luogo all'insorgere 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'altro problema importante e' quella della portabilita' poiche' sarebbe certamente poco
interessante sviluppare agenti mobili che possono muoversi solo su determinate macchine. Entrambe le problematiche
verranno approfondite nel corso.

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.