LA PROGRAMMAZIONE RMI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "LA PROGRAMMAZIONE RMI"

Transcript

1 Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Remote Method Invocation Prof. Franco Zambonelli A.A LA PROGRAMMAZIONE RMI Programmare clienti e servitori con le Socket è completamente diverso dal programmare clienti e servitori secondo la programmazione ad oggetti normale: Con gli oggetti Counter c = new Counter(); c.inc(); modo per richiedere un servizio all oggetto contatore, Con le socket, il cliente deve fare: Socket s = new Socket( pippo.com, 34); // get input stream.etc.. // invia I dati // ricevi le risposte s.close() E il servizio del server: ss = s.accept(); // get input e output stream //ricevi I dati //svolgi il servizio //invia le risposte //ss.close(); Sono metodi completamente diversi!!! Franco Zambonelli PROGRAMMAZIONE RMI 1 Franco Zambonelli PROGRAMMAZIONE RMI 2 REMOTE METHOD INVOCATION (RMI) L idea è quella di poter chiedere a servizi ad oggetti sulla rete COME SE FOSSERO LOCALI In pratica, l idea è quella di creare la possibilità di avere accesso agli oggetti che sono su nodi diversi della rete Internet, e poter avere riferimenti a questi oggetti, per poi poter chidere loro servizi (cioè la esecuzione dei loro metodi) come se fossero oggetti normali. OggettoOvunque cc; cc.metodo(); Si usano gli strumenti di RMI Permettono di usare oggetti remoti (cioè su altri nodi della rete Internet) come se fossero oggetti come tutti gli altri, senza doversi preoccupare della realizzazione dei protocolli, della connessione, degli stream di input e output, etc. etc. Gli unici problemi aggiuntivi sono: il cliente deve in qualche modo trovare un riferimento all oggetto remoto (è diverso dal creare l oggetto o dal farsi dare un riferimento passato come parametro) l oggetto che vuole rendere i suoi servizi invocabili da rete deve esplicitamente dire che vuole fare ciò e deve rendersi reperibile RMI e il Concetto di Middleware Potremmo considerare RMI come un ulteriore livello nella pila ISO-OSI, che si pone tra il livello di trasporto e il livello di servizi. Tali servizi RMI includono: - la possibilità per un oggetto di rendersi disponibile (con alcuni dei suoi metodi) a essere invocato da remote - la possibilità di recuperare riferimenti ad oggetti remoti - la possibilità di invocare metodi su oggetti remoti come se fossero locali Spesso, si parla di questi servizi (che non sono proprio coerenti con il modello service access point dello stack ISO/OSI) come servizi di middleware, qualcosa che si pone in the middle tra: - OSware e - SoftWare Servizi Applicativi Servizi RMI (Middleware) Servizi di Trasporto Servizi Livello I-II-III Franco Zambonelli PROGRAMMAZIONE RMI 3 Franco Zambonelli PROGRAMMAZIONE RMI 4

