10
Java Serialization

Java

Embed Size (px)

DESCRIPTION

Java. Serialization. Il problema della persistenza. Persistenza dei dati quando l’applicazione non è running: salvataggio della struttura interna di un oggetto. E’ un problema ricorsivo! Serializzazione: trasformazione di oggetti in “stream di dati” (seriali). - PowerPoint PPT Presentation

Citation preview

Page 1: Java

Java

Serialization

Page 2: Java

Il problema della persistenza

Persistenza dei datiquando l’applicazione non è running:

salvataggio della struttura interna di un oggetto.

E’ un problema ricorsivo!

Serializzazione: trasformazione di oggetti in “stream di dati” (seriali).

Il JDK prevede delle API per la serializzazione,e la maggior parte delle sue classi sono serializzabili.

Page 3: Java

persistenza selettiva

Le variabili dichiarate

transient

non vengono serializzate.

Page 4: Java

Supporto di JDK alla persistenza

ObjectOutputStream: converte oggetti dalla rappresentazionein memoria a quella serializzata.ObjectInputStream: converte oggetti dalla rappresentazioneserializzata a quella in memoria.

Serializable: interfaccia senza metodi che marca una classecome seralizzabile.

Externalizable: interfaccia con metodi (sottoclasse di Serializable)che fornisce maggior controllo sul processo di serializzazione.

ObjectInputValidation: interfaccia per verificare la correttadecodifica di un oggetto.

Page 5: Java

Principali Metodi di ObjectOutputstream

ObjectOutputStream(OutputStream) costruttorewriteObject(Object) serializza Objectclose()flush()reset()writeInt(int) writeFloat(float) writeDouble(double)

Page 6: Java

Principali Metodi di ObjectInputstream

ObjectInputStream(InputStream) costruttoreObject readObject() deserializza Objectavailable() dice quanti bytes ci sono da leggereint readInt()float writeFloat() double writeDouble()

registerValidation(ObjectValidation,int)

Page 7: Java

Esempio –Writer 1/2

package serialDemo;import java.io.*;import java.util.*;

public class Writer {

HashMap hm=new HashMap(); public Writer() { System.out.println("WRITER-------------------------"); for (int k=1;k<=10;k+=2) { String key=new String("a"+k); Integer ik=new Integer(k); hm.put(key,ik); } System.out.println(hm.size()); Iterator i=hm.keySet().iterator(); while (i.hasNext()) { Object o=i.next(); System.out.println(o.toString()+" #"+hm.get(o).toString()); }

Page 8: Java

Esempio –Writer 2/2

FileOutputStream ofs=null; ObjectOutputStream oos=null; try { ofs=new FileOutputStream("serialiazidStream.txt"); oos=new ObjectOutputStream(ofs); oos.writeObject(hm); } catch (IOException ex) { ex.printStackTrace(); } }//--------------------------------------------- public static void main(String[] args) { Writer writer = new Writer(); }}

Page 9: Java

Esempio –Reader 1/2

package serialDemo;import java.io.*;import java.util.*;

public class Reader {

HashMap hm=null; //------------------------------------------ public static void main(String[] args) { Reader reader = new Reader(); }

Page 10: Java

Esempio –Reader 2/2

public Reader() { System.out.println("READER -------------------------"); FileInputStream ofs=null; ObjectInputStream oos=null; try { ofs=new FileInputStream("serialiazidStream.txt"); oos=new ObjectInputStream(ofs); hm=(HashMap)oos.readObject(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); }catch (IOException ex) { ex.printStackTrace(); } System.out.println(hm.size()); Iterator i=hm.keySet().iterator(); while (i.hasNext()) { Object o=i.next(); System.out.println(o.toString()+" #"+hm.get(o).toString()); } }