10. Invocazione di Metodi Remoti

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "10. Invocazione di Metodi Remoti"

Transcript

1 10. Invocazione di Metodi Remoti Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Programmazione Distribuita. Vi.ttorio Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota 2 A.A Università di Salerno 1

2 Organizzazione della lezione Programmazione Distribuita. Vi.ttorio Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota 3 Programmazione Distribuita. Vi.ttorio Modelli di programmazione per il calcolo distribuito Chiamata a procedura remote (Remote Procedure Call) Derivato dalla programmazione procedurare Invocazione di metodi remoti (Remote Method Invocation) Derivato dalla programmazione orientata ad oggetti Programmazione basata su eventi Notifica di eventi che siano originati in remoto 4 A.A Università di Salerno 2

3 Interfacce Programmazione Distribuita. Vi.ttorio Definizione delle possibili interazioni con un modulo del programma verso gli altri moduli Siano essi oggetti oppure procedure Specifica variabili e procedure accessibili Service interface (RPC) In client-server, specifica tipi di input/output Remote interface (RMI) Metodi e argomenti Differenza: oggetti come parametri 5 Interface Definition Language Programmazione Distribuita. Vi.ttorio Servono per la specifica della interfaccia Possibile un inserimento all interno del linguaggio Come con Java Remote Method Invocation Oppure piattaforma neutrale rispetto ai linguaggi IDL di Corba IDL per RPC in OSF Distributed Computing Environment DCOM IDL 6 A.A Università di Salerno 3

4 Oggetti Distribuiti (1) Programmazione Distribuita. Vi.ttorio Modello client-server Interazione chiamando metodi dal client verso un server che gestisce le chiamate di metodo per l oggetto Remote Object Reference Permette il riferimento ad un oggetto remoto Remote Interface Indica quali metodi sono invocabili remotamente A remote invocation B local C invocation local E invocation local invocation D remote invocation F 7 Oggetti Distribuiti (2) Programmazione Distribuita. Vi.ttorio Garbage collection distribuita in generale, effettuato in cooperazione con quello locale basato sulla conta dei riferimenti remoti attivi in alcuni sistemi si introduce il lease riferimento remoto a termine Eccezioni introduzione di eccezioni remote peculiare rispetto alle eccezioni usuali supporto per il trattamento a livello applicazione 8 A.A Università di Salerno 4

5 Organizzazione della lezione Programmazione Distribuita. Vi.ttorio Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota 9 Trasparenza: un dibattito Programmazione Distribuita. Vi.ttorio Lo scopo di RPC (Remote Procedure Call) nessuna distinzione nella sintassi trasmissione e marshalling completamente trasparente Una grande idea: computazione locale = computazione distribuita Forse non proprio una grande idea una chiamata (invocazione) remota può fallire per tanti motivi in più, rispetto alla chiamata (invocazione) locale 10 A.A Università di Salerno 5

6 Computazione locale e distribuita Programmazione Distribuita. Vi.ttorio Criterio utilizzato per la distinzione computazione locale: programmi che condividono lo stesso spazio di indirizzamento computazione distribuita: programmi che usano diversi spazi di indirizzamento (possibilmente su host diversi) Una visione unificante: due le strade possibili un paradigma di computazione che fa apparire tutti gli oggetti come locali un paradigma di computazione che fa apparire tutti gli oggetti come remoti (inutilmente complicata per il programmatore) A note on Distributed Computing di Waldo, Wyant, Wollrath e Kendall (Sun) (1994) 11 Una visione unificante (?) - 1 Programmazione Distribuita. Vi.ttorio Computazione locale o distribuita, la metodologia di programmazione object-oriented non fa distinzioni Un oggetto viene definito in termini di interfacce (comportamento) e classi (implementazione) La implementazione di un oggetto è nascosta così come la natura dell oggetto: locale o remoto Una motivazione: la semantica del comportamento non cambia 12 A.A Università di Salerno 6

7 Una visione unificante (?) - 2 Programmazione Distribuita. Vi.ttorio I principi di questa visione unificante : la progettazione OO per una applicazione dà origine ad una sola soluzione naturale (senza curarsi del contesto in cui la applicazione viene eseguita) performance e gestione malfunzionamenti sono legati alla fase implementativa (e quindi non alla fase progettuale) l interfaccia di un oggetto risulta indipendente dal contesto in cui viene usato l oggetto Commenti? questa visione non è vera, anche se sarebbe bello se 13 Gli ostacoli alla unificazione dei paradigmi - 1 Programmazione Distribuita. Vi.ttorio Latenza da 3 a 5 volte in ordine di grandezza Problemi di performance Lo sviluppo tecnologico può velocizzare le chiamate remote ma lo stesso miglioramento si otterrà dalle chiamate locali Una differenza ovvia ma non la principale: spesso viene assunto che è la unica differenza 14 A.A Università di Salerno 7

