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.