Organizzazione della lezione. Lezione 16 Remote Method Invocation - 4. Modello Client Server. Le classi di Archivio Client-Server

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Organizzazione della lezione. Lezione 16 Remote Method Invocation - 4. Modello Client Server. Le classi di Archivio Client-Server"

Transcript

1 Organizzazione della lezione Lezione 16 Remote Method Invocation - 4 Vittorio Scarano Corso di Programmazione Distribuita ( ) Laurea di I livello in Informatica Università degli Studi di Salerno Alcuni esempi di applicazioni distribuite: una agenda telefonica distribuita (client-server) una chat (client-server) Alcuni commenti sul ruolo del registry una chat (peer-to-peer) 2 Modello Client Server Le classi di Archivio Client-Server Modello più comune Il Client effettua una richiesta Es.: invocazione remota Il server invia la risposta Es.: risultato della invocazione Un esempio di applicazione una agenda telefonica ogni client può: registrare un numero telefonico richiedere la lista di tutti i numeri inseriti client client request response server 3 4

2 Server.java Le classi di Archivio Client-Server import java.util.*; public interface Server extends java.rmi.remote { public void registra (RecordAgenda r) public ArrayList dammiagenda () Import Interfaccia remota Due metodi remoti inserisce il record passato nella lista lettura completa della Agenda 5 6 RecordAgenda.java Le classi di Archivio Client-Server public class RecordAgenda implements java.io.serializable { public RecordAgenda(String n, String t, String i){ nome = n; telefono = t; inseritoda = i; public String getnome() {return nome; public String gettelefono() {return telefono; public String getinseritoda() {return inseritoda; private String nome; private String telefono; private String inseritoda; Serializzabile deve essere trasmessa come parametro Costruttore Metodi di accesso Variabili istanza 7 8

3 ServerImpl.java (1) ServerImpl.java (2) import java.rmi.server.*; import java.util.*; import java.io.*; public class ServerImpl extends UnicastRemoteObject implements Server { public ServerImpl() throws java.rmi.remoteexception { public static void main(string args[]) { System.setSecurityManager( new RMISecurityManager()); ServerImpl obj = new ServerImpl(); Naming.rebind("AgendaServer", obj); System.out.println("Pronto.."); catch (Exception e) { // end main Continua Import di vario uso Oggetto remoto che implementa la interface Server Security Manager registrazione sul registry 9 public void registra (RecordAgenda r) throws RemoteException{ agenda.add(r); System.out.println ("Inserito record:"+ r.getnome()+ " Num.: "+ r.gettelefono()+ " Inserito da: "+ r.getinseritoda()); public ArrayList dammiagenda () throws RemoteException{ return agenda; private ArrayList agenda = new ArrayList(); Metodi remoti aggiunge ad agenda stampa a video restituisce l ArrayList Variabile istanza con inizializzazione 10 Le classi di Archivio Client-Server ClientAgenda.java (1) 11 import java.rmi.server.*; import java.util.*; import java.io.*; public class ClientAgenda { public static void main(string args[]) { Server serverref = null; if (args.length > 0 ) nickname = args[0]; else {System.out.println ( Dare il nickname"); System.exit(1); System.setSecurityManager( new RMISecurityManager()); serverref = (Server) Naming.lookup ( "rmi://"+host+"/agendaserver"); catch (Exception e) { // continua Import di vario uso lettura del nickname con errore se non c è Security Manager ricerca del server su registry 12

4 ClientAgenda.java (2) ClientAgenda.java (3) // sempre nel main.. la shell BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String cmd; System.out.println ("Benvenuto "+nickname); for (;;) { System.out.print(PROMPT); cmd = in.readline(); if (cmd.equals ("close")) { break; else if (cmd.equals("inserisci")) { System.out.print ("Nome: "); String nome = in.readline(); System.out.print ("Telefono: "); String telefono = in.readline(); RecordAgenda r = new RecordAgenda( nome, telefono, nickname); serverref.registra(r); else if (cmd.equals("lista")) { La shell di comandi del client Comandi: close/inserisci/lista apertura stream Uscita Inserimento lettura parametri invocazione metodo remoto sul server 13 // sempre nel main.. e nel for else if (cmd.equals("lista")) { ArrayList a = serverref.dammiagenda(); for (int i = 0; i < a.size(); i++) { RecordAgenda rec=(recordagenda)a.get(i); System.out.println (rec.getnome()+ " "+ r.gettelefono()+" (inserito da "+ rec.getinseritoda()+")"); else System.out.println ("UH?"); // fine for catch (Exception e) { System.exit(0); // fine main static String nickname; public static final String HOST= localhost"; public static final String PROMPT="Comandi >"; Lista dei record inseriti invocazione remota stampa di tutti i record Comando non compreso Variabile di istanza Costante di uso 14 Alcuni commenti Il call-back In questa applicazione, il ruolo del client e del server sono rigidamente fissati il client chiede (invoca) ed il server dà (restituisce) Non sempre questo è possibile in applicazioni più evolute (anche di poco), il client deve essere contattato dal server se non altro, per favorire la consapevolezza (awareness) dell utente sul comportamento degli altri ad esempio, vorremmo informare un utente su chi è connesso in questo momento Necessario il call-back 15 Meccanismo mediante il quale il client chiede al server di essere richiamato (call-back) Una altra motivazione (oltre alla consapevolezza) chiamate asincrone per la la richiesta di un servizio pesante computazionalmente il client richiede un servizio e chiede di essere richiamato quando i risultati sono disponibili Implementazione con Invocazioni Remote il client (dotato di interface remota) passa il proprio riferimento remoto al server che lo usa per contattarlo I ruoli di client e server non vengono scambiati non è un peer-to-peer 16

5 Organizzazione della lezione Una applicazione client-server evoluta Alcuni esempi di applicazioni distribuite: Una chat classica ma semplice (IRC dei poveri) una agenda telefonica distribuita (client-server) una chat (client-server) Alcuni commenti sul ruolo del registry una chat (peer-to-peer) Il server riceve da ogni client la iscrizione/abbandono della chat manda a tutti i client quello che ognuno dice (broadcast) La necessità del call-back implicita nella applicazione: il server deve poter informare ogni client di quanto digitato da un client ma anche necessaria per permettere ad ogni utente di avere la informazione su chi è iscritto alla chat Le classi di Chat Client-Server Server.java Import 19 public interface Server extends java.rmi.remote { public void dico (Messaggio m) public void iscrivi (Remote idref) public void abbandona (Remote idref) Interfaccia remota Tre metodi remoti chiamato da un client se deve scrivere a tutti iscrizione alla chat per abbandonare Notare il passaggio del riferimento remoto necessario per il callback 20

6 Le classi di Chat Client-Server Chat.java public interface Chat extends java.rmi.remote { public void dico (Messaggio m) public void iscrivi (String nickiscritto) public void abbandona (String nickabbandona) public String getnickname () Interfaccia remota Quattro metodi remoti chiamato dal server per il broadcast di messaggi consapevolezza della iscrizione/abbondono alla chat di un utente utilità per uso da parte del server (non fondamentale) Metodi chiamati solo dal server Le classi di Chat Client-Server Messaggio.java public class Messaggio implements java.io.serializable{ private String mittente; private String testo; public Messaggio(String mit, String tes) { mittente = mit; testo = tes; public String getmittente() { return mittente; public String gettesto() { return testo; I dati spediti come parametri ai metodi necessario serializzarli Variabili istanza Costruttore Metodi di accesso 23 24

7 Le classi di Chat Client-Server ServerImpl.java (1) 25 import java.rmi.server.*; import java.util.*; import java.io.*; public class ServerImpl extends UnicastRemoteObject implements Server { public ServerImpl() throws java.rmi.remoteexception { public static void main(string args[]) { System.setSecurityManager( new RMISecurityManager()); ServerImpl obj = new ServerImpl(); Naming.rebind("ChatServer", obj); System.out.println("Pronto "); catch (Exception e) { // end main Continua Import di vario uso Oggetto remoto che implementa la interface Server Security Manager registrazione sul registry 26 ServerImpl.java (2) ServerImpl.java (3) public void iscrivi (Remote idref) String nomeclientiscritto = ((Chat) idref).getnickname(); System.out.println ("\nentra "+ nomeclientiscritto+"."); // Notifica a tutti i client presenti for (int i = 0; i < clientrefs.size(); i++) { Chat unclient = ((Chat) clientrefs.get(i)); unclient.iscrivi(nomeclientiscritto) ; clientrefs.add(idref); // continua Metodo si preleva il nickname si notifica a tutti i client in lista notare che il client appena iscritto non è ancora nella lista aggiunta alla lista di client connessi si usa il riferimento remoto public void abbandona (Remote idref) int indice = clientrefs.indexof(idref); Object app = clientrefs.remove(indice); String nomeclientabbandona = ((Chat) idref).getnickname(); System.out.println ("\n"+ nomeclientabbandona + " ha abbandonato la chat."); // Invio la notifica a tutti i client for (int i = 0; i < clientrefs.size(); i++) { Chat unclient = ((Chat) clientrefs.get(i)); unclient.abbandona(nomeclientabbandona); Metodo speculare a iscrivi cancellazione preleva l indice nell ArrayList a cui è memorizzato il client lo cancella notifica come per 27 28

8 ServerImpl.java (4) Le classi di Chat Client-Server public void dico (Messaggio m) for (int i = 0; i < clientrefs.size(); i++) { Chat unclient = ((Chat) clientrefs.get(i)); // invio a tutti tranne che al mittente if (! (m.getmittente().equals( unclient.getnickname()))) unclient.dico(m) ; static ArrayList clientrefs = new ArrayList(); Metodo per ogni client se non è il mittente del messaggio invia il messaggio al client Variabile istanza per i client contiene i riferimenti remoti dei client inizializzazione ChatImpl.java (1) ChatImpl.java (2) import java.rmi.server.*; import java.util.*; import java.io.*; public class ChatImpl extends UnicastRemoteObject implements Chat { public ChatImpl() throws java.rmi.remoteexception { public static void main(string args[]) { ChatImpl myself = null; Server serverref = null; if (args.length > 0 ) nickname = args[0]; else{ System.out.println ( Serve nickname"); System.exit(1); System.setSecurityManager( new RMISecurityManager()); Import di vario uso lettura del nickname con errore se non c è Security Manager serverref = (Server) Naming.lookup ( "rmi://"+host+"/chatserver"); myself = new ChatImpl(); serverref.iscrivi (myself); catch (Exception e) { // Shell BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String cmd; System.out.println ("Benvenuto "+nickname); // continua Ricerca del server Registrazione sul server della chat Preparazione per la shell stream di input string adi benvenuto // continua 31 32

9 ChatImpl.java (3) ChatImpl.java (4) for (;;) { System.out.print(PROMPT); cmd = in.readline(); if (cmd.equals ("close")) { serverref.abbandona (myself); break; else { // messaggio per tutti if (cmd.length()!=0) {// stringa non vuota Messaggio m = new Messaggio (nickname, cmd); serverref.dico(m); // fine for catch (Exception e) { System.exit(0); // fine main // continua Loop della shell se si abbandona informa il server altrimenti si tratta di un messaggio per il server (per tutti) costruzione messaggio invio al server che si occuperà di farne il broadcast 33 public void dico (Messaggio m) System.out.print ("\n"+m.getmittente()+": "+ m.gettesto()+"\n"+prompt); public void iscrivi (String nickiscritto) throws RemoteException{ System.out.print ("\nentra "+nickiscritto+"."+ "\n"+prompt); // continua Metodi remoti di uso principalmente per la consapevolezza degli altri utenti e per l output stampa a video (mittente e testi) e poi ristampa il prompt stampa a video e ristampa il prompt 34 ChatImpl.java (5) Organizzazione della lezione public void abbandona (String nickabbandona) System.out.print ("\n"+nickabbandona+ " ha abbandonato la chat"+"\n"+prompt); public String getnickname () return nickname; static String nickname; public static final String HOST= localhost"; public static final String PROMPT = "Comandi >"; Altri metodi remoti stampa a video e ristampa il prompt metodo di accesso Variabile di istanza Costanti di uso Alcuni esempi di applicazioni distribuite: una agenda telefonica distribuita (client-server) una chat (client-server) Alcuni commenti sul ruolo del registry una chat (peer-to-peer) 35 36

10 Commenti sulla architettura della Chat La architettura della Chat P2P La architettura Client-Server della Chat offre un singolo punto di debolezza (il server) non risponde alla struttura del problema in effetti, ogni client deve poter inviare a ciascun altro client serve solamente poter sapere chi sono i client registrati Possibile passare ad una architettura Peer-to-peer dove l unica componente centralizzata è il registry che deve necessariamente essere presente (comunque) anche sulla architettura client-server Ogni peer trasmette i messaggi a tutti gli altri peer Si usa il registry per avere informazioni su chi è registrato alla chat application coordination code application coordination code application coordination code Il ruolo del registry nelle applicazioni P2P Le classi di Chat P2P Per ogni applicazioni peer-to-peer è comunque sempre necessario una componente che permetta il bootstrap: locazione fissata per poter contattare gli altri peer Nel caso di RMI si può usare il registry tramite il metodo list() è possibile sapere tutti gli id (stringhe) degli oggetti remoti registrati a partire da cui si può ottenere il riferimento remoto che può essere usato per contattare gli oggetti (discriminando, se è il caso, rispetto alle interface implementate) se sul registry stanno in esecuzione diverse applicazioni distribuite 39 40

11 Chat.java Le classi di Chat P2P public interface Chat extends java.rmi.remote { public void dico (Messaggio m) public void iscrivi (String id) public void abbandona (Remote idref) public String getnickname () Interfaccia remota Quattro metodi remoti chiamato da un altro peer per scrivere un messaggio inserimento o cancellazione nella lista dei peers che ognuno ha utilità per uso da parte degli altri peers (non fondamentale) Messaggio.java Le classi di Chat P2P public class Messaggio implements java.io.serializable{ private String mittente; private String testo; public Messaggio(String mit, String tes) { mittente = mit; testo = tes; public String getmittente() { return mittente; public String gettesto() { return testo; Identica al programma precedente I dati spediti come parametri ai metodi necessario serializzarli Variabili istanza Costruttore Metodi di accesso 43 44

12 ChatImpl.java (1) ChatImpl.java (2) import java.rmi.server.*; import java.util.*; import java.io.*; public class ChatImpl extends UnicastRemoteObject implements Chat { public ChatImpl() throws java.rmi.remoteexception { public static void main(string args[]) { Chat myself = null; if (args.length > 0 ) nickname = args[0]; else { System.out.println ( Serve il nickname"); System.exit(1); System.setSecurityManager( new RMISecurityManager()); // continua. Import di vario uso lettura del nickname con errore se non c è Security Manager 45 // Fase di Registrazione nel main String nomi[] = Naming.list("rmi://"+HOST); System.out.println ( Sono connessi "+nomi.length+" utenti:"); for (int i=0 ; i < nomi.length; i++) System.out.println ("\t"+nomi[i]); for (int i=0 ; i < nomi.length; i++) peers.add(naming.lookup (nomi[i])); myself = new ChatImpl(); Naming.rebind(nickname, myself); System.out.println ( Informo tutti :"); for (int i=0 ; i < nomi.length; i++) { System.out.print ("\tiscrizione a "+ (Chat) peers.get (i)).getnickname()+"..") ; ((Chat) peers.get (i)).iscrivi (nickname) ; System.out.println ("effettuata!"); catch (Exception e) { // continua Ottiene l elenco del nome dei peer connessi dal registry li stampa Costruisce l arraylist dei riferimenti remoti connessi Si registra sul registry Si iscrive presso ogni peer invocazione remota di iscrivi() 46 ChatImpl.java (3) ChatImpl.java (4) // Shell nel main BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String cmd; System.out.println ("Benvenuto "+nickname+ ". Con te sono presenti "+ peers.size()+" utenti:"); for (int i = 0; i < peers.size(); i++) System.out.println ("\t"+ ((Chat) peers.get(i)).getnickname() ); for (;;) {System.out.print(PROMPT); cmd = in.readline(); if (cmd.equals ("close")) { for (int i = 0; i < peers.size(); i++) ((Chat) peers.get(i)).abbandona(myself); break; else { // continua Apertura stream input Stampa degli utenti connessi Loop della shell se si esce, comunico a tutti i peers il mio Riferimento remoto uso la variabile myself 47 else { // si tratta di un messaggio da inviare a tutti if (cmd.length()!=0) { // stringa non vuota for (int i = 0; i < peers.size(); i++) { Messaggio m = new Messaggio ( nickname, cmd); ((Chat) peers.get(i)).dico(m) ; // fine for catch (Exception e) { Naming.unbind(nickname); catch (Exception e) { System.exit(0); // fine main Invio la stringa a tutti i peers di cui sono a conoscenza In uscita dal main, rimuovo il mio riferimento dal registry e mi suicido! 48

13 ChatImpl.java (5) ChatImpl.java (6) public void dico (Messaggio m) System.out.print ("\n"+m.getmittente()+": +m.gettesto()+"\n"+prompt); public void iscrivi (String id) peers.add(naming.lookup ( "rmi://"+host+"/"+id)); catch (Exception e) { System.out.print ("\nentra "+id+". +"\n"+prompt); // continua Metodi remoti: in generale stampano informazioni su video e poi ristampano il prompt stampa il messaggio stampa e aggiunge il riferimento remoto alla lista dei peers usando il nickname passato come parametro 49 public void abbandona (Remote idref) int indice = peers.indexof(idref); Object app = peers.remove(indice); System.out.print ("\n"+ ((Chat) idref).getnickname() +" ha abbandonato la chat"+"\n +PROMPT); public String getnickname () throws RemoteException{ return nickname; static ArrayList peers = new ArrayList(); static String nickname; public static final String HOST= localhost"; public static final String PROMPT="Comandi >"; cerca il riferimento da cancellare e lo elimina Si può usare idref.getnickname() perché il peer che esce effettua prima le chiamate a abbandona e poi esce Variabili di istanza Costanti utili 50 Alcuni commenti sulla Chat Applicazione peer-to-peer peer di dimensione maggiore rispetto al client della soluzione client-server non soggetta a fault-locali in caso il registry cada, chi è connesso continua a chattare fino alla chiusura (esempio classi di partial faults tolerance) Un problema: su un registry che si trova su un host diverso dalla JVM si può fare lookup() e list() ma non si può fare la bind(), rebind()! con questa implementazione si può fare una chat solo se ci si 51 trova sullo stesso host (stesso registry!)

Architetture distribuite Alcuni esempi: Alcuni commenti sul ruolo del registry. Import Interfaccia remota Due metodi remoti

Architetture distribuite Alcuni esempi: Alcuni commenti sul ruolo del registry. Import Interfaccia remota Due metodi remoti Organizzazione della lezione 17. Applicazioni ed Esempi Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Architetture distribuite

Dettagli

Organizzazione della lezione. 18. Applicazioni ed Esempi (2) II prova intercorso. Prove scritte degli esami successivi

Organizzazione della lezione. 18. Applicazioni ed Esempi (2) II prova intercorso. Prove scritte degli esami successivi Organizzazione della lezione 18. Applicazioni ed Esempi (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della

Dettagli

18. Applicazioni ed Esempi (2)

18. Applicazioni ed Esempi (2) 18. Applicazioni ed Esempi (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Organizzazione della

Dettagli

Organizzazione della II prova intercorso ed esami. L accesso al registry per il rebind() Una soluzione con registry multipli Alcuni commenti finali

Organizzazione della II prova intercorso ed esami. L accesso al registry per il rebind() Una soluzione con registry multipli Alcuni commenti finali Organizzazione della lezione 18. Applicazioni ed Esempi (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Corso di Reti di Calcolatori T

Corso di Reti di Calcolatori T Università degli Studi di Bologna Scuola di Ingegneria Corso di Reti di Calcolatori T Esercitazione 7 (svolta) Java RMI e Riferimenti Remoti Un RMI Registry Remoto Luca Foschini Anno accademico 2018/2019

Dettagli

Organizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation

Organizzazione della lezione. Invocazione remota di metodi fai-da-te. Lezione 12 Introduzione a Remote Method Invocation Organizzazione della lezione Lezione 12 Introduzione a Remote Method Invocation Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi

Dettagli

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità: 7 Esercitazione (svolta): due possibilità: Java RMI: callback Molte applicazioni richiedono un meccanismo publish/subscribe I partecipanti (client) necessitano di notifiche da parte del coordinatore (server)

Dettagli

Corso di Reti di Calcolatori LA

Corso di Reti di Calcolatori LA Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori LA RMI: callback Silvia Vecchi Anno accademico 2003/2004 RMI: Callback 1 Callback (1) Molte applicazioni richiedono

Dettagli

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server

Esercizi su Java RMI. Progetto di Cliente / Servitore e supporto. Possibile tabella mantenuta dal server Esercizi su Java RMI Progetto di Cliente / Servitore e supporto Un progetto RMI si deve basare sempre sulla interfaccia remota e sulle classi del cliente e del servitore più su alcune classi di supporto

Dettagli

Organizzazione della lezione. Lezione 14 Remote Method Invocation - 2. Remote. Il diagramma di RemoteHello

Organizzazione della lezione. Lezione 14 Remote Method Invocation - 2. Remote. Il diagramma di RemoteHello Organizzazione della lezione Lezione 14 Remote Method Invocation - 2 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client

Dettagli

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio

LPR 2005/2006 Lezione 7. paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio LPR 2005/2006 Lezione 7 paradigma di interazione domanda/risposta remote procedure call RMI (Remote Method Invocation): API JAVA esercizio PARADIGMA DI INTERAZIONE A DOMANDA/RISPOSTA Paradigma di interazione

Dettagli

16. Java Remote Method Invocation (4)

16. Java Remote Method Invocation (4) 16. Java Remote Method Invocation (4) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Oggetti attivabili

Dettagli

Organizzazione della lezione. Lezione 15 Remote Method Invocation - 3. Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. Lezione 15 Remote Method Invocation - 3. Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione Lezione 15 Remote Method Invocation - 3 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Laurea in Informatica. "Programmazione Distribuita" - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione

Laurea in Informatica. Programmazione Distribuita - Prof. Scarano. A.A Università di Salerno 1. Organizzazione della lezione 12. Invocazione di Metodi Remoti Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Modelli di programmazione:

Dettagli

Organizzazione della lezione. 16. Java Remote Method Invocation (4) Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili

Organizzazione della lezione. 16. Java Remote Method Invocation (4) Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili Organizzazione della lezione 16. Java Remote Method Invocation (4) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Oggetti attivabili

Dettagli

12. Java: Remote Method Invocation (3)

12. Java: Remote Method Invocation (3) 12. Java: Remote Method Invocation (3) Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Il

Dettagli

15. Java Remote Method Invocation (3)

15. Java Remote Method Invocation (3) 15. Java Remote Method Invocation (3) Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Programmazione Distribuita.

Dettagli

Organizzazione della lezione. Lezione 17 Remote Method Invocation - 5. Remote. Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili

Organizzazione della lezione. Lezione 17 Remote Method Invocation - 5. Remote. Le classi ed interfacce di RMI. Persistenza. Oggetti attivabili Organizzazione della lezione Lezione 17 Remote Method Invocation - 5 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio

Esercizi RMI. Laboratorio di Programmazione di Rete A 5/12/2007. Esercitazione di Laboratorio Esercitazione di Laboratorio 5/12/2007 Sviluppare un applicazione RMI per la gestione di un elezione. Il server esporta un insieme di metodi: public void vota(string nome): accetta come parametro il nome

Dettagli

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern Organizzazione della lezione 15. Java Remote Method Invocation (3) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il design pattern

Dettagli

Lezione n.10 LPR. RMI CallBacks

Lezione n.10 LPR. RMI CallBacks Lezione n.10 LPR 12/05/2008 RMI CALLBACKS Un client può richiedere servizi ad un servente mediante RMI. Talvolta è utile poter consentire al servente di contattare il client il servente notifica degli

Dettagli

Esercizi su Callback RMI

Esercizi su Callback RMI Esercizi su Callback RMI Esercitazione di Laboratorio di Programmazione di Rete A Daniele Sgandurra Università di Pisa 03/12/2008 Esercizio Settimana Scorsa Sviluppare un applicazione RMI per la gestione

Dettagli

Lezione n.10 LPR Informatica Applicata RMI Approfondimenti Callback. 15/05/2012 Laura Ricci

Lezione n.10 LPR Informatica Applicata RMI Approfondimenti Callback. 15/05/2012 Laura Ricci Lezione n.10 LPR Informatica Applicata RMI Approfondimenti Callback 15/05/2012 Laura Ricci Laura Ricci 1 RMI: IL MECCANISMO DELLE CALLBACK RMI utilizza una comunicazione sincrona a rendez vouz esteso:

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 6 Cosa faremo oggi 2 Comunicazione RMI Comunicazione RMI Multi-Thread Remote Method Invocation 3 L obiettivo è di

Dettagli

14. Java Remote Method Invocation (2)

14. Java Remote Method Invocation (2) 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Il modello della

Dettagli

Remote Method Invocation

Remote Method Invocation JAVA RMI LSO 2008 Remote Method Invocation Perché RMI? L obiettivo è di permettere ad una applicazione in esecuzione su una macchina locale di invocare i metodi di un oggetto in esecuzione su un altro

Dettagli

Il problema nasce dalla caratteristica di Java di essere distribuito

Il problema nasce dalla caratteristica di Java di essere distribuito Organizzazione della lezione 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Istanziazione

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Organizzazione della lezione. Organizzazione della lezione. 14. Java Remote Method Invocation (2) La sicurezza in Java

Organizzazione della lezione. Organizzazione della lezione. 14. Java Remote Method Invocation (2) La sicurezza in Java Organizzazione della lezione 14. Java Remote Method Invocation (2) Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Il modello della

Dettagli

Oggetti Distribuiti e Java RMI

Oggetti Distribuiti e Java RMI Oggetti Distribuiti e Java RMI Oggetti Locali - Oggetti Distribuiti Oggetti Locali: sono oggetti i cui metodi possono essere invocati solo da un processo locale, cioè da un processo in esecuzione sulla

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati

Activation In sintesi: è inutile avere attivi degli oggetti se non vengono utilizzati Activation In generale i Sistemi ad oggetti distribuiti sono progettati per lavorare con oggetti persistenti. Dato che questi sistemi saranno composti da migliaia (forse milioni) di tali oggetti, sarebbe

Dettagli

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Chat. Si ha un server in ascolto sulla porta 4444. Quando un client richiede la connessione, il server risponde con: Connessione accettata. Chat Si ha un server in ascolto sulla porta 4444 Quando un client richiede la connessione, il server risponde con: Connessione accettata. Nome: Il client deve rispondere con lo user name A questo punto

Dettagli

Programmazione distribuita

Programmazione distribuita Programmazione distribuita 1 Architettura client-server È il modo classico di progettare applicazioni distribuite su rete Server offre un servizio "centralizzato" attende che altri (client) lo contattino

Dettagli

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita:

JAVA - I/O System. Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: JAVA - I/O System Il JAVA considera tutte i flussi da e verso l esterno, come stream di byte. Questi possono essere di ingresso o di uscita: 1. InputStream: Flusso di byte in ingresso. Con questa classe

Dettagli

Lezione n.10. RMI CallBacks 9/12/2009 Andrea Corradini

Lezione n.10. RMI CallBacks 9/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.10 LPR-B-09 RMI CallBacks 9/12/2009 Andrea Corradini Lezione 10: RMI CallBacks - Miscellanea Andrea Corradini 1 RMI: PASSAGGIO DI PARAMETRI

Dettagli

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Programmazione in Rete e Laboratorio Comunicazione distribuita Port1 Java VM1 Java VM2 Port 2 Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino

Dettagli

Esercitazione di Sistemi Distribuiti

Esercitazione di Sistemi Distribuiti Scenario generale Esercitazione di Sistemi Distribuiti Java RMI Leonardo Mariani client object (2) estrazione dei riferimenti ad oggetti remoti Object Registry (3) invocazione remota (4) eventuale invio

Dettagli

Laboratorio di Sistemi Distribuiti Leonardo Mariani

Laboratorio di Sistemi Distribuiti Leonardo Mariani Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante

Dettagli

MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola

MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola MinMax a Java Distributed Application SISTEMI DISTRIBUITI Fabrizio G. Ventola CdL Magistrale Informatica 2012/2013 Introduzione Uno degli obiettivi dell informatica moderna è quello di offrire servizi

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, Modelli e Applicazioni per Sistemi Distribuiti M Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 1 (Svolta) Socket Java senza connessione Alessandro Pernafini Lab1 - svolta

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

Principi, Modelli e Applicazioni per Sistemi Distribuiti M Università degli Studi di Bologna Facoltà di Ingegneria Principi, Modelli e Applicazioni per Sistemi Distribuiti M Esercitazione 2 (svolta) Socket Java con connessione Alessandro Pernafini Architettura

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L

Contesto e motivazioni Architettura e concetti di base Componenti di RMI RMIRegistry Interfacce, eccezioni e classi Lo sviluppo di una applicazione L CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell Informazione Politecnico di Milano Programmazione Object Oriented in Java Java Remote Method Invocation Docente: Diego Peroni CEFRIEL

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Organizzazione della lezione. Lezione 13. Applicazioni ad oggetti distribuite. Remote Method Invocation (RMI)

Organizzazione della lezione. Lezione 13. Applicazioni ad oggetti distribuite. Remote Method Invocation (RMI) Organizzazione della lezione Lezione Remote Method Invocation Vittorio Scarano Corso di Programmazione Distribuita (00-00) Laurea di I livello in Informatica Università degli Studi di Salerno Remote Method

Dettagli

Introduzione a Java Remote Method Invocation (RMI)

Introduzione a Java Remote Method Invocation (RMI) Introduzione a Java Remote Method Invocation (RMI) SAPIENZA Università di Roma Corso di Architetture Software Orientate ai Servizi E risuona il mio barbarico yawp sopra i tetti del mondo ( I sound my barbaric

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione

Java RMI. Alcune premesse Interfaccia e Implementazione RMI. Architettura. Esempi interfaccia e implementazione Java RMI Alcune premesse Interfaccia e Implementazione Modello OO Interfaccia esprime una vista astratta di un ente computazionale, nascondendo organizzazione interna dettagli di funzionamento Implementazione

Dettagli

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini

Lezione n.9. RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Università degli Studi di Pisa Dipartimento di Informatica Lezione n.9 LPR-B-09 RMI: Remote Method Invocation 1/12/2009 Andrea Corradini Lezione 9: RMI - Remote Method Invocation Andrea Corradini 1 Da

Dettagli

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61 Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli

Dettagli

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I { Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi

Dettagli

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012

Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012 Programmazione a Oggetti Metodologie di Programmazione 14 Maggio 2012 Nome: Matricola: Metodologia di Programmazione [ ] Programmazione a Oggetti [ ] Istruzioni Scrivete il vostro nome sul primo foglio.

Dettagli

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0} 16181 Nome Cognome A domande a risposta multipla con n scelte, la risposta corretta vale (n-1)/n*difficoltàdomanda, la risposta errata -1/n*difficoltà domanda, la risposta non data. Eseguendo il frammento

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

Programmazione distribuita in Java. Socket & Client-Server Programmazione distribuita in Java Socket & Client-Server 1 Strumenti per networking Libreria java.net Socket (Astrazione per una presa di comunicazione) Serializzazione Socket Per comunicare si apre una

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP (VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP D (FKR&OLHQWH6HUYHU Sviluppare un applicazione C/S in cui: il server attende una connessione da parte del client (su MDYDQHW6HUYHU6RFNHW), usa la

Dettagli

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1

Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Classi astratte Interfacce (Eccezioni) Laboratorio di Programmazione - Esercitazio 1 Gerarchia delle classi Una sottoclasse eredita metodi, variabili, etc. dalla superclasse... Per

Dettagli

RMI: metodi equals e hashcode

RMI: metodi equals e hashcode RMI: metodi equals e hashcode Per verificare se due oggetti remoti contengono gli stessi dati, la chiamata indirizzata al metodo equals() avrebbe bisogno di contattare i server dove si trovano gli oggetti

Dettagli

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa

RMI. Remote Method Invocation. Enrico Tassi, 3/4/2009. Slides originali di Nicola Gessa RMI Remote Method Invocation Enrico Tassi, 3/4/2009 Slides originali di Nicola Gessa Remote Method Invocation Si colloca del mondo della programmazione distribuita. L obiettivo è di fornire al programmatore

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario API di Java Istruzione di scrittura Istruzione di lettura 21/03/2011 2 API di Java Java è un linguaggio orientato agli oggetti basato

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA7 A1 Vector, Arrays e StringBuffer 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Algoritmi notevoli sul vettore 2 1 Introduzione In questa

Dettagli

Multithreading. Multithreading/2

Multithreading. Multithreading/2 Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Esempio di Web server(?) Multithreading/2

Dettagli

Socket & RMI Ingegneria del Software - San Pietro

Socket & RMI Ingegneria del Software - San Pietro Socket & RMI Ingegneria del Software - San Pietro Socket È possibile trattare la comunicazione di rete allo stesso modo con cui è possibile trattare la lettura da file. La classe Socket rappresenta la

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA A - Array // Prerequisiti Variabili semplici Operazioni su variabili Strutture di controllo // Introduzione In molte situazioni reali può capitare di elaborare elenchi

Dettagli

Simple Social: implementazione di una

Simple Social: implementazione di una Laboratorio di Reti, Corsi A e B Simple Social: implementazione di una Online Social Network Progetto di Fine Corso A.A. 2015/16 1.Descrizione del problema Il progetto consiste nello sviluppo di una rete

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A DOMANDA1 Si analizzi il codice seguente e si scriva l output prodotto dai metodi main public class General { protected int value; public static boolean flag = false; public General() { value = 1; public

Dettagli

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione

Server Sequenziale. Server Concorrente. Esercitazione: Socket Java con connessione Esercitazione: Socket Java con connessione Sviluppare un applicazione C/S che effettui il trasferimento di un file dal client al server (put) usando una connessione. In particolare nel servizio: il client

Dettagli

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste).

Multithreading/2. Più richieste servite simultaneamente > 1 thread per ogni connessione client (+ 1 thread per accettare nuove richieste). Multithreading Osservazioni su EchoServer Programmazione TCP in Java EchoServer ed EchoClient Uso del multithreading nella programmazione di rete ChatClient e ChatServer Multithreading/2 Più richieste

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA7 B3 Gestione di una coda 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Tecnica di allocazione dinamica Concetto di coda e operazioni relative

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Programmazione. preparazione allo scritto. Informatica / Comunicazione Digitale 19 gennaio 2016

Programmazione. preparazione allo scritto. Informatica / Comunicazione Digitale 19 gennaio 2016 Programmazione preparazione allo scritto Informatica / Comunicazione Digitale 19 gennaio 2016 1. (1) Scrivete il metodo statico public static boolean compare( ArrayList X, String s ) il quale restituisce

Dettagli

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo parametrico vs polimorfismo per inclusione Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico

Dettagli

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124

UnicastRemoteObject. Massimo Merro Programmazione di Rete 103 / 124 UnicastRemoteObject Java RMI fornisce diverse classi base per definire server remoti: UnicastRemoteObject < RemoteServer < RemoteObject dove A < B significa che A è una sottoclasse di B. UnicastRemotObject

Dettagli

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari

Sistemi Distribuiti Multiagente A.A.2010-11 Informatica Magistrale Università di Bari Java RMI I lucidi che seguono sono stati prodotti sulla base dei seguenti riferimenti: - Sistemi Distribuiti Dip. Informatica (S.Pizzutilo) - Seminario Java RMI di G.Cozzolongo Java RMI: Remote Method

Dettagli

Comunicazione fra oggetti distribuiti

Comunicazione fra oggetti distribuiti Comunicazione fra oggetti distribuiti Livelli Middleware Trasparenza e implementazione La trasparenza - come per le chiamate di locali RMI RPC Eventi di metodo remoto - gli oggetti remoti ricevono le RMI

Dettagli

Agenti Mobili in Java RMI

Agenti Mobili in Java RMI Agenti Mobili in Java RMI Un agente è una computazione che agisce per conto di un host presso un altro host. Gli agenti in Java RMI sfruttano due peculiarità di Java: Serializzazione, attraverso cui gli

Dettagli

Preparazione allo Scritto di Programmazione

Preparazione allo Scritto di Programmazione Preparazione allo Scritto di Programmazione Informatica / Comunicazione Digitale A.A. 2013/2014 1. Una riga di testo è detta numerica se e solo se contiene più cifre che caratteri di altro genere. Ad esempio,

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Programma Introduzione al calcolatore e Java Linguaggio Java, basi e

Dettagli

Introduzione Programmazione Java

Introduzione Programmazione Java Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea

Dettagli

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java:

Esercitazione n 4. Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Esercitazione n 4 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Il concetto di filtro Linguaggio Java: Gestione di input/output da console e da file (package java.io) Utilizzo di

Dettagli