8 Gli ostacoli alla unificazione dei paradigmi - 2 Programmazione Distribuita. Vi.ttorio Accesso alla memoria Puntatori in uno spazio di indirizzamento locale non sono validi in un altro spazio di indirizzamento remoto Se si vuole che il sistema renda trasparente questa differenza l accesso deve essere completamente trasparente (niente puntatori dal paradigma, solo riferimenti) Ma, inoltre, si deve fornire traduzioni a riferimenti incrociati: A riferisce a B, ma A viene usato in remoto 15 Gli ostacoli alla unificazione dei paradigmi - 3 Programmazione Distribuita. Vi.ttorio Partial failures e concorrenza Nel calcolo distribuito un malfunzionamento di solito non rende inutilizzabile il sistema I malfunzionamenti devono essere specificati nella interface non solo nella implementazione La concorrenza è naturale nel distribuito nel multithread l ambiente è circoscritto, sotto completo controllo del programmatore, ed è disponibile l aiuto di gestori centralizzati (S.O.) 16 A.A Università di Salerno 8

9 C è differenza eccome! Programmazione Distribuita. Vi.ttorio La fusione dei modelli comporta: un modello complesso (se tutto è considerato distribuito) un modello che permette di realizzare sistemi inaffidabili (se tutto è considerato locale) Esistono differenze di cui bisogna tener conto nella progettazione non solo nella implementazione Che il programmatore non osi unire ciò che è separato 17 Organizzazione della lezione Programmazione Distribuita. Vi.ttorio Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota 18 A.A Università di Salerno 9

10 Chiamate di metodi di oggetti remoti Programmazione Distribuita. Vi.ttorio L uso delle primitive di comunicazione TCP/IP è efficiente ma scomodo e poco produttivo quando si devono utilizzare i metodi messi a disposizione dagli oggetti Necessario scrivere esplicitamente il trattamento delle comunicazioni definizione di un protocollo di comunicazione parsing del comando gestione degli errori etc. etc. 19 Un esempio di soluzione (senza RMI) Programmazione Distribuita. Vi.ttorio Senza infrastrutture che permettono la chiamata di metodi remoti (Remote Method Invocation) Un esempio semplice: un oggetto PersonServer che contiene nome, luogo e anno di nascita un oggetto PersonClient che ne usa i metodi per accedere ai valori delle variabili di istanza Un programma Person in versione locale (Client e Server sono sulla stessa JVM) in versione remota 20 A.A Università di Salerno 10

11 Person locale: PersonServer Programmazione Distribuita. Vi.ttorio public class PersonServer { public PersonServer(String n, String p, int y) { name = n; place = p; year = y; String getname () { return name; String getplace () { return place; int getyear () { return year; // variabili di istanza String name; String place; int year; Costruttore Metodi di accesso nome luogo di nascita anno di nascita Variabili di istanza 21 Person locale: PersonClient Programmazione Distribuita. Vi.ttorio public class PersonClient { public static void main(string args[ ]) { PersonServer person = new PersonServer("Vittorio", "Napoli", 1964); System.out.println ("Nome:" +person.getname() ); System.out.println ("Luogo di Nascita:" + person.getplace() ); System.out.println ("Anno di Nascita:" + person.getyear() ); Creazione oggetto (locale) riferimento Uso dei metodi dell oggetto nome luogo di nascita anno di nascita 22 A.A Università di Salerno 11

12 Person remoto: struttura Programmazione Distribuita. Vi.ttorio Si creano due classi che servono per la comunicazione stub : lato client serve a offrire i metodi del server verso il client gestisce la comunicazione verso lo skeleton skeleton: lato server chiama i metodi del server come richiesto dallo stub restituisce i valori di ritorno allo stub Come fa il client a conoscere cosa offre lo stub? sia stub che il server implementano una interfaccia comune che indica i metodi offerti dal server 23 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 24 A.A Università di Salerno 12

13 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 25 Person remoto: PersonServer Programmazione Distribuita. Vi.ttorio public class PersonServer implements Person { public PersonServer(String n, String p, int y) { name = n; place = p; year = y; String getname () { return name; String getplace () { return place; int getyear () { return year; // variabili di istanza String name; String place; int year; Identico a PersonServer locale tranne che nella implementazione della interfaccia Costruttore Metodi di accesso nome luogo di nascita anno di nascita Variabili di istanza 26 A.A Università di Salerno 13

14 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 27 Person remoto: interface Person Programmazione Distribuita. Vi.ttorio public interface Person { public String getname() throws Throwable; public String getplace() throws Throwable; public int getyear() throws Throwable; Interfaccia usata sia dallo Stub che dal server Metodi di accesso nome luogo di nascita anno di nascita 28 A.A Università di Salerno 14

15 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 29 Person remoto: SimplePersonClient Programmazione Distribuita. Vi.ttorio public class SimplePersonClient { public static void main(string args[ ]) { try { Person person = new Person_Stub(args[0]); System.out.println ("Nome:" + person.getname()); System.out.println ("Luogo Nascita:" + person.getplace()); System.out.println ("Anno Nascita:" + person.getyear()); catch (Throwable t) {t.printstacktrace(); // end main Host del server sulla linea di comando Creazione di uno stub variabile di reference di tipo Person Chiamate dei metodi sullo stub nome luogo di nascita anno di nascita 30 A.A Università di Salerno 15

16 Protocollo tra Stub e Skeleton Programmazione Distribuita. Vi.ttorio Lo Stub implementa tutti i metodi offerti dalla interface Person Il costruttore apre un socket verso lo skeleton Per ogni metodo usa lo stream in output per scrivere il nome del metodo da fare eseguire attende il valore restituito e lo restituisce al Client Lo skeleton riconosce il metodo da eseguire effettua le chiamate sul server restituisce il valore di ritorno 31 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 32 A.A Università di Salerno 16

17 Person remoto: Person_Stub (1) Programmazione Distribuita. Vi.ttorio import java.io.*; import java.net.*; public class Person_Stub implements Person { public Person_Stub(String host) throws Throwable{ socket = new Socket (host, 9000); out= new ObjectOutputStream( socket.getoutputstream()); in= new ObjectInputStream( socket.getinputstream()); public String getname () throws Throwable { out.writeobject("getname"); out.flush(); return (String) in.readobject(); // continua Implementa Person Costruttore: apre un socket su host dello skeleton crea input ed output ObjectStream Metodo getname() scrive il nome del metodo sul socket restituisce la stringa restituita (letta dal socket) 33 Person remoto: Person_Stub (2) Programmazione Distribuita. Vi.ttorio public String getplace () throws Throwable { out.writeobject("getplace"); out.flush(); return (String) in.readobject(); public int getyear () throws Throwable { out.writeobject("getyear"); out.flush(); return in.readint(); public void close () { try { socket.close(); catch (IOException e) {System.out.println ("Chiusura socket!"); // variabili di istanza Socket socket; ObjectOutputStream out; ObjectInputStream in; Metodo getplace() Metodo getyear() Metodo close() non nella interface permette una chiusura pulita non strettamente necessario Variabili di istanza 34 A.A Università di Salerno 17

18 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 35 Person remoto: Person_Skeleton (1) Programmazione Distribuita. Vi.ttorio import java.io.*; import java.net.*; public class Person_Skeleton extends Thread { public Person_Skeleton(PersonServer server){ myserver = server; public static void main (String args[ ]) { PersonServer person = new PersonServer ("Vittorio","Napoli",1964); Person_Skeleton skel = new Person_Skeleton(person); skel.start(); // continua Estende Thread Costruttore parametro: un PersonServer Main istanzia un oggetto PersonServer passa al suo costruttore il suo riferimento fa partire il thread 36 A.A Università di Salerno 18

19 Person remoto: Person_Skeleton (2) Programmazione Distribuita. Vi.ttorio public void run() { Socket socket = null; String method; try { ServerSocket serversocket = new ServerSocket(9000); socket = serversocket.accept(); ObjectInputStream instream = new ObjectInputStream ( socket.getinputstream()); ObjectOutputStream outstream = new ObjectOutputStream ( socket.getoutputstream()); while (true) { method = (String) instream.readobject(); if (method.equals("getname")) { outstream.writeobject( myserver.getname()); outstream.flush(); else // continua Apertura ServerSocket Alla accettazione preleva stream di input e di output Ciclo: leggi dal socket il metodo da invocare chiamata al metodo getname() scrive in output la risposta del PersonServer 37 Person remoto: Person_Skeleton (3) Programmazione Distribuita. Vi.ttorio else if (method.equals("getplace")) { outstream.writeobject( myserver.getplace()); outstream.flush(); else if (method.equals("getyear")){ outstream.writeint( myserver.getyear()); outstream.flush(); else break; // end while true catch (EOFException e) {System.out.println ( Chiuso!"); catch (Throwable t) {t.printstacktrace(); finally { try {socket.close(); catch (IOException e) {e.printstacktrace();system.exit(0); // end metodo run PersonServer myserver; Chiamata al metodo getplace() scrive in output la risposta del PersonServer Chiamata al metodo getyear() scrive in output la risposta del PersonServer Catch Comunque alla fine chiude il socket Variabile di istanza 38 A.A Università di Salerno 19

20 Un client più complesso Programmazione Distribuita. Vi.ttorio PersonClient permette tramite una semplice shell di comandi la invocazione di metodi selezionati dall utente Il resto delle classi rimane identico Struttura di PersonClient legge da standard input (con un Buffered Stream) fa un semplice parsing dei comandi comandi per chiamate remote (getname, getplace, getyear) comando per la chiusura (con il metodo close offerto dallo stub) 39 Person remoto: il diagramma Programmazione Distribuita. Vi.ttorio 40 A.A Università di Salerno 20

21 Person remoto: PersonClient (1) Programmazione Distribuita. Vi.ttorio import java.util.*; import java.io.*; public class PersonClient { public static void main(string args[]) { Person person = null; String host = args[0]; BufferedReader in=null; String cmd; try { in = new BufferedReader(new InputStreamReader(System.in)); person = new Person_Stub(host); for (;;) { System.out.print("Comandi >"); cmd = in.readline(); if (cmd.equals ("close")) break; else // continua Host del server sulla linea di comando Creazione di uno stub variabile di reference di tipo Person Lettura da stdin apertura di uno stream da System.in Parsing comandi prompte input se close esci dal ciclo 41 Person remoto: PersonClient (2) Programmazione Distribuita. Vi.ttorio else if (cmd.equals ("getname")) System.out.println ("Nome:" + person.getname()); else if (cmd.equals ("getplace")) System.out.println ( "Luogo di Nascita:" + person.getplace()); else if (cmd.equals ("getyear")) System.out.println ( "Anno Nascita:" + person.getyear()); else System.out.println ( ERRORMSG); // end for catch (Throwable t) {t.printstacktrace(); finally { Person_Stub p =(Person_Stub) person; p.close(); static final String ERRORMSG = Cosa?"; Se il comando è getname, getplace o getyear chiama il metodo da person e stampa cioò che restituisce Catch Comunque alla fine casting necessario per poter chiamare close() Stringa per segnalare errore nel parsing 42 A.A Università di Salerno 21

22 Person remoto: la sequenza delle chiamate Programmazione Distribuita. Vi.ttorio chiama getname di PersonStub scrive getname sul socket -esegue getname e restituisce il valore - riceve getname sul socket - chiama getname sul server 43 Person remoto: la sequenza delle chiamate Programmazione Distribuita. Vi.ttorio riceve il valore ottenuto restituisce il valore ottenuto - scrive il risultato sul socket 44 A.A Università di Salerno 22

23 In conclusione Programmazione Distribuita. Vi.ttorio Questo è un semplice esempio di come viene reso possibile la invocazione remota di metodi tramite RMI in effetti, tutto il lavoro di scrivere stub e skeleton non viene richiesto al programmatore la cui difficoltà è quindi nello scrivere ed implementare certe interfacce ed usare certi strumenti attenzione: non abbiamo trattato il problema del come reperire il riferimento remoto! Remote Method Invocation la prossima lezione! 45 A.A Università di Salerno 23

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

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

Dettagli

Organizzazione della lezione. Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota

Organizzazione della lezione. Modelli di programmazione: RPC e RMI Trasparenza: un dibattito Un esempio di implementazione di invocazione remota Organizzazione della lezione 10. Invocazione di Metodi Remoti Vittorio Scarano Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Modelli di programmazione:

Dettagli

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

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

Dettagli

Organizzazione della lezione. Lezione 11 Oggetti Distribuiti. Marshalling: : perché. Rappresentazione Esterna dei Dati

Organizzazione della lezione. Lezione 11 Oggetti Distribuiti. Marshalling: : perché. Rappresentazione Esterna dei Dati Lezione 11 Oggetti Distribuiti Vittorio Scarano Corso di Programmazione Distribuita (23-24) Laurea di I livello in Informatica Università degli Studi di Salerno,, 2 Marshalling: : perché Rappresentazione

Dettagli

9. Java: Introduzione al Networking

9. Java: Introduzione al Networking 9. Java: Introduzione al Networking Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Networking

Dettagli

ASD: Sistemi Distribuiti (Prof. Scarano) 07/05/2002

ASD: Sistemi Distribuiti (Prof. Scarano) 07/05/2002 Organizzazione della lezione 9. Java: Introduzione al Networking Vittorio Scarano Algoritmi e Strutture Dati: Sistemi Distribuiti Corso di Laurea in Informatica Università degli Studi di Salerno Networking

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1 Applicazioni distribuite e sistemi ad oggetti distribuiti RPC RMI - Web Services 1 Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli

Dettagli

Applicazioni distribuite e sistemi ad oggetti distribuiti

Applicazioni distribuite e sistemi ad oggetti distribuiti Applicazioni distribuite e sistemi ad oggetti distribuiti Complessità delle applicazioni distribuite La scrittura di applicazioni distribuite basate sull utilizzo di protocolli di comunicazione asincroni

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

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

Dettagli

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

Organizzazione della lezione. Lezione 16 Remote Method Invocation - 4. Modello Client Server. Le classi di Archivio Client-Server Organizzazione della lezione Lezione 16 Remote Method Invocation - 4 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli

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

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

Dettagli

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

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

Dettagli

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

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

Dettagli

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

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

Dettagli

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori A.A. 2009/2010 Corso di Laurea in Ingegneria Informatica Corso di Reti di Calcolatori l Introduzione ai Thread in Java A.A. 2009/2010 1 Thread Un thread è un flusso sequenziale di esecuzione di istruzioni all interno

Dettagli

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

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

Dettagli

Lezione 5 Namespace e JavaDoc

Lezione 5 Namespace e JavaDoc Lezione 5 Namespace e JavaDoc Vittorio Corso di Programmazione Distribuita Laurea di I livello in Informatica Università degli Studi di Salerno Organizzazione della lezione Il namespace di Java: i package

Dettagli

Programmazione distribuita in Java. Socket & Client-Server

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

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 5 Cosa faremo oggi 2 Comunicazione tramite TCP socket Comunicazione tramite UDP socket RIPASSO: Input Output 3 In

Dettagli

Le basi del linguaggio Java

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

Dettagli

(VHUFLWD]LRQLGLEDVHVXOOH6RFNHWLQ-DYD 6RFNHWGLWLSRVWUHDP

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

Dettagli

Corso di Reti di Calcolatori T

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

Dettagli

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

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

Dettagli

Principi, Modelli e Applicazioni per Sistemi Distribuiti M

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

Dettagli

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

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

Dettagli

Multithreading. Multithreading/2

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

Dettagli

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

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

Dettagli

Sockets in Java. Lorenzo Gallucci

Sockets in Java. Lorenzo Gallucci Sockets in Java Lorenzo Gallucci Sockets La libreria Java dispone di un API per la gestione dell I/O di rete Il package di riferimento è java.net Vari compiti: Gestione dell I/O su socket (sia TCP che

Dettagli

Corso di Reti di Calcolatori L-A

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

Dettagli

18. Applicazioni ed Esempi (2)

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

Dettagli

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

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

Dettagli

Programmazione a oggetti

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

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A1 I file testo 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA9 B3.1 Mutua esclusione 1 Prerequisiti Programmazione concorrente Sezione critica Mutua esclusione lock() e unlock() 2 1 Introduzione Si considerino le seguenti situazioni

Dettagli

PROVA FINALE Ingegneria del software

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

Dettagli

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

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

Dettagli

Corso di Reti di Calcolatori L-A

Corso di Reti di Calcolatori L-A Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 0 (svolta) Multithreading in Java Luca Foschini Anno accademico 2009/2010 Esercitazione 0 1 Modello

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 20 febbraio 2012 TEMPO DISPONIBILE: 1 ora Negli

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java File Flussi e file Flusso (stream) = sequenza di dati di input: da cui leggere di output: su cui scrivere I file sono visti come flussi di dati Il package java.io definisce

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

15. Java Remote Method Invocation (3)

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

Dettagli

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

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

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

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA6 A2 I file binari 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Modello produttore consumatore Operazioni logiche su struttura file 2 1 Introduzione

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Corso di Reti di Calcolatori LA

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

Dettagli

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

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

Dettagli

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

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

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

Dettagli

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

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

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Java thread, concorrenza

Java thread, concorrenza Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà

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

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte) INPUT OUTPUT 2004-05 Le operazioni di I/O avvengono attraverso stream (sequenze di byte) programma stream in lettura sorgente Programmazione in rete e laboratorio programma stream in scrittura destinazione

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

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

Corso sul linguaggio Java

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

Dettagli

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

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate

IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate Fondamenti di Informatica IL LINGUAGGIO JAVA Sintassi, Semantica, Input, Tipi Elementari e Istruzione Condizionale 1 Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi

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

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

12. Java: Remote Method Invocation (3)

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

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 07 Oggetti e Java Marzo 2010 Programmazione Java 1 Contenuti Il linguaggio Java Applicazioni Java e il metodo main Esempi di applicazioni

Dettagli

RTTI Run-time type identification

RTTI Run-time type identification RTTI Run-time type identification Come determinare il tipo di un oggetto durante l'esecuzione RTTI 1 Ereditarietà Forma Linea Rettangolo Cerchio interface Forma { class Linea implements Forma { void ;

Dettagli

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite

Dettagli

Programmazione I - corso B a.a prof. Viviana Bono

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

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

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

Dettagli

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

Programmazione II. Lezione 23. Daniele Sgandurra 28/1/2011.

Programmazione II. Lezione 23. Daniele Sgandurra 28/1/2011. Programmazione II Lezione 23 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 28/1/2011 1/20 Programmazione II Lezione 23 28/1/2011 Sommario 1 2/20 Programmazione II Lezione 23 28/1/2011 Parte I 3/20 Programmazione

Dettagli

ASD: Sistemi Distribuiti (Prof. Scarano) 20/05/2002

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

Dettagli

Chiamata remota di metodi

Chiamata remota di metodi Chiamata remota di metodi Architettura di Java RMI Esecuzione di una Java RMI Architettura di RMI client server Stub & Skeleton Stub & Skeleton Remote Reference Remote Reference Trasporto Ciascun livello

Dettagli

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi.

Eccezioni. Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi. Eccezioni Corso di Programmazione CdS: Informatica e Tecnologie per la Produzione di Software Nicola Fanizzi fanizzi@di.uniba.it 2 Eccezione Evento anormale che avviene durante l'esecuzione del programma

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

Remote Method Invocation

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

Dettagli

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

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

Laboratorio di reti I

Laboratorio di reti I Laboratorio di reti I Stefano Brocchi brocchi@dsi.unifi.it 13 ottobre, 2009 Stefano Brocchi Laboratorio di reti I 13 ottobre, 2009 1 / 27 Introduzione Obiettivi del corso Aspetti di programmazione Java

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

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

16. Java Remote Method Invocation (4)

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

Dettagli

I Thread. un thread è uno stream di esecuzione del programma

I Thread. un thread è uno stream di esecuzione del programma I Thread un thread è uno stream di esecuzione del programma Sistema Operativo e Thread Un processo o thread una successione di operazioni che vengono eseguite dal sistema operativo in modo sequenziale

Dettagli

Multithreading in Java I parte. Lorenzo Gallucci

Multithreading in Java I parte. Lorenzo Gallucci Multithreading in Java I parte Lorenzo Gallucci Java: un linguaggio ed un sistema predisposti per il multitasking È possibile creare e gestire Thread nativamente (senza dover ricorrere a librerie esterne)

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria CORSO DI FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni Prof. Zambonelli, Ing. Cabri, Ing. Denti, Ing. Andrea Aime Zambonelli,

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Array Array monodimensionali Array bidimensionali Esercizi 16/01/2013 2 ARRAY Gli array sono oggetti utilizzati in Java per memorizzare

Dettagli

Esercitazione 2: Java Thread

Esercitazione 2: Java Thread Esercitazione 2: Java Thread Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati

Dettagli

Eccezioni e Thread (cenni)

Eccezioni e Thread (cenni) Eccezioni e Thread (cenni) Linguaggi di Programmazione: Paradigmi di Programmazione (Sperimentazioni) Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread: Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

Esempio su strutture dati dinamiche: ArrayList

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

Dettagli

Centralizzata Monolitica anni Reti Client Server anni Internet The network is the computer

Centralizzata Monolitica anni Reti Client Server anni Internet The network is the computer Distributed Object C o m p utin g "!$#&% ')(+*,#&-).0/2143657*98:.;8

Dettagli