La Serializzazione in Java. L24_Serialization 1

Documenti analoghi
Java e Serializzazione dalla A all'xml di Leonardo Puleggi

Serializzazione Java. Serializzazione. Calendario esercitazioni e laboratori. Applicazioni della Serializzazione

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A I/O, thread, socket in Java

20 - Input/Output su File

Flussi, lettori e scrittori

Unità 2 I file binari

Prof. D. Malerba Dr. A. Appice - Dr. M.Ceci. Il sistema Input/Output di Java

Remote Method Invocation (RMI)

RMI. Java RMI RMI. G. Prencipe

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

789:;<:' .&+/"0&12%34%5&66+,("%3787%% %"+&%88$77%9%8:$:7%% ;<'&12%8%=,+>"%3787 % % % %"+&%88$77%9%8:$:7%

Esercitazione OBIETTIVI DELL ESERCITAZIONE

C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

Scritto da Enrico Battuello Giovedì 25 Novembre :11 - Ultimo aggiornamento Venerdì 07 Gennaio :50

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

Compute engine generici in RMI

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

File, flussi e pacchetto java.io

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

Cifratura simmetrica

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Lezione n.7 LPR -Informatica applicata Socket e Datagram UDP. 11/4/2013 Laura Ricci

Programmazione ad Oggetti

Main System Monitor Keyboard

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

Gestione delle eccezioni Individuazione e ripristino parseint Individuazione e ripristino Individuazione e ripristino parseint

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Esercitazioni Ingegneria del So2ware 3 - Programmazione Java Excep<ons, I/O

Java RMI (Remote Method Invocation)

Il linguaggio Java I file sequenziali

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

Programmazione in Java e gestione della grafica. Lezione 24

Introduzione. Java. Streams. Streams

Input/Output in Java

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

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

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

File e Stream In Java. Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Progettazione e sviluppo di un sistema software complesso. Lezione X

Errata Corrige di Manuale di Java 8

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

Definizione di classi con array di oggetti

Corso di Reti di Calcolatori

RETI DI CALCOLATORI Linguaggio Java: Il Package di Input Output

Architettura Client-Server

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

Lezione 18 Le classi per l'input/output nel pacchetto java.io

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Laboratorio di Programmazione 1 [Java]

Applicazioni web. Parte 5 Socket

Input e Output in Java

Operazioni di scrittura e lettura con periferici in linguaggio Java

Corso di Reti di Calcolatori. Datagrammi

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB. Http con java, URL

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fondamenti di Informatica C Esercitazioni di Laboratorio / 4 Outline

singoli campi la classe Constructor permette di creare nuovi oggetti.

Le basi del linguaggio Java

Programmazione Java (Applicazioni e Applet )

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione Java: Variabili membro, Metodi La parola chiave final

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

Esercizi della lezione 5 di Java

Esempio su strutture dati dinamiche: ArrayList

Corso di Reti di Calcolatori. java.net.url

OOP: L13: Eccezioni e loro trattamento in Java

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

Programmazione di rete in Java

Astrazioni sul controllo. Iteratori

esercizi Esercizi / problemi

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

Introduzione a Java Remote Method Invocation (RMI)

INTRODUZIONE INTRODUZIONE JAVA JAVA

Java RMI: Esempio Completo di un Applicazione Distribuita

JAVA INTRODUZIONE C++ JDK e JRE API IDE (BLUEJ) JAVA Introduzione. Versioni e IDE DIAPOSITIVA 2 ALESSANDRO URSOMANDO

Realizzazione di una classe con un associazione

Programmazione distribuita in Java. da materiale di Carlo Ghezzi e Alfredo Mo:a

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Reti di Calcolatori L-A

La classe Object. L2-Linguaggi di Programmazione II-unina 1

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

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

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

Aritmetica. Progetto dei programmi

Datagrammi. NOTA: MulticastSocket estende DatagramSocket

StringTokenizer: esempio. Lettura di matrici da file. Come procedere? Lettura matrice: esempio - I. La classe StringTokenizer

Corso sul linguaggio Java

La velocità di una carovana

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

LPR A 2005/2006 Lezione 4

Gestione di file in Java

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

Ricorsione. Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona.