2 ARCHITETTURA RMI (1) Architettura generale adottata anche da sistemi di middleware diversi (p.e., CORBA o Microsoft.NET) Esiste un programma speciale che agisce da Naming Service, come una specie di yellow pages in Java è il RMI Registry - registra i nomi e i riferimenti degli oggetti i cui metodi possono essere invocati da remoto ( nella figura) - tali oggetti devono registrarsi, fare il bind presso il naming service, con un nome pubblico, nella figura - altri oggetti possono richiedere, fare il lookup di oggetti registrati chiedendo, a partire dal nome pubblico, un riferimento all oggetto O1 (invoker) 2) lookup Naming Service RMI registry 1) binding (invoked) ARCHITETTURA RMI (2) Quando il Naming Service riceve una richiesta di lookup, corrispondente a un oggetto che lui conosce (nella figura, il Naming Service sa che l oggetto di nome pubblico corrisponde all oggetto, allora: - viene generato un oggetto virtuale, denominato proxy o anche skeleton, che viene inviato presso il nodo di colui che aveva richiesto il lookup (O1 in figura) - dal punto di vista di O1, esso percepisce il proxy di come un normale riferimento a un oggetto locale In verità, quando O1 chiede un servizio a, lo chiede al suo proxy che: - senza che O1 se ne accorga, stabilisce una connessione Socket TCP con il nodo dove c e vero - in tale nodo di, un componente associato a, detto stub riceve la connessione e la richiesta di servizio, e provvede a invocarla lui su vero - quando vero risponde, lo stub manda la risposta indietro al proxy, il quale poi risponde a O1 come se fosse stato realmente lui a eseguire il servizio 3) proxy to provided Stub O1 (invoker) 2) lookup Naming Service RMI registry 2) binding (invoked) Franco Zambonelli PROGRAMMAZIONE RMI 5 Stub 3) proxy to provided Franco Zambonelli PROGRAMMAZIONE RMI 6 DEFINIZIONE METODI RMI USO SERVIZI RMI Per creare un metodo/servizio RMI è necessario che sulla macchina server si operino i seguenti passi: 1. Definizione di un interfaccia che specifichi i metodi/servizi invocabili da remoto; tale interfaccia deve ereditare dall interfaccia Remote. 2. Avviare il registry RMI, che permette di pubblicare i metodi/servizi di questo tipo; si lancia <start rmiregistry> da linea di comando. RMI Registry agisce come una specie di pagine gialle della rete. 3. Definizione della classe che implementa i metodi/servizi vero e proprio; tale classe deve implementare l interfaccia precedente (cioè definirne il codice dei metodi) ed ereditare dalla classe UnicastRemoteObject. Nel suo codice deve anche registrare (si dice più precisamente fare il binding ) il metodi/servizio presso l RMI registry: in pratica deve pubblicare sulle pagine gialle il fatto che il metodo/servizio esiste ed è disponibile. Si dovrà stabilire e decidere un nome da assegnare (bind) al servizio. 4. Compilare la classe del punto precedente anche con il compilatore <rmic nome_classe>. Questo genera altre due file.class (nome_classe_stub.class e nome_classe_skel.class) che si occupano dei dettagli di basso livello della comunicazione client/server realizzano lo stub e il proxy rispettivamente 5. Avviare l applicazione che istanzia la classe server creata e registra i metodi/servizi nell RMI registry Le applicazioni client che vogliono usufruire del servizio di invocazione remota devono: 1. Conoscere il nome con cui è stato pubblicato sul registry il servizio che si richiede 2. Richiedere al registry di ottenere un riferimento all oggetto che interessa operazione di lookup 3. Tale interfaccia è quella definita in precedenza ed elenca i metodi invocabili Per concretizzare i concetti e le fasi implementative fin qui descritte si presentano alcuni esempi. Franco Zambonelli PROGRAMMAZIONE RMI 7 Franco Zambonelli PROGRAMMAZIONE RMI 8

