Tecniche di serializzazione degli oggetti in Java

Esaminiamo diverse tecniche di serializzazione degli oggetti in java. Quella standard proposta dalla sun e quelle alternative

Salvare il contenuto delle strutture dati su persistenza è un problema ricorrente, in tutti i linguaggi di programmazione. Una prima soluzione potrebbe essere quella manuale: un metodo dell’oggetto che salva, con un protocollo da noi scelto, i campi dati della classe su un file, attraverso le File API.

Dovremo quindi scrivere un metodo di scrittura e ovviamente di lettura per ogni oggetto.Questa soluzione è tutt’altro che veloce e conveniente. Molto più semplice è invece la soluzione proposta dalla Sun per mezzo dell’interfaccia java.io.Serializable

Tutte le classi che implementano questa interfaccia, possono essere salvate su persistenza attraverso un ObjectOutputStream e caricate con un ObjectInputStream

Questa soluzione è veloce e poco dispendiosa (in termini di fatica). D’altra parte, il file è stato salvato in un formato binario compatibile solo con una applicazione java. Questo può essere poco conveniente se volessimo utilizzare i dati con un applicativo scritto in un altro linguaggio.

Molto meglio in questo caso, una serializzazione in xml, formato “franco” e facilmente parsabile. Per farlo, possiamo ricorrere a java.beans.XMLEncoder il cui utilizzo è altrettanto semplice:

Il caricamento dell’oggetto è altrettanto semplice, attraverso java.beans.XMLDecoder.

Un pò più macchinosa, ma più performante e soprattutto più customizzabile la soluzione proposta da Javolution. Non analizzeremo tutti i dettagli, per i quali rimando al sito del progetto, mi limito a presentare un esempio:

In pratica si tratta di definire in ogni classe i metodi format e parse da utilizzare in salvataggio e caricamento

Qualsiasi soluzione scegliate, non dimenticate che potete utilizzare la serializzazione non solo per scrivere su file, ma anche per scambiare dati fra applicazioni, per esempio su socket:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *