Sistemi Distribuiti Multiagente A.A Informatica Magistrale Università di Bari

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 Invocation Java Remote Method Invocation (RMI) è l implementazione Java del modello ad oggetti distribuiti E un meccanismo che consente ad un oggetto su un JVM di invocare metodi di oggetti residenti in altre JVM La sintassi per le invocazioni remote è esattamente la stessa di quella delle invocazioni locali Possono essere passati argomenti, calcolati nel contesto della macchina chiamante Possono essere restituiti valori, calcolati nel contesto della macchina remota Gli elementi chiave sono serializzazione e dynamic class loading Remote Method Invocation Perche 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 computer. Si definisce client il programma chiamante che ottiene riferimento all oggetto remoto, server il programma che crea gli oggetti remoti. Tali applicazioni sono anche denominate distributed object application Quali vantaggi? miglioramento delle prestazione complessive semplicità nella gestione delle risorse distribuite incremento della potenza operativa es: suddivisione di una computazione pesante in procedure più piccole, eseguite tutte su macchine diverse diminuendo in tal modo il tempo complessivo di esecuzione 1

2 Terminologia di base Semantica invocazioni remote La semantica delle invocazioni remote non è uguale pero a quella delle locali... Infatti, i tipi primitivi (int, float,...) sono sempre passati per valore (semantica Call By Value, CBV) Il chiamato lavora una copia del tipo Gli oggetti remoti sono sempre passati per riferimento (Call By Reference, CBR) Il chiamato riceve un riferimento all oggetto Semantica invocazioni remote 2

3 Interface Definition Language Architettura dell RMI Client (Interfaccia) Server (Implementazione) Stub Skeleton Remote Reference Layer Remote Reference Layer Transport Layer (Connessione TCP/IP) Un client è dotato dell'interfaccia dei metodi disponibili sul server remoto, ma tutta l'implementazione è lasciata sul lato server. Nel programma client i dettagli dell'implementazione dei metodi remoti sono quindi invisibili. Ciò che realmente collega il client e il server in un sistema RMI è una connessione stratificata, trasparente agli sviluppatori, effettuata dal sottosistema RMI delle due macchine virtuali coinvolte. Componenti base dell RMI Stub: proxy locale su cui vengono fatte le invocazioni destinate all oggetto remoto Skeleton: elemento remoto che riceve le invocazioni fatte sullo stub e le realizza effettuando le corrispondenti chiamate sul server (ormai solo per back compatibility) Remote Reference Layer:- -fornisce il supporto alle chiamate inoltrate dallo stub definisce e supporta la semantica dell invocazione e della comunicazione Transport Layer: localizza il server RMI relativo all oggetto remoto richiesto, gestisce le connessioni (TCP/IP, timeout) e le trasmissioni (sequenziali, serializzate), usando Java Remote Method Protocol (JRMP). Registry: servizio di naming che consente al server di pubblicare un servizio e al client di recuperarne il proxy 3

4 The Stub and Skeleton A client invokes a remote method, the call is first forwarded to stub. The stub is responsible for sending the remote call over to the server-side skeleton The stub opening a socket to the remote server, marshaling the object parameters and forwarding the data stream to the skeleton. A skeleton contains a method that receives the remote calls, unmarshals the parameters, and invokes the actual remote object implementation. The General RMI Architecture The server must first bind its name to the registry The client lookup the server name in the registry to establish remote references. The Stub serializing the parameters to skeleton, the skeleton invoking the remote method and serializing the result back to the stub. The General RMI Architecture 4

5 Simulazione locale sul client Remote Reference Layer Architettura di RMI La struttura di un applicazione RMI è organizzata in strati orizzontali sovrapposti Il primo livello di questa connessione stratificata è rappresentato dagli stub (lato RMI Client Java Virtual Machine RMI Server client) e gli skeleton (loto server) ai quali si riferiscono rispettivamente il client e il server senza occuparsi di ulteriori dettagli di più basso Stubs Skeleton livello. Transport Layer Connessione virtuale Connessione fisica Remote Reference Layer Transport Layer Oggetto reale eseguito sul server A loro volta, gli stub e gli skeleton demandano l'esecuzione di ciascuna attività allo strato immediatamente sottostante: il remote reference layer (RRL) che gestisce i riferimenti delle variabili agli oggetti remoti, usando la connessione TCP/IP del Transport layer sottostante. Architettura di RMI Lo strato più alto è costituito da applicazioni (client e server) eseguite dalla Java Virtual Machine. Lo stub e lo skeleton forniscono la rappresentazione dell oggetto remoto: lo stub gestisce la simulazione locale sul client e, agendo come proxy, consente la comunicazione con l oggetto remoto; lo skeleton invece consente l esecuzione dell oggetto remoto sul server. Il client esegue i metodi dell oggetto remoto in modo del tutto analogo alla chiamata locale: ris = OggettoRemoto.nomeMetodo(par1, par2,..) senza preoccuparsi dei dettagli della comunicazione. La serializzazione Marshalling: processo di codifica di argomenti e risultati per la trasmissione. Unmarshalling: processo inverso di decodifica di argomenti e risultati ricevuti. In Java questo problema è risolto usando la serializzazione, che viene fatta in maniera trasparente dal supporto Serializzazione: trasformazione di oggetti complessi in semplici sequenze di byte=> metodo writeobject() su uno stream di output Deserializzazione: decodifica di una sequenza di byte e costruzione di una copia dell oggetto originale=> metodo readobject() da uno stream di inputin Java sono utilizzati in molti casi: per memoria anche esterna trasmissione tra macchine diverse(parametri e valori di ritorno in RMI) Esempio di storage 5