3 ESEMPIO INTRODUTTIVO:Counter RMI Definiamo l'interfaccia che tale contatore dovrà realizzare in questo modo: import java.rmi.*; public interface ContatoreInterface extends Remote { public int getval() throws RemoteException; public void inc() throws RemoteException; // notiamo l'eccezione che si puo' generare E quindi definiamo il nostro contatore, facendogli implementare l'interfaccia di cui sopra e facendogli ereditare da UnicastRemoteException: Counter RMI (2) Compilare il contatore: c:> javac ContatoreServer.java c:> rmic ContatoreServer Lanciare RMIRegistry C:> rmiregistry import java.rmi.registry.*; import java.net.* ; // tutte queste import sono necessarie public class ContatoreServer extends UnicastRemoteObject implements ContatoreInterface { int valore; public ContatoreServer() throws RemoteException {valore =0; // notiamo l'eccezione che si puo' generare // in fase di costruzione public int getval() {return valore; public void inc() {valore++; Franco Zambonelli PROGRAMMAZIONE RMI 9 Franco Zambonelli PROGRAMMAZIONE RMI 10 Counter RMI (3) Counter RMI (4) Il main che crea il contatore e ne pubblica il nome: import java.rmi.registry.*; import java.net.* ; // soliti import public class AvvioServer { public static void main (String[] args) throws RemoteException, AlreadyBoundException, MalformedURLException { // notare le eccezioni da gestire // creiamo l'oggetto security manager // faremo sempre cosi' per dare // accesso a tutti indiscriminatamente ContatoreServer c = new ContatoreServer(); // creiamo il contatore c Naming.bind(" /mioconta", c); // assegniamo il nome al nostro contatore c // cioé facciamo il "binding" // in questo caso, il nostro oggetto e' al // nodo con indirizzo IP // ed ha come nome "mioconta" Ecco un client, da compilarsi e eseguirsi normalmente import java.rmi.registry.*; import java.net.* ; public class ContatoreClient { public static void main (String[] args) throws Exception { // notiamo che invece di specificare tutti // i tipi di eccezione, possiamo dire // genericamente "Exception" // sistemiamo al solito modo le politiche // di sicurezza ContatoreInterface cc = (ContatoreInterface) Naming.lookup(" /mioconta"); // facciamo l'operazione di lookup // e recuperiamo un riferimento all'oggetto // attraverso la interfaccia // dobbiamo sapere in che nodo è e come si chiama!!! // e quindi usiamo l'oggetto come se // fosse un normalissimo contatore cc.inc(); System.out.println("Contatore " + cc.getval()); Franco Zambonelli PROGRAMMAZIONE RMI 11 Franco Zambonelli PROGRAMMAZIONE RMI 12

