En programmation objet, l'idée de réutilisabilité est essentielle. On peut
réutiliser le code facilement car il est structuré en briques élémentaires,
les classes
On veut pouvoir aussi réutiliser les données créées par un programme,
il faut donc non plus sauver les classes (descriptions communes d'un
ensemble d'objets) mais les objets eux-mêmes qui encapsulent des
valeurs d'attributs
Principe de la sérialisation : il s'agit de permettre la persistance des
objets, c'est-à-dire que la durée de vie de l'objet est supérieure à celle
du programme qui l'a créé. L'objet est sauvegardé dans un flux et
pourra être reconstitué plus tard dans l'état où il a été sauvegardé. On
sauve donc les valeurs de ses attributs et la manière de recréer l'objet
Applications :
stockage de données structurées
échanges d'objets entre applications distribuées
RMI (Remote Method Interface) : permet d'utiliser des objets distants (ne s'exécutant
pas sur la même JVM). Les objets sont transmis par sérialisation.
Beans
Tout objet implémentant l'interface Serializable est sérialisable
dans un flux (fichier, réseau, ...)
Serializable n'a aucune méthode, elle ne sert qu'à identifier les objets
sérialisables
La sérialisation est effectuée par writeObject(Object o),
méthode de l'interface ObjectOutput
généralement, on utilise un ObjectOutputStream, classe qui implémente
ObjectOutput
Dans l'implémentation ObjectOutputStream, o doit implémenter
Serializable sinon une NotSerializableException est levée
peut lancer une IOException en cas de problème d'accès au flux
la sérialisation d'un objet osérialise également tous les objets référencés par o
(ces objets doivent donc être sérialisables sinon exception!)