Laboratori sul linguaggio Java

Transcript:

La Serializzazione in Java L24_Serialization 1

La Serialization è la trasformazione di un oggetto in memoria in una sequenza di byte (ospitata in un file, trasmessa in rete, ecc). La Deserialization è il processo inverso In java la serialization è possibile per gli oggetti che implentano l'interfaccia Serializable, che è una interfaccia marker (non c'e' alcun metodo da implementare, come Clonable ) L24_Serialization 2

La Serializzazione si ottiene con la classe ObjectOutputStream (metodo writeobject), mentre la deserializzazione si ottiene con ObjectInputStream (metodo readobject). ESEMPIO FileOutputStream out = new FileOutputStream( test.ser ); ObjectOutputStream oos = new ObjectOutputStream( out ); oos.writeobject( new Date() ); oos.writeint(12345);//== ser. Di tipi prim. oos.close(); L24_Serialization 3

Se l'oggetto da serializzare possiede referenze ad altri oggetti (o array), anche questi oggetti vengono serializzati (Object Graph). L' Object Graph consiste nell'oggetto serializzato e da ogni altro oggetto o array di cui l'oggetto ha referenze dirette o indirette. L24_Serialization 4

Transient e static Un campo classificato come transient, nella fase di de- serializzazione vengono ripristinati ai loro valori defualt (I campi numerici transient vengono ripristinati a zero). I campi static non vengono serializzati L24_Serialization 5

L'interfaccia Externalizable La Serializzazione la deserializazzione possono essere implementati riscrivendo I metodi writeobject e readobject. L'interfaccia Externalizable puo' essere implementata da classi che devono avere un controllo completo sulla serializzazione e sulla deserializzazione. Il meccanismo di de-serializzazione invoca il costruttore default (senza argomenti) quando ripristina gli oggetti. L24_Serialization 6

import java.io.*; import java.util.*; public class test { public static void main (String args[]) throws IOException, ClassNotFoundException { ObjectOutputStream out=new ObjectOutputStream (new FileOutputStream("objects.dat")); Date now = new Date(System.currentTimeMillis()); out.writeobject(now); out.close(); System.out.println("I have written:"); System.out.println("A Date object: "+now); ObjectInputStream in = new ObjectInputStream ( new FileInputStream("objects.dat")); Date d1 = (Date)in.readObject(); System.out.println("I have read:"); System.out.println("A Date object: "+d1); L24_Serialization 7

import java.io.*; public class Login implements Serializable { private String user; private transient String password; public Login() { public Login (String u, String p) { user = u; password = p; public void printout () { if (user!= null) System.out.println ("User name is: "+user); else System.out.println ("User name not defined"); if (password!= null) System.out.println ("Password is: "+password); else System.out.println ("Password not defined"); L24_Serialization 8

import java.io.*; public class MyApplication { public static void main (String[] args) throws IOException, ClassNotFoundException { Login l1 = new Login("teacher", "class99java"); System.out.println ("This is the object created in memory"); l1.printout(); ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ("login.dat")); out.writeobject(l1); out.close(); // We crate another login object from the stored one ObjectInputStream in = new ObjectInputStream ( new FileInputStream ("login.dat")); Login l2 = (Login)in.readObject(); System.out.println("This is the object created from serialization"); l2.printout(); in.close(); L24_Serialization 9

import java.io.*; public class Blip implements Externalizable { int i; String s; public Blip() { System.out.println("Blip's default constructor"); i=0; s=""; public Blip (String x, int a) { System.out.println("Blip's constructor with data"); s=x;i=a; public void readexternal(objectinput in) throws IOException, ClassNotFoundException { s = (String)in.readObject(); public void writeexternal (ObjectOutput out) throws IOException { out.writeobject(s); public void printout() { System.out.println ("This blip has an int: "+i); System.out.println ("This blip has a string: "+s); import java.io.*; public class SerializeOutBlips { public static void main (String args[]) throws IOException { Blip b = new Blip ("Hello class", 21); b.printout(); ObjectOutputStream out = new ObjectOutputStream ( new FileOutputStream ("blips.dat")); out.writeobject(b); out.close(); L24_Serialization 10 import java.io.*;