4 UNA NOTA SULLA SICUREZZA IN RMI Java RMI non è necessariamente sicuro. Infatti, io potrei trasferire tramite parametri su invocazione RMI degli oggetti da un computer all altro - dynamic class loading: un oggetto trasferito via RMI potrebbe non avere il codice della classe sul computer sul quale viene traferito.in questo caso, Java provvede a trasferire ( loading ) dinamicamente il codice della classe da un computer all altro - questo introduce problemi di sicurezza in quanto le nuove classi potrebbero fare azioni deleterie Vedremo in seguito come in Java sia possibile gestire politiche di sicurezza (tramite il SecurityManager) che dicono cosa il codice delle classi (cioè gli oggetti di certe classi) possono e non possono fare. Nei nostri esempi, per ora abbiamo dato accesso a tutti indiscriminatamente. Però, su alcuni sistemi Windows la gestione della sicurezza nel modo minimale che abbiamo fatto vedere potrebbe non funzionare. Se ciò succede, memorizzate nella cartella che contiene i vostri programmi un semplice file di nome policy con il seguente contenuto: grant { // Allow everything for now permission java.security.allpermission; ; e quindi lanciate i vostri programmi (sia la parte server che la parte client) con il seguente comando: java -Djava.security.policy=policy NomeClasse I ) Esempio: Un server matematico Supponiamo di avere a disposizione una macchina molto performante, accessibile in rete da altre postazioni meno potenti. Si può pensare di far svolgere a questa macchina delle funzioni di calcolo matematico e di rendere accessibili tali funzioni alle postazioni meno potenti. Possiamo realizzare il tutto scrivendo un applicazione da far girare sul server e un applicazione da far girare sui client. Se scriviamo le applicazioni in Java possiamo sfruttare la possibilità di invocazione remota di metodi (RMI) Creazione dell interfaccia del server RMI: import java.rmi.*; public interface MathServerInterface extends Remote{ float moltiplica (float x, float y) throws RemoteException; float somma (float x, float y) throws RemoteException; Franco Zambonelli PROGRAMMAZIONE RMI 13 Franco Zambonelli PROGRAMMAZIONE RMI 14 Implementazione dell interfaccia del server RMI: import java.rmi.* import java.rmi.registry.*; import java.net.* ; public class MathServer extends UnicastRemoteObject implements MathServerInterface{ I )ESEMPIO RMI: lato Server Inoltre per rendere il servizio completamente attivo è necessario eseguire altre due operazioni: public float somma(float x,float y){return (x+y); public float moltiplica(float x,float y){return (x*y); public MathServer() throws RemoteException{ /* il main è nella stessa classe!!! */ public static void main (String[] args) throws Exception { MathServer server = new MathServer(); Naming.bind( PC_name/MathServer,server); System.out.println( Server matematico pronto ); compilare la classe MathServer con il comando <rmic> (dopo averla compilata con javac). Questo genera i file MathServer_Stub.class e MathServer_Skel.class prima di eseguire l applicazione avviare il registro dei servizi RMI con il comando <start rmiregistry>. Questi ultimi passaggi, anche se possono apparire macchinosi, consentono di delegare al meccanismo dell RMI una grande mole di dettagli implementativi, altrimenti difficilmente gestibili dal programmatore l RMISecurityManager è necessario ai controlli sulla sicurezza degli accessi alla macchina il nome del servizio che si è installato sul server è PC_name/MathServer, dove PC_name è il nome di rete della macchina server Franco Zambonelli PROGRAMMAZIONE RMI 15 Franco Zambonelli PROGRAMMAZIONE RMI 16

5 I )ESEMPIO RMI: lato Client I client devono poter utilizzare il servizio reso disponibile dal server; per fare questo è necessario e sufficiente che essi conoscano il nome del servizio stesso e l interfaccia che esso implementa: nel nostro caso rispettivamente PC_name/MathServer e MathServerInterface. import java.rmi.registry.*; public class UsaMathServer{ public static void main(string[] args) throws Exception{ New RMISecurityManager()); //recupero del servizio remoto MathServerInterface mathserver = (MathServerInterface)Naming.lookup( PC_name/MathServer ); //uso del server matematico // è come se fosse un oggetto locale!!! float f = mathserver.somma(12.3, 16.96); // II )ESEMPIO RMI: Server di calcolo generalpurpose (1) Nell esempio precedente il server metteva a disposizione la propria potenza di calcolo per l esecuzione di alcuni metodi specifici: il codice di tali metodi era specificato dal lato del server. Sfruttando la tecnologia OO di Java è possibile implementare un server di calcolo general-purpose, in grado di eseguire un qualsiasi lavoro (task), richiestogli dai client. Il grande vantaggio di questo è non dover specificare dal lato server il codice dei metodi, ma permettere ai client di fornire l intero task, con il relativo codice di esecuzione. Per realizzare questo è necessario definire anche l interfaccia che devono implementare i task da eseguire: import java.io.* ; public interface Task extends Serializable{ Object execute(); Quindi, in generale, un task è eseguito dal proprio metodo execute() e restituisce un Object. Un task è serializzabile perché deve essere passato dal client al server Franco Zambonelli PROGRAMMAZIONE RMI 17 Franco Zambonelli PROGRAMMAZIONE RMI 18 II )ESEMPIO RMI: Server di calcolo generalpurpose (2) Anche l interfaccia remota del servizio RMI acquisisce generalità rispetto all esempio precedente, e compendia un unico metodo generico: public interface Compute extends Remote{ Object executetask(task t) throws RemoteException; II )ESEMPIO RMI: Server di calcolo generalpurpose (3) La classe server del servizio RMI ha struttura analoga, ma delega l esecuzione del task al task stesso: public class ComputeEngine extends UnicastRemoteObject implements Compute{ public ComputeEngine() throws RemoteException{ public Object executetask(task t){ return t.execute(); public static void main(sting[] args) throws Exception{ ComputeEngine engine = new ComputeEngine(); Naming.bind( PC_name/Compute, engine); System.out.println( Compute Engine pronto ); Dopo aver compilato questi file con <javac> e quest ultima classe anche con <rmic>, si può far partire il registry RMI (<start rmiregistry>) ed avviare l applicazione che crea e registr ail servizio (in pratica la classe ComputeEngine) Franco Zambonelli PROGRAMMAZIONE RMI 19 Franco Zambonelli PROGRAMMAZIONE RMI 20

6 II )ESEMPIO RMI: utilizzo del Server di calcolo general-purpose(1) Supponiamo di avere un operazione computazionalmente onerosa da eseguire, ad esempio il calcolo di una serie di coefficienti per lo studio di un fenomeno meteorologico. Dato che il server non può conoscere l algoritmo per calcolare tali coefficienti, definiamo un task che incapsuli dati e algoritmo per la risoluzione di questo problema. Definizione del task: public class Meteo implements Task{ //. // variabili //. public Meteo (float[] input){ //calcolo del risultato public Object execute(){ // // return risultato; II )ESEMPIO RMI: utilizzo del Server di calcolo general-purpose(2) L applicazione client che chiede al server di eseguire i task è piuttosto semplice: public class UsaEngine{ public static void main(string[] args) throws Exception{ // acquisizione degli input //.. //recupero del servizio remoto Compute comp =(Compute) Naming.lookup( PC_name/Compute ); //preparazione di un task Meteo task = new Meteo(input); //esecuzione del task Float[] res = (Float[])comp.executeTask(task); // Franco Zambonelli PROGRAMMAZIONE RMI 21 Franco Zambonelli PROGRAMMAZIONE RMI 22

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

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

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

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

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

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

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

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

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

RETI DI CALCOLATORI Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione

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

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

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

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

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

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

Java: loading dinamico e reflection

Java: loading dinamico e reflection Java: loading dinamico e reflection Scopo del corso integrativo: Presentare le caratteristiche avanzate di Java che lo rendono un linguaggio molto flessibile pur senza rinunciare ai vantaggi di un typechecking

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

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

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

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

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Eccezioni L esistenza di

Dettagli

Introduzione alla Programmazione in Java attraverso un esempio commentato

Introduzione alla Programmazione in Java attraverso un esempio commentato Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria

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

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

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

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

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

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente

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

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

domenica 9 giugno 13 Serializzazione

domenica 9 giugno 13 Serializzazione Serializzazione A cosa serve? Ad ottenere una rappresentazione di una struttura dati che possiamo memorizzare, trasmettere via rete Cosa possiamo serializzare? OK NO Tipi primitivi, Riferimenti stringhe

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

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

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

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

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

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Oggetti Composti (1) Oggetti Composti (2)

Oggetti Composti (1) Oggetti Composti (2) Oggetti Composti () Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi dei riferimenti ad oggetti di qualche classe

Dettagli

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: Il Software L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software: un insieme di programmi che permettono di trasformare un insieme di circuiti

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

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 Eccezioni Categorie di eccezioni checked unchecked Gestione delle eccezioni Clausola throws Costrutto try - catch - finally Comando

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti 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

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

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

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Fondamenti VBA. Che cos è VBA

Fondamenti VBA. Che cos è VBA Fondamenti VBA Che cos è VBA VBA, Visual Basic for Application è un linguaggio di programmazione, inserito nelle applicazioni Office di Microsoft (Ms Word, Ms Excel, Ms PowerPoint, Visio). VBA è una implementazione

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

Programmazione Java: Polimorfismo

Programmazione Java: Polimorfismo Programmazione Java: Polimorfismo romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Polimorfismo» Upcasting» Selezione dei metodi» Comportamento dei metodi polimorfi dentro i costruttori»

Dettagli

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1

SCD. Sistemi distribuiti: il modello Java RMI. UniPD - SCD 2011/12 - Sistemi Concorrenti e Distribuiti 1. Architettura del modello 1 Il modello Java RMI Anno accademico 2011/12 Sistemi Concorrenti e Distribuiti Tullio Vardanega, tullio.vardanega@math.unipd.it SCD Architettura del modello 1 L oggetto remoto è l unità di distribuzione

Dettagli

Programmazione in Java. Indipendenza dalla piattaforma. Indipendenza dalla piattaforma. Autore: Roberto Fabbrica Diapo 1.

Programmazione in Java. Indipendenza dalla piattaforma. Indipendenza dalla piattaforma. Autore: Roberto Fabbrica Diapo 1. 1 Programmazione in Java Java è un linguaggio di programmazione orientato agli oggetti ed indipendente dalla piattaforma. Orientato agli oggetti: segue i paradigmi della programmazione orientata agli oggetti

Dettagli

Esempio: Costruttori ed ereditarietà

Esempio: Costruttori ed ereditarietà Esempio: 1 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il costruttore di default (quello senza parametri) Se in un costruttore

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

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

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

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio)