6 La serializzazione Il meccanismo alla base utilizzato da RMI per la trasmissione dei dati fra client e server è quello della serializzazione che permette il flusso di dati complessi all interno di stream (può venir usata indipendentemente da applicazioni RMI) La serializzazione consiste nella trasformazione automatica di oggetti e strutture in sequenze di byte manipolabili coi vari stream del package java.io Gli stream sono associabili sia a socket che a file es: Record record = new Record() ObjectOutputStream oos = new ObjectOutputStream(myos) oos.writeobject(record); La serializzazione Un oggetto è serializzabile se implementa l interfaccia Serializable Si possono serializzare oggetti con struttura e complessità arbitraria, senza particolari differenze, a patto che l oggetto sia serializzabile (implementi cioè l interfaccia Serializable) es: public class Record implements Serializable{ private String Nome; public Record(String Nome){this.Nome = Nome La serializzazione è ricorsiva ( un oggetto serializzabile deve contenere oggetti serializzabili) La maggior parte delle classi del JDK è serializzabile (eccetto alcune che adottano strutture dati binarie dipendenti dalla piattaforma) Passaggio parametri Shallow Copy vs. Deep Copy considerando un grafo di oggetti Passaggio per valore => Serializable Objects Passaggio per riferimento => Remote Objects Oggetti serializzabili: Oggetti la cui locazione non è rilevante per lo stato. Sono passati per valore: ne viene serializzata l istanza che sarà deserializzata a destinazione per crearne una copia locale. Oggetti remoti: Oggetti la cui funzione è strettamente legata alla località in cui eseguono (server) Sono passati per riferimento: ne viene serializzato lo stub, creato automaticamente dal proxy (stub o skeleton) su cui viene fatta la chiamata in cui compaiono come parametri 6

7 Gli stub: quali azioni fanno? stub cliente: <ricerca del servitore> <marshalling argomenti> <send richiesta> <receive risposta> <unmarshallin grisultato> restituisci risultato fine stub cliente; stub servitore: <attesa della richiesta> <unmarshalling argomenti> invoca operazione locale ottieni risultato <marshalling del risultato> restituisci risultato fine stub servitore; In aggiunta, il controllo della operazione ed eventuali azioni di ritrasmissione (entro un tempo di durata massima) Stub e Skeleton Stub e Skeleton sono oggetti generati dal compilatore RMI che gestiscono marshalling/unmarshalling e comunicazione (socket) tra client e server Procedura di comunicazione: 1. Il client ottiene un istanza dello stub 2. Il client chiama metodi sullo stub 3. Lo stub a. crea una connessione con lo skeleton (o ne usa una già esistente) b. marshalling delle informazioni associate alla chiamata (id del metodo e argomenti) c. invia le informazioni allo skeleton 4. Lo skeleton a. unmarshalling dei dati ricevuti b. effettua la chiamata sull oggetto chei mplementa il server c. marshalling del valore di ritorno e invio allo stub 5. lo stub: - unmarshalling del valore di ritorno erestituzione del risultato al client Passaggio di parametri Qualsiasi classe, i cui oggetti devono essere trasmessi con una connessione RMI, deve essere dichiarata come tale indicando che deve implementare l'interfaccia java.io.serializable. Ogni parametro passato o ritornato da un metodo remoto deve essere o un oggetto di una classe primitiva Java, o un tipo di dato primitivo oppure un oggetto che implementa l'interfaccia java.io.serializable. Un client richiede al server un riferimento ad un oggetto usando lo stub sul lato client. Il server ottiene la richiesta dallo skeleton sul lato server. Tra i due c'è il remote reference layer che negozia le richieste convertendo gli oggetti in un formato trasmissibile attraverso la rete. Questa conversione è chiamata marshalling. Se i dati da trasmettere non sono né primitivi né serializzabili, lo stub lancerà un'eccezione MarshalException. 7

8 Il passaggio dei parametri Percorso dei parametri Serializzati dalla Virtual Machine Inviati sotto forma di stream al server Deserializzati del server che li utilizza all interno del corpo del metodo invocato Il risultato segue il percorso inverso fino ad arrivare al client Gli strati RRL e TL Si occupano della gestione a basso livello ( all interno dell architettura RMI) della comunicazione Il Remote Reference Layer (RRL) ha il compito di instaurare un connessione virtuale fra il client e il server ( esegue operazioni di codifica e decodifica dei dati). RRL adotta un protocollo generico e indipendente dal tipo di stub o skeleton utilizzato. Il Transport Layer esegue la connessione vera e propria tra le macchine utilizzando le specifiche standard di networking di Java, e quindi le socket con il protocollo TCP/IP. Il Transport Layer Il TL è responsabile del controllo dello stato delle vari connessioni I dati vengono visti come sequenze di byte da inviare o da leggere IL TL si incarica di localizzare il server RMI relativo all oggetto remoto richiesto Esegue la connessione per mezzo di un socket Programmare con RMI Le classi e i metodi sono contenuti nei package java.rmi e java.rmi.server Si definisce oggetto remoto un oggetto che implementi l interfaccia Remote i cui metodi possono essere eseguiti da un applicazione client posta su un altra macchina virtuale 8

9 Come trasformare un oggetto in un oggetto remoto? public class MyServer{ public String concat (String a, String b){ return a+b; public interface MyServerInterface extend Remote{ public String concat (String a, String b)throws RemoteException; public class MyServerImpl implements MyServerInterface extends UnicastRemoteObject{ public MyServerImpl() throws RemoteException{ public String concat (String a, String b)throws RemoteException{ return a+b; Hello World con RMI: definire l applicazione Di cosa ho bisogno? 1. Scrivere l intefaccia dell oggetto remoto : MessageWriter.java 2. Scrivere il server che implementa l interfaccia e la rende accessibile : MessageWriterImpl.java da cui in seguito generare stub e skeleton 3. Scrivere il codice per la pubblicazione del server HelloServer.java 4. Scrivere il client che richiede l accesso all oggetto remoto : HelloClient.java una volta definite le classi posso passare alla compilazione e posso lanciare la mia applicazione RMI Sistemi distribuiti A.A Informatica specialistica Lanciare l applicazione RMI Una volta definite le classi (interfaccia, server, registrazione e client) posso compilare e lanciare il mio codice RMI. Passi necessari: 5. Compilazione dei file.java 6. Generazione di stub e skeleton tramite il compilatore rmic 7. Avvio dell RMI registry 8. Avvio dell oggetto remoto (server) 9. Avvio del client Sistemi distribuiti A.A Informatica specialistica 9

10 Hello World (1) Scrivere l intefaccia dell oggetto remoto : MessageWriter.java L interfaccia remota deve dichiarare tutti i metodi che si vuole poter richiamare in maniera remota deve essere dichiarata public deve estendere l interfaccia java.rmi.remote ogni metodo deve dichiarare java.rmi.remoteexception nella sezione throws per proteggere l applicazione da anomalie derivanti dall utilizzo di risorse remote //l interfaccia dell oggetto remoto import java.rmi.*; public interface MessageWriter extends Remote { String writemessage(string s) throws RemoteException; Sistemi distribuiti A.A Informatica specialistica Hello World: (2) Scrivere il server (oggetto remoto) MessageWriterImpl.java deve implementare almeno un interfaccia remota deve definire i costruttori dell oggetto remoto deve fornire l implementazione dei metodi invocati da remoto creare e installare il security manager creare una o più istanza dell oggetto Sistemi distribuiti A.A Informatica specialistica Implementare l interfaccia remota public class MessageWriterImpl extends UnicastRemoteObject implements MessageWriter { dichiara che implementa l intefaccia MessageWriter ( con tutti i sui metodi) estende la classe UnicastRemoteObject per consentire la creazione di un oggetto remoto che adotta i protocolli di comunicazione di default di RMI basata sui socket e TCP rimane costantemente attivo 10

11 Definire i costruttori public MessageWriterImpl() throws RemoteException { super(); il metodo super() chiama il costruttore della classe UnicastRemoteObject che esegue le inizializzazioni necessarie per consentire di rimanere in attesa (listen) di richieste remote su una porta e poterle gestire (accept) potrebbe generare l eccezione RemoteException se la connessione non fosse possibile Implementazione dei metodi remoti public String writemessage(string s) throws RemoteException { return (s + " Ho ricevuto la tua stringa"); devono essere implementati tutti i metodi dell interfaccia gli argomenti dei metodi e i risultati restituiti devono essere oggetti serializzabili Implementazione dell oggetto remoto MessageWriterImpl.java import java.rmi.*; import java.rmi.server.*; public class MessageWriterImpl extends UnicastRemoteObject implements MessageWriter { public MessageWriterImpl() throws RemoteException { super(); public String writemessage(string s) throws RemoteException { return (s + " Ho ricevuto la tua stringa"); 11

12 Il security manager Chi garantisce che il codice scaricato da remoto non esegua operazioni pericolose? if(system.getsecuritymanager() == null){ System.setSecurityManager(new RMISecurityManager()); Il metodo main deve creare e installare un security manager, che può essere il RMISecurityManager o definito in altro modo Il S.M. garantisce che le classi che vengono caricate non eseguano operazioni per le quali non siano abilitate se il S.M non è specificato non è permesso nessun caricamento di classi da parte sia del client ( stub ) che del server HelloWorld (3) Scrivere il codice per la pubblicazione del server HelloServer.java import java.rmi.*; public class HelloServer { public static void main (String args[]) throws Exception { MessageWriterImpl messagewriter = new MessageWriterImpl(); Naming.rebind("myservice",messageWriter); //pubblicazione interfaccia Nel metodo main si devono creare una o più istanze dell oggetto che fornisce il servizio (oggetto remoto) Una volta creato, l oggetto è pronto per accettare richieste remote Registrare l oggetto remoto Naming.rebind("myservice",messageWriter); Il client deve poter ottenere un riferimento all oggetto remoto: RMI fornisce un registry degli oggetti per creare un associazione (bind) fra un nome URL-formatted e un oggetto l RMI registry è un name-service che consente ai client di ottenere riferimenti agli oggetti: una volta registrato l oggetto i client possono farne richiesta attraverso il nome e invocarne i metodi nessun protocollo deve essere specificato nel primo argomento la porta di default su cui risponde il RMIregistry è la 1099, ma può essere cambiata 12

13 Registrare l oggetto remoto (2) Un applicazione puo creare un associazione solo sul RMIregistry del host locale I client possono invece eseguire la propria ricerca di oggetti su qualunque host L operazione di registrazione può generare varie eccezioni AlreadyBoundException, se il nome logico è gia utilizzato MalformedURLException, per errori nella sintassi dell URL RemoteException negli altri casi RMI Registry Problema di Bootstrapping: un client in esecuzione su un macchina ha bisogno di localizzare un server a cui vuole connettersi, che è in esecuzione su un altra macchina. Tre possibili soluzioni: - Il client conosce in anticipo dov è il server - L utente dice all applicazone client dov è il server (es. client) - Un servizio standard (naming service) in una locazione ben nota, che il client conosce, funziona come punto di indirezione Java RMI utilizza un naming service: - RMI RegistryMantiene un insieme di coppie {name, reference - Name: stringa arbitraria non interpretata HelloWorld (4) Scrivere il client che richiede l accesso all oggetto remoto : HelloClient.java Deve ottenere un riferimento all oggetto remoto che vuole richiamare dal RMIregistry eseguito sul server, utilizzando un istanza dello stub a cui passare hostname ( ed eventualmente porta) e nome dell oggetto MessageWriter mywriter = (MessageWriter) Naming.lookup("myservice"); Richiama i metodi dell oggetto secondo la sintassi solita String newstring = new String (mywriter.writemessage("hello, world!")); System.out.println(newstring); 13

14 // il client per richiamare l oggetto remoto Hello import java.rmi.naming; import java.rmi.remoteexception; import java.rmi.rmisecuritymanager; import java.rmi.*; public class HelloClient { public static void main(string args[]) throws Exception { MessageWriter mywriter = (MessageWriter) Naming.lookup("myservice"); String newstring = new String (mywriter.writemessage("hello, world!")); System.out.println(newstring); (5) Compilazione Compilare i file.java col javac per creare i file.class. (6) Generazione di stub e skeleton Generare stub e skeleton col comando rmic sul file che contiene l implementazione dell oggetto remoto (HelloImpl.class) rmic hello.messagewriterimpl questo genera i file HelloImpl_Stub.class e HelloImpl_Skel.class NB: skeleton non è più in uso per le versioni della JVM successive alla 1.2 (7) Avvio dell RMI registry Lanciare in background RMIregistry col comando rmiregistry Questo processo utilizza per default la porta 1099 Lanciare il server - java HelloServer (8) Avvio dell oggetto remoto (9) Avvio del client Lanciare il client - Java HelloClient 14

15 Esempio: Calcolatrice con RMI Implementazione dell interfaccia import java.rmi.remote; import java.rmi.remoteexception; public interface CalcolatriceServer extends Remote { int addizione(int a, int b) throws RemoteException; int sottrazione(int a, int b) throws RemoteException; import java.rmi.*; import java.rmi.server.*; Esempio: Calcolatrice con RMI Implementazione dell oggetto remoto public class CalcolatriceServerImpl extends UnicastRemoteObject implements CalcolatriceServer { //implementazione del costruttore public CalcolatriceServerImpl() throws RemoteException{ super(); //implementazione dei metodi public int addizione(int a, int b) throws RemoteException { return a + b; public int sottrazione(int a, int b) throws RemoteException { return a - b; Esempio: Calcolatrice con RMI Registrazione del server import java.rmi.naming; import java.rmi.*; import java.rmi.server.*; public class Registrazione { public static void main(string args[]){ try { CalcolatriceServerImpl obj = new CalcolatriceServerImpl(); Naming.rebind("calcolatrice", obj); catch (Exception e) { e.printstacktrace(); 15

16 Esempio: Calcolatrice con RMI Implementazione del Client import java.rmi.naming; import java.rmi.remoteexception; import java.util.inputmismatchexception; import java.util.scanner; public class CalcolatriceClient { public static void main(string[] arg){ try { CalcolatriceServer obj = (CalcolatriceServer) Naming.lookup("rmi:// /calcolatrice"); int risultato = 0; int scelta = 0; do {scelta = sceltamenu(); switch (scelta) { case 1: System.out.println("addizione"); risultato = obj.addizione(1, 1); System.out.println ("1 + 1 = " + risultato); break; case 2: System.out.println("sottrazione"); risultato = obj.sottrazione(1,1); System.out.println ("1-1 = " + risultato); break; case 0: break; default: System.out.println("Errore, ripeti la scelta");break; //end switch while (scelta!= 0); catch (Exception e) {e.printstacktrace(); public static int sceltamenu(){ boolean valorecorretto = true; int s = 0; do{ Scanner input = new Scanner(System.in); System.out.println("Inserisci la tua scelta"); System.out.println("1 = addizione"); System.out.println("2 = sottrazione"); System.out.println("0 = exit"); try { s=input.nextint(); valorecorretto = false; catch (InputMismatchException inputmismatchexception) {input.nextline(); // discard input so user can try again System.out.println("Scelta non valida. Inserisci un intero.\n"); while (valorecorretto); return s; Esempio:Implementare un Compute Engine Un compute engine è un oggetto remoto che consente ad un server di ricevere dei task dai client, eseguirli e restituire il risultato. Il task viene definito dal client ma viene eseguito sulla macchina del server. Il task può variare indipendentemente dal server, l importante è che rispetti una determinata interfaccia Il compute engine scarica dal client il codice del task e lo esegue all interno della propria Java virtual machine Interfacce utilizzate Per implementare un compute engine servono due interfacce L interfaccia Compute, che consenta ai client di inviare task all engine L interfaccia Task, che consenta all engine di eseguire i task 16

17 Interfaccia Compute package compute; import java.rmi.remote; import java.rmi.remoteexception; public interface Compute extends Remote { Object executetask(task t) throws RemoteException; Questa intefaccia definisce i metodi che possono essere chiamati da altre virtual machine. Gli oggetti che implementano questa interfaccia diventano oggetti remoti. Interfaccia Task package compute; import java.io.serializable; public interface Task extends Serializable { Object execute(); Questa interfaccia è usata come argomento nel metodo executetask dell interfaccia Compute (definito precedentemente) e fornisce al Compute Engine il meccanismo per eseguire il task. Non è un interfaccia remota, quindi non è associata ad oggetti remoti. Il metodo execute deve essere presente in ogni implementazione di questa interfaccia. Implementazione del Compute Engine //oggetto remoto per l esecuzione dei task package engine; import java.rmi.*; import java.rmi.server.*; import compute.*; public class ComputeEngine extends UnicastRemoteObject implements Compute { public ComputeEngine() throws RemoteException { super(); public Object executetask(task t) { return t.execute(); // metodo main 17

18 Metodo main del ComputeEngine public static void main(string[] args) { if (System.getSecurityManager() == null) { System.setSecurityManager(new RMISecurityManager()); String name = "//host/compute"; try { Compute engine = new ComputeEngine(); Naming.rebind(name, engine); System.out.println("ComputeEngine bound"); catch (Exception e) { System.err.println("ComputeEngine exception: + e.getmessage()); Implementazione del client package client; import java.rmi.*; import java.math.*; import compute.*; public class ComputePi { public static void main(string args[]) { if (System.getSecurityManager() == null) { System.setSecurityManager(new RMIS...()); try { String name = "//" + args[0] + "/Compute"; Compute comp = (Compute) Naming.lookup(name); Pi task = new Pi(Integer.parseInt(args[1])); BigDecimal pi = (BigDecimal) (comp.executetask(task)); System.out.println(pi); catch (Exception e) { System.err.println("ComputePi exception: " + e.getmessage()); Implementazione dell interfaccia Task package client; import compute.*; import java.math.*; public class Pi implements Task { /** costante usata nel calcolo di pi */ private static final BigDecimal ZERO = BigDecimal.valueOf(0); /** **/ public Pi(int digits) { this.digits = digits; /*** Calcola pi.*/ //Poiché implementa l interfaccia Task deve esserci questo public Object execute() { return computepi(digits); public static BigDecimal computepi(int digits) {... 18

19 Riassunto degli elementi necessari Due interfacce : compute.java task.java Il server che implementa l interfaccia compute e comprende il metodo main per l esecuzione: ComputeEngine.java L implementazione del task da far eseguire: Pi.java Il client che richiede l esezuzione del task al server: ComputePi.java In più vengono generati i file per lo stub e lo skeleton: ComputeEngine_stub.java ComputeEngine_skel.java Esercizio Provate a svolgere l esercizio precedente (calcolatrice) secondo modello illustrato per un generico Compute Engine Altro esempio interessante dal web 19

20 Oltre a RMI per l esecuzione remota RPC (Remote Procedure Call): rende possibile gestire procedure facenti parte di applicazioni remote rispetto al chiamante utilizzate soprattutto nei sistemi UNIX non si inseriscono nel contesto della programmazione ad oggetti DCOM (estensione di COM di Microsoft ) CORBA (Common Object Request Broker Architecture) 20

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

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

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 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

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) (RMI) Remote Method Invocation (RMI) in Java. Walter Cazzola Dipartimento di Informatica e Comunicazione Università à degli Studi di Milano. e-mail: cazzola@disi disi.unige.it Walter Cazzola Java: Remote

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

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

Java RMI (Remote Method Invocation)

Java RMI (Remote Method Invocation) Java RMI (Remote Method Invocation) Accesso ad oggetti remoti In Java non sono possibili riferimenti remoti RPC in JAVA Le RMI introducono la possibilità di richiedere esecuzione di metodi remoti in JAVA

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

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

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti

Sistemi Distribuiti. Anno Accademico 2005-06 Prof. Flavio De Paoli. Il modello ad oggetti Sistemi Distribuiti Anno Accademico 2005-06 Prof. Flavio De Paoli 1 Il modello ad oggetti 2 Distributed Objects 2-16 Common organization of a remote object with client-side proxy. 3 Caratteristiche Oggetti

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

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

Esercitazione di Sistemi Distribuiti: Java RMI

Esercitazione di Sistemi Distribuiti: Java RMI Esercitazione di Sistemi Distribuiti: Java RMI Anno Accademico 2007-08 Marco Comerio comerio@disco.unimib.it Richiami Teorici Oggetti distribuiti 2-16 Usuale organizzazione di un oggetto remoto con un

Dettagli

RMI. Introduzione DI GIOVANNI PULITI

RMI. Introduzione DI GIOVANNI PULITI 2001 proprietà di MokaByte s.r.l. tutti i diritti riservati è vietata la riproduzione non autorizzata anche parziale RMI DI GIOVANNI PULITI Introduzione La programmazione distribuita è tra gli argomenti

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

InterProcess Communication (IPC)

InterProcess Communication (IPC) CdL MAGISTRALE in INFORMATICA A.A. 2013-2014 corso di Sistemi Distribuiti 5. IPC (Inter Process Communication) (parte 2): da RPC a RMI Prof. S.Pizzutilo InterProcess Communication (IPC) Modelli e tecnologie

Dettagli

Comunicazione fra oggetti distribuiti

Comunicazione fra oggetti distribuiti Comunicazione fra oggetti distribuiti RMI RPC invocazione di metodo remoto - gli oggetti remoti ricevono le RMI interfaccia remota meccanismo per la comunicazione cliente servente come primitiva di un

Dettagli

Il linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete

Il linguaggio Java. Oggetto remoto. Remote Method Invocation (RMI) Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Il linguaggio Java Remote Method Invocation (RMI) Oggetto remoto Oggetto remoto: oggetto i cui metodi possono essere invocati attraverso la rete Client Server 2 Schema di principio oggetto client oggetto

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

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso

RMI e Firewall. Una soluzione è offerta dal transport layer di RMI stesso Firewall Ogni applicazione di rete, che opera fuori da quelli che sono i confini di una rete locale, incontra inevitabilmente i cosiddetti firewall Tipicamente i firewall bloccano tutto il traffico di

Dettagli

Outline. Remote Method Invocation in Java. Remote Procedure Call (RPC) Introduzione Storica. Remote Procedure Call (RPC) Remote Procedure Call (RPC)

Outline. Remote Method Invocation in Java. Remote Procedure Call (RPC) Introduzione Storica. Remote Procedure Call (RPC) Remote Procedure Call (RPC) Outline Remote Method Invocation in Java Walter Cazzola Dipartimento di Informatica e Comunicazione Università degli Studi di Milano 1 2 3 Walter Cazzola Remote Method Invocation in Java Slide 1 of 33

Dettagli

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247 Registri RMI Per poter interagire con un server remoto, un client deve essere in possesso di una sua referenza remota (ovvero un oggetto stub). Un servizio di Naming è una risorsa centralizzata che può

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

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

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI Programmazione in Rete e Laboratorio Architettura / Un servizio presso un computer-server è identificato dai seguenti valori: IP (32 bit, presto 128 bit) (16 bit) Servizi telnet TCP

Dettagli

Java RMI: Esempio Completo di un Applicazione Distribuita

Java RMI: Esempio Completo di un Applicazione Distribuita Java RMI: Esempio Completo di un Applicazione Distribuita Il Problema Produttore/Consumatore in Ambiente Distribuito* *a cura del Prof. L. Nigro, Università della Calabria Java RMI (Remote Method Invocation)

Dettagli

JBoss Application Server e Sviluppo di Applicazioni Distribuite in J2EE. Concetti di Base ed Esempi.

JBoss Application Server e Sviluppo di Applicazioni Distribuite in J2EE. Concetti di Base ed Esempi. SAPIENZA Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale e Ingegneria Informatica Dispensa didattica JBoss Application Server e Sviluppo di Applicazioni Distribuite in

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

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193

Servers Activatable. Massimo Merro Programmazione di Rete 166 / 193 Servers Activatable Nelle lezioni precedenti abbiamo detto che una referenza remota ad un server di tipo UnicastRemoteObject rimane valida finchè il server è in esecuzione. Quando il server termina, o

Dettagli

Internet Socket e RMI

Internet Socket e RMI Internet Socket e RMI una breve introduzione alla programmazione in rete Chi sono? Come contattarmi? Matteo Baldoni Dipartimento di Informatica Università degli Studi di Torino Corso Svizzera, 185 I-10149

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

RMI. Prova pratica di Sistemi Distribuiti:

RMI. Prova pratica di Sistemi Distribuiti: Prova pratica di Sistemi Distribuiti: RMI Di Nicola Milella Al fine di toccare con mano queste tecnologie e capirne i rispettivi pro e contro si è deciso di sviluppare un applicazione distribuita sfruttando

Dettagli

Linguaggi di Programmazione: Paradigmi di Programmazione

Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione Socket, Servlet e Remote Method Invocation Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149

Dettagli

Architettura Client-Server

Architettura Client-Server Architettura Client-Server 1. il client manda una richiesta al server 2. il server (in attesa) riceve la richiesta 3. il server esegue il servizio richiesto (generando un thread concorrente) 4. il server

Dettagli

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Un ambiente di esecuzione che gestisce o naming di oggetti, sicurezza, concorrenza, transazioni, persistenza, distribuzione oggetti (location

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File 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

Dettagli

Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi (modulo di Informatica II) Sistemi Operativi (modulo di Informatica II) La comunicazione tra processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2008-09 Sommario Processi cooperanti La comunicazione tra processi Necessità

Dettagli

Parte II: Reti di calcolatori Lezione 12

Parte II: Reti di calcolatori Lezione 12 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II: Reti di calcolatori Lezione 12 Giovedì 16-04-2015 1 Confronto architetture C/S e

Dettagli

Parte II: Reti di calcolatori Lezione 10

Parte II: Reti di calcolatori Lezione 10 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 10 Giovedì 3-04-2014 1 Reti per la distribuzione

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

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Applicazioni web. Parte 5 Socket

Applicazioni web. Parte 5 Socket Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Applicazioni web Parte 5 Michele Tomaiuolo tomamic@ce.unipr.it Protocolli Internet I computer

Dettagli

CdL MAGISTRALE in INFORMATICA A.A. 2014-2015. corso di Sistemi Distribuiti. Le Socket

CdL MAGISTRALE in INFORMATICA A.A. 2014-2015. corso di Sistemi Distribuiti. Le Socket CdL MAGISTRALE in INFORMATICA A.A. 2014-2015 corso di Sistemi Distribuiti 6. Strumenti per l IPC : dalle socket a RPC/RMI Prof. S.Pizzutilo Le Socket Una socket è una astrazione software rappresentante

Dettagli

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java.

Corso di Laurea in Informatica e Comunicazione Digitale. a.a. 2006-2007. Interazione Uomo-Macchina. Introduzione a Java. Corso di Laurea in Informatica e Comunicazione Digitale a.a. 2006-2007 Interazione Uomo-Macchina Introduzione a Java Seconda Parte Irene Mazzotta Giovanni Cozzolongo Vincenzo Silvetri 1 Richiami: Java

Dettagli

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell

Tecnologie Web L-A. Java e HTTP. Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi. Java e TCP/IP in a Nutshell Tecnologie Web L-A Java e HTTP Dario Bottazzi Tel. 051 2093541, E-Mail: dario.bottazzi@unibo.it, SkypeID: dariobottazzi Java e TCP/IP in a Nutshell! java.net.inetaddress: rappresenta un indirizzo IP e

Dettagli

Corso di Reti di Calcolatori LS

Corso di Reti di Calcolatori LS Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori LS CORBA - Implementazione Naming Service e Interface Repository Luca Foschini Anno accademico 2008/2009 Agenda CORBA

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

CORBA & DCOM. Gianpaolo Cugola cugola@elet.polimi.it http://www.elet.polimi.it/~cugola. La Object Management Architecture

CORBA & DCOM. Gianpaolo Cugola cugola@elet.polimi.it http://www.elet.polimi.it/~cugola. La Object Management Architecture CORBA & DCOM Gianpaolo Cugola cugola@elet.polimi.it http://www.elet.polimi.it/~cugola Sommario La Object Management Architecture CORBA La programmazione di applicazioni CORBA in Java CORBA vs. RMI DCOM

Dettagli

Operazioni di scrittura e lettura con periferici in linguaggio Java

Operazioni di scrittura e lettura con periferici in linguaggio Java Operazioni di scrittura e lettura con periferici in linguaggio Java Flussi logici (stream) di output Operazione di scrittura a monitor con uso di stream (flusso logico) di output RAM System.out.println

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

Corso di Reti di Calcolatori

Corso di Reti di Calcolatori Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che

Dettagli

CORBA ( Common Object Request Broker Architecture ) Le specifiche più conosciute sono UML e CORBA

CORBA ( Common Object Request Broker Architecture ) Le specifiche più conosciute sono UML e CORBA CORBA ( Common Object Request Broker Architecture ) consiste in un insieme di specifiche promosse e curate da OMG (Object Management Group). L OMG è un consorzio internazionale no-profit di industrie nel

Dettagli

Corso di Reti di Calcolatori. Datagrammi

Corso di Reti di Calcolatori. Datagrammi Corso di Reti di Calcolatori UNICAL Facoltà di Ingegneria a.a. 2002/2003 Esercitazione sul networking in Java (3 a parte) e comandi di rete paolo.trunfio@deis.unical.it 1 Datagrammi Le applicazioni che

Dettagli

Comunicazione nei Sistemi Distribuiti

Comunicazione nei Sistemi Distribuiti Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Comunicazione nei Sistemi Distribuiti Corso di Sistemi Distribuiti e Cloud Computing A.A. 2014/15 Valeria

Dettagli

Unità B3 Strutture di controllo

Unità B3 Strutture di controllo (A) CONOSCENZA TERMINOLOGICA Dare una breve descrizione dei termini introdotti: I/O su console Package Blocco di controllo Oggetto System.out Oggetto System.in Oggetto Tastiera Metodo readline() Strutture

Dettagli

Corsi di Reti di Calcolatori (Docente Luca Becchetti)

Corsi di Reti di Calcolatori (Docente Luca Becchetti) Corsi di Reti di Calcolatori (Docente Luca Becchetti) NOT : le soluzioni proposte sono volutamente sintetiche. Lo studente dovrebbe fare uno sforzo per risolvere i quesiti in modo autonomo, espandendo

Dettagli

INGEGNERIA DEL SOFTWARE

INGEGNERIA DEL SOFTWARE INGEGNERIA DEL SOFTWARE MIDDLEWARE Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio per

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

TFA 42 Sistemi e Reti di Calcolatori per la Didattica

TFA 42 Sistemi e Reti di Calcolatori per la Didattica Università degli Studi di Pisa 42 Sistemi e Reti di Calcolatori per la Didattica 29/03/2013 Laura Ricci Laura Ricci 1 DNS: DOMAIN NAME SYSTEM Persone: molti identificativi: o # CF, nome, # passaporto Host

Dettagli

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Introduzione ai connettori

Introduzione ai connettori Luca Cabibbo Architetture Software Dispensa ASW 810 ottobre 2014 Le relazioni tra elementi sono ciò che dà valore aggiunto ai sistemi. Eberhardt Rechtin 1 -Fonti [Shaw] Mary Shaw, Procedure Calls are the

Dettagli

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete

ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete ProgettAzione tecnologie in movimento - V anno Unità 4 - Realizzare applicazioni per la comunicazione in rete Compito in classe proposto Realizzare un applicazione C/S per trasferire al Client il contenuto

Dettagli

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008 UNIVERSITÀ DEGLI STUDI DI BRESCIA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA DIPARTIMENTO DI ELETTRONICA PER L'AUTOMAZIONE Il Pattern PROXY Ex presentazione realizzata

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Strutture di controllo Scittura di semplici applicazioni Java 2 1 Introduzione In molti casi le

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

Distributed Object Computing

Distributed Object Computing Evoluzione Architetturale Distributed omputing entralizzata Monolitica anni 60-70 Reti locali di P anni 80 Reti lient Server anni 80-90 Internet The network is the computer Paolo Falcarin Sistemi Informativi

Dettagli

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005 Sommario Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005 Introduzione.................................................................................. 1 SOAP........................................................................................

Dettagli

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

Dettagli

Chiamate a Procedure Remote

Chiamate a Procedure Remote FACOLTA DI SCIENZE MATEMATICHE, FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Corso di Sistemi Distribuiti Anno Accademico 2012/2013 Relazione sullo sviluppo di Chiamate a Procedure Remote

Dettagli

PROGRAMMARE IN JAVA VOLUME II

PROGRAMMARE IN JAVA VOLUME II Graziano Frosini Alessio Vecchio PROGRAMMARE IN JAVA VOLUME II PROGRAMMAZIONE DI RETE INTERFACCE GRAFICHE STRUTTURE DATI JVM JVM SOCKET SOCKET PROGRAMMARE IN JAVA Volume II POGRAMMAZIONE DI RETE INTERFACCE

Dettagli

Programmazione AA 2012 2013

Programmazione AA 2012 2013 Programmazione ad Oggetti AA 2012 2013 Contenuti del corso Modulo A Tecniche di programmazione Docente: Prof. Michele Bugliesi Modulo B Tecniche di progetto Docente: Prof. Alessandro Roncato Contenuti

Dettagli

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi

Connessioni di rete. Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi. PdR_09010 - Stefano Millozzi Connessioni di rete Progetto di reti di Calcolatori e Sistemi Informatici - Stefano Millozzi 1 Socket orientato alla connessione o non orientato alla connessione 2 Socket in astratto 3 Socket modalità

Dettagli

Applicazioni Web a tre livelli

Applicazioni Web a tre livelli Applicazioni Web a tre livelli Filippo Bosi Imola Informatica srl fbosi@imolinfo.it Abstract: In questa presentazione vengono illustrati, attraverso una serie di esempi di codice, concetti e nozioni pratiche

Dettagli

Java e Serializzazione dalla A all'xml di Leonardo Puleggi

Java e Serializzazione dalla A all'xml di Leonardo Puleggi dalla A all'xml di Leonardo Puleggi Indice generale Introduzione2 Grafo di Riferimenti 4 Attributi Transient.. 6 Metodi writeobject e readobject... 7 Ereditarietà e Serializzazione...10 Serializzazione

Dettagli

CORBA. CORBA facilita lo sviluppo di sistemi distribuiti fornendo

CORBA. CORBA facilita lo sviluppo di sistemi distribuiti fornendo CORBA CORBA facilita lo sviluppo di sistemi distribuiti fornendo Una infrastruttura per far comunicare oggetti in un sistema distribuito Un set di servizi utili Un supporto che permette ad applicazioni

Dettagli

Analisi, progettazione e implementazione di un repository di componenti distribuite in Java basato su JNDI.

Analisi, progettazione e implementazione di un repository di componenti distribuite in Java basato su JNDI. UNIVERSITÀ DEGLI STUDI DI ROMA LA SAPIENZA TESI DI LAUREA IN SCIENZE DELL INFORMAZIONE Analisi, progettazione e implementazione di un repository di componenti distribuite in Java basato su JNDI. Relatore:

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Informazioni generali Docente: Samuel Rota Bulò @email: srotabul@dais.unive.it Homepage: http://www.dais.unive.it/~srotabul/ ooprogramming2012.html

Dettagli

Laboratorio di Programmazione di Rete Corso A

Laboratorio di Programmazione di Rete Corso A Laboratorio di Programmazione di Rete Corso A Anno Accademico 2005-2006 Docente: Laura Ricci Assistente: Paolo Mori INFORMAZIONI UTILI Orario del Corso: Lunedì 9.00-11.00 Laboratorio Gruppo A 11.00-13.00

Dettagli

appunti delle lezioni Architetture client/server: applicazioni client

appunti delle lezioni Architetture client/server: applicazioni client Sistemi informativi applicati (reti di calcolatori): appunti delle lezioni Architetture client/server: applicazioni client 1 Architetture client/server: un esempio World wide web è un esempio particolarmente

Dettagli

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE

UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE IDROID 86 LAB pagg 12-13 23-04-2007 14:57 Pagina 12 I-D01 LAB UN CLONE IN CLIKE C-LIKE DI SEGUIVISIONE PROGRAMMAZIONE Alcuni comportamenti predefiniti attivabili su I-Droid01 sono facilmente riproducibili

Dettagli

Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II

Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II Appunti dei corsi di Programmazione di Rete Sistemi di elaborazione: Reti II PROF. G. BONGIOVANNI 0) INTRODUZIONE AL LINGUAGGIO JAVA PER PROGRAMMATORI C++...2 0.1) Caratteristiche principali... 2 0.1.1)

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2)

Gestione di errori e situazioni eccezionali. Gestione delle eccezioni. Gestione tradizionale di errori e situazioni eccezionali (2) Gestione di errori e situazioni eccezionali Gestione delle eccezioni Una procedura (utente o di libreria) deve poter segnalare l impossibilità di produrre un risultato significativo o la propria terminazione

Dettagli

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Il paradigma RPC può essere facilmente esteso al modello a oggetti distribuiti Java RMI (Remote Method Invocation): RPC in Java RMI fornisce

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

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 Installazione SOFTWARE JDK ECLIPSE 03/03/2011 2 ALGORITMI E PROGRAMMI PROBLEMA ALGORITMO PROGRAMMA metodo risolutivo linguaggio di

Dettagli

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa.

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa. Introduzione alla tecnologia JMX 1 Viene analizzata l architettura sottostante le Java Managment Extensions (JMX) mostrandone un utilizzo applicativo e analizzando altri possibili scenari d uso di Ivan

Dettagli

Scrivere un programma in Java

Scrivere un programma in Java Programmare in JAVA Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA uff. 0577 234850 - interno: 7102 Stanza 119 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/

Dettagli

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario. Programmazione e laboratorio: introduzione al corso Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione per

Dettagli

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento

Parcheggio.rtf 1/8 6 gennaio 2009. Prova di programmazione: parcheggio a pagamento Parcheggio.rtf 1/8 6 gennaio 2009 Prova di programmazione: parcheggio a pagamento Si sviluppi il codice per la gestione di un parcheggio a pagamento mediante la classe Parcheggio, che ospita le auto rappresentate

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli