la sérialisation en java
JVM-2
JVM-1
EL MAATAOUI Nassime
Ayougil doha
BAYACINE JAMAL
JAVA
chaimae nahhas
MOHAMED EL
FARAJI
C'est quoi la sérialisation en Java ?
Pourquoi nous avons besoin de la sérialisation ?
Avantages et inconvénients !
Contenu :
comment sérialiser un objet
C'est quoi la Désérialisation en Java ?
comment Désérialiser un objet
Pratiques de la sérialisation en Java
JAVA
C'est quoi la sérialisation en Java ?
C'est quoi la sérialisation en Java ?
Serializable Externalizable
objet
objet objet
objet
JVM-1 JVM-2
C'est quoi la sérialisation en Java ?
flux d'octets flux d'octets
objet objet
JVM-1 JVM-2
Pourquoi nous avons besoin de la sérialisation ?
• La communications
Pourquoi • la persistance
nous avons
besoin de la • La mise en cache
sérialisation ? • Synchronisation JVM croisée
JAVA
Avantages et inconvénients !
Avantages
• fonctionnalité intégrée
• familière
JAVA • la facilité
• Cryptage
Inconvénients
• Les Versions
• la portabilité du résultat
JAVA • La gestion des références
Inconvénient
s
elle est généralement peut performante car
elle utilise l'introspection,
certains objets ne peuvent pas être
sérialisés notamment ceux dépendants du
système d'exploitation : threads, fichiers, ...
JAVA Son utilisation peut engendrer des
problèmes de sécurité : sérialisation de
données sensibles, désérialisation d'un
objet dont la source est inconnue, ...
comment sérialiser un objet ?
Il existe plusieurs formats de sérialisation appartenant à
deux grandes familles :
formats binaires : c'est le format par défaut
formats textes : ils sont plus portables car ils utilisent
généralement une structuration standard (XML, JSON,
...), peuvent être facilement modifiés et consomment
plus de ressources pour être traités
JAVA L'ajout d'un attribut à l'objet est automatiquement pris
en compte lors de la sérialisation. Attention toutefois, la
désérialisation de l'objet doit se faire avec la classe qui a
été utilisée pour la sérialisation ou une classe
compatible.
Tous les objets ne sont pas sérialisables : généralement ce
sont des objets qui ont des références sur des éléments
du système d'exploitation (threads, fichiers, ...).
Le mécanisme de sérialisation par défaut ignore les
champs static ou transient.
La sérialisation utilise un mécanisme qui ne sérialise
qu'une fois un objet même si le graphe d'objets à
sérialiser possède plusieurs références sur celui-ci. Ceci
permet lors de la désérialisation que toutes les références
JAVA sur l'objet dans le graphe pointent bien sur la bonne
instance.
[Link]
[Link]
JAVA
Exemple
C'est quoi la Désérialisation en Java ?
Sérialisation
Désérialisation
C'est quoi la Désérialisation
en Java ?
La désérialisation est l’étape opposée à la
sérialisation c’est-à-dire que des objets sont créés
à partir d’un tableau d’octets.
Mémoire
JAVA Base de
données
Fichier
Flux d’octets
Objet(s)
On va utilisée :
-La classe ObjectInputStream.
-La classe FileInputStream.
- la méthode readObject().
Désérial
iser
JAVA
Classe
Méthod
es
ObjectInputStream
La classe ObjectInputStream à pour but de
désérialiser un objet précédemment sérialisé
import [Link];
Le tableau ci-dessous présente quelques
méthodes :
JAVA Méthodes Rôle
Object readObject() Désérialiser un objet
int read() Lire un octet
int available() Retourner le nombre d'octets qui peuvent
être lus dans le flux
void close() Fermer le flux
FileInputStream
Cette classe permet de construire un flux de
données à partir d'un fichier.
Pour désérialiser on crée un objet de cette
classe qui représente le fichier contenant
l'objet sérialisé, puis un objet de type
ObjectInputStream en lui passant le fichier en
paramètre.
JAVA
Example:
FileInputStream fis = new FileInputStream( "/tmp/[Link]“);
ObjectInputStream ois = new ObjectInputStream(fis);
readObject()
Cette méthode permet de récupérer une
représentation interne de l’objet sérialisé à
partir d’une suite d’octets.
Pour reconstruire l’objet, cette
méthode n’utilise pas le constructeur ;mais
initialise les champs de la classe à reconstruire
à partir des valeurs présentes dans le flux
d’octets de l’objet sérialisé.
JAVA
Exemple:
MaClasse mc = (MaClasse) [Link]();
Exemple