Riferimenti ad oggetti: Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro. Riferimenti ad oggetti: (Esempio) Fondamenti di Informatica L-B Esercitazione n 4 Java: I/O, Costruttori e altro A.A. 2005/06 Tutor: Loris Cancellieri loris.cancellieri@studio.unibo.it Riferimenti ad oggetti: Cosa si può fare con i riferimenti?

Dettagli

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei

Dettagli

Il linguaggio Java. Remote Method Invocation (RMI)

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

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Architetture di rete. 4. Le applicazioni di rete

Architetture di rete. 4. Le applicazioni di rete Architetture di rete 4. Le applicazioni di rete Introduzione L avvento di tecnologie (hw, sw, protocolli) di rete avanzate ha permesso la nascita di architetture software molto evolute che permettono lo

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

Sistema operativo & file system 1

Sistema operativo & file system 1 Il software (sw) Software di sistema e file system Lezione 1b L esecuzione di programmi è lo scopo di un elaboratore I programmi sono algoritmi codificati in un particolare linguaggio di programmazione

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

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

IL CONCETTO DI CLASSE

IL CONCETTO DI CLASSE IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi

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

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

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

Sicurezza in Java. Evoluzione dei modelli di sicurezza in Java Architettura di autorizzazione nel JDK 1.2

Sicurezza in Java. Evoluzione dei modelli di sicurezza in Java Architettura di autorizzazione nel JDK 1.2 Sicurezza in Java Evoluzione dei modelli di sicurezza in Java Architettura di autorizzazione nel JDK 1.2 1 Java Virtual Machine Loading Linking Initializing Verification Preparation Resolution caricamento

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

Prova d Esame Compito A

Prova d Esame Compito A Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

Debug di un programma

Debug di un programma Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal

Dettagli

Laboratorio di Informatica 4 Novembre 2005

Laboratorio di Informatica 4 Novembre 2005 Laboratorio di Informatica 4 Novembre 2005 Marco Iarusso Programmazione Java Ringraziamenti Parte della presente dispensa materiale didattico è derivato dalla dispensa prodotta da Luca Cabibbo Dip. Informatica

Dettagli

Asserzioni in Java fondamenti

Asserzioni in Java fondamenti Asserzioni in Java fondamenti Cosa è un asserzione? Una assertion è una espressione booleana che deve essere true se e solo se il codice sta funzionando correttamente. Se l asserzione risulta falsa, viene

Dettagli

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3 Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali

Dettagli

Uso di metodi statici. Walter Didimo

Uso di metodi statici. Walter Didimo Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un

Dettagli

Esercitazione n 1. Obiettivi

Esercitazione n 1. Obiettivi Esercitazione n 1 Obiettivi Introduzione all utilizzo di Java Development Kit (JDK) versione 1.3 Sviluppare programmi Java tramite linea di comando Es: javac, java, jdb, javadoc Primo esempio di programma

Dettagli

Ereditarietà e Polimorfismo

Ereditarietà e Polimorfismo Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende

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

Lab 1: Java Multithreading

Lab 1: Java Multithreading Dept. of Computer Science Lab 1: Java Multithreading Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Outline Programmazione multithreading

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

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.1 Programmazione base 1 Prerequisiti Saper scrivere algoritmi elementari Tecniche elementari di sviluppo di una applicazione Modalità a riga di comando Utilizzo

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 Native Interface Appunti

Java Native Interface Appunti Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per

Dettagli

Il calcolatore. Architettura di un calcolatore (Hardware)

Il calcolatore. Architettura di un calcolatore (Hardware) Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti

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

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

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori 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

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

perror: individuare l errore quando una system call restituisce -1

perror: individuare l errore quando una system call restituisce -1 perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente

Dettagli

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da

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