Date sent: Wed, 05 Dec 2001 14:46:45 +0100
From: Cyriaque Dupoirieux <cyriaque.dupoirieux@pcotech.fr>
Organization: PCO Technologies
To: Liste Java <java@u-strasbg.fr>
Subject: Serializable / Externalizable ?
Send reply to: java@u-strasbg.fr
Bonjour,
Je ne comprends pas trop à quoi servent les interfaces Serializable et
Externalizable.
Pouvez-vous m'en dire plus ou m'indiquer un endroit où je pourrait
trouver un peu de doc...
Merci,
Cyriaque,
--
Cyriaque Dupoirieux <mailto:Cyriaque.Dupoirieux@pcotech.fr>
PCO Technologies
Burolines - 2 ter rue Marcel Doret
31700 Blagnac
Tél : 05.34.60.44.13 - Fax : 05.34.60.44.10
Date sent: Wed, 05 Dec 2001 15:38:24 +0100
From: willfried Matter <wmatter@nagora.com>
Send reply to: wmatter@nagora.com
To: java@u-strasbg.fr
Subject: Re: Serializable / Externalizable ?
> l'interface Serializable permet d'envoyer ou de recevoir
> des objets à travers des InputStream et des OutputStream.
???
moi je dirai qu'un objet Serializable (implémentant l'interface
Serializable)
a la capacité de voir son état "figé" dans un fichier.
Par exemple tu développe un objet "partie de jeu vidéo" type Test Drive.
Quand tu fais une sauvegarde, tu serialize (ou fige) ton objet dans le
fichier de sauvegarde (le fichier de sauvegarde). Quand tu recharges une
ancienne partie, tu deserialize l'objet à partir du fichier. Gain de temps
assuré...
Note (pour comparaison) :
Une approche "à l'ancienne" de la sauvegarde
serait de sauvegarder la position de la voiture, la direction, la vitesse,
le score etc etc. dans un fichier 'format propriétaire' ou fichier texte.
A noter qu'il y a un chouette tutorial sur la serialization dans le Java
Tutorial de Sun.
willfried
To: java@u-strasbg.fr
Subject: Re : Serializable / Externalisable ?
Date sent: Wed, 05 Dec 2001 16:15:35 +0100 (MET)
From: Nicolas Delsaux <nicolas.delsaux@free.fr>
Send reply to: java@u-strasbg.fr
----- Original Message -----
From: "Kostrzewa Bruno" <b.kostrzewa@free.fr>
To: <java@u-strasbg.fr>
Sent: Wednesday, December 05, 2001 9:26 PM
Subject: Re: Serializable / Externalizable ?
> Bonjour,
> l'interface Serializable permet d'envoyer ou de recevoir
> des objets à travers des InputStream et des OutputStream.
> Externalizable doit être voisin, mais je ne connais pas
> la nuance.
Elle est énorme !
Serializable est une interface de tagging, permettant de signaler qu'un
objet l'implémentatn est bon pour être sérializé par le système, mais
n'indiquant en aucun cas comment la sérialization va se produire. Tout au
contraire, dans Externalizable, l'objet définit, par le biais de
readExternal et writeExternal, comment sa sauvegarde va avoir lieu,
c'est-à-dire quels seront précisément les champs qui seront sauvegardés,
et dans quel ordre. On constate tout de suite que Externalizable fournit
une indépendance beaucoup plus grande vis-à-vis de la JVM (qui doit
cependant avoir des specs très précises à ce sujet), car, même si la
présence de champs transients permet d'alléger la sauvegarde, il existe
souvent dans les objets des valeurs qui sont obsolètes, ou inutiles, mais
que la JVM ne peut pas détecter comme tels, ou dont la séparation implique
un travail trop important.
> Pour plus d'informations, faire une recherche sur ces deux
> mots avec Google...
> J'ai trouvé, par exemple :
> http://gbm.esil.univ-mrs.fr/~tourai/Java/node23.html
>
En revanche, je n'ai pas l'expérience d'une implémentation
d'Externalizable, et je ne peux donc pas dire comment la présence de ces
deux méthodes peut fournir une dose de travail supplémentaire au
développeur.
Nicolas Delsaux
From: "Rodolphe Godreul" <rodolphe@godreul.com>
To: <java@u-strasbg.fr>
Subject: RE: Re : Serializable / Externalisable ?
Date sent: Wed, 5 Dec 2001 16:28:20 +0100
Send reply to: java@u-strasbg.fr
euh, avec serializable aussi on peut redefinir les methodes read & write
qui sont appellees pour (de)serialiser.
> -----Message d'origine-----
> De : java-owner@u-strasbg.fr [mailto:java-owner@u-strasbg.fr]De la part
> de Nicolas Delsaux Envoyé : mercredi 5 décembre 2001 16:16 À :
> java@u-strasbg.fr Objet : Re : Serializable / Externalisable ?
>
>
>
> ----- Original Message -----
> From: "Kostrzewa Bruno" <b.kostrzewa@free.fr>
> To: <java@u-strasbg.fr>
> Sent: Wednesday, December 05, 2001 9:26 PM
> Subject: Re: Serializable / Externalizable ?
>
>
> > Bonjour,
> > l'interface Serializable permet d'envoyer ou de recevoir
> > des objets à travers des InputStream et des OutputStream.
> > Externalizable doit être voisin, mais je ne connais pas
> > la nuance.
>
> Elle est énorme !
> Serializable est une interface de tagging, permettant de signaler
> qu'un objet l'implémentatn est bon pour être sérializé par le
> système, mais n'indiquant en aucun cas comment la sérialization
> va se produire. Tout au contraire, dans Externalizable, l'objet
> définit, par le biais de readExternal et writeExternal, comment
> sa sauvegarde va avoir lieu, c'est-à-dire quels seront
> précisément les champs qui seront sauvegardés, et dans quel ordre.
> On constate tout de suite que Externalizable fournit une
> indépendance beaucoup plus grande vis-à-vis de la JVM (qui doit
> cependant avoir des specs très précises à ce sujet), car, même si
> la présence de champs transients permet d'alléger la sauvegarde,
> il existe souvent dans les objets des valeurs qui sont obsolètes,
> ou inutiles, mais que la JVM ne peut pas détecter comme tels, ou
> dont la séparation implique un travail trop important.
>
> > Pour plus d'informations, faire une recherche sur ces deux
> > mots avec Google...
> > J'ai trouvé, par exemple :
> > http://gbm.esil.univ-mrs.fr/~tourai/Java/node23.html
> >
> En revanche, je n'ai pas l'expérience d'une implémentation
> d'Externalizable, et je ne peux donc pas dire comment la présence
> de ces deux méthodes peut fournir une dose de travail
> supplémentaire au développeur.
>
> Nicolas Delsaux
>
From: Olivier Dedieu <olivier.dedieu@inria.fr>
Date sent: Wed, 5 Dec 2001 16:37:51 +0100 (CET)
To: java@u-strasbg.fr
Subject: Re: Re : Serializable / Externalisable ?
Send reply to: java@u-strasbg.fr
Quelques articles sur le sujet:
http://pharos.inria.fr/Java/query.jsp?keyword.s1:1075=on&keyword.s1:12862=on
a+
--
---------------------------------------------------------------
Olivier Dedieu - (INRIA - Bull / WebTools - Pharos)
Web: http://www-sor.inria.fr/~dedieu
JavaChannel: http://www.java-channel.org/
Pharos team: http://webtools.dyade.fr/pharos/
---------------------------------------------------------------
Date sent: Wed, 05 Dec 2001 16:42:54 +0100
From: Yann SECQ <Yann.Secq@lifl.fr>
Organization: SMAC
To: java@u-strasbg.fr
Subject: Re: Re : Serializable / Externalisable ?
Send reply to: java@u-strasbg.fr
Rodolphe Godreul wrote:
> euh, avec serializable aussi on peut redefinir les methodes
> read & write qui sont appellees pour (de)serialiser.
Oui, mais ce n'est pas le mécanisme proposé par défaut. En
gros tu taggues tes classes Serializable lorsque tu veux
laisser la JVM *tout* gérer (tu peux quand même lui donner
quelques tuyaux en marquant quelques attributs 'transient').
Par contre l'interface Externalisable te permet (et te force)
à externaliser l'état de ton objet, c'est-à-dire à décrire
précisément l'état persistant de ton objet. Et généralement,
cela te permet d'optimiser la taille de tes objets persistants.
yann.
--
/ Yann SECQ Equipe SMAC secq@lifl.fr \
| Multi-Agent Systems Modeling & Agent Oriented Programming |
\ http://www.lifl.fr/SMAC http://www.lifl.fr/~secq /
From: "Herve AGNOUX" <herve.agnoux@diaam-informatique.com>
To: java@u-strasbg.fr
Date sent: Wed, 5 Dec 2001 21:10:53 +0100
Subject: Re: Serializable / Externalizable ?
Send reply to: java@u-strasbg.fr
Priority: normal
Le 5 Dec 01, Cyriaque Dupoirieux a écrit :
> Bonjour,
>
> Je ne comprends pas trop à quoi servent les interfaces Serializable
> et
> Externalizable.
> Pouvez-vous m'en dire plus ou m'indiquer un endroit où je pourrait
> trouver un peu de doc...
>
Deux différences : Serializable fournit un mode de serialization par
defaut, tandis que Externalizable n'en fournit pas, et lors de la
déserialization d'un objet, aucun constructeur n'est appelé, tandis que
lors de la désexternalization d'un objet, le constructeur par défaut est
appelé, et il faut qu'il soit public.
Pour moi la meilleure doc sur le sujet est le bouquin de Eckel.
Pour l'URL, cherche sur la pseudo-archive ou sur le canal java, mot
clef Eckel.
--
Sur le Web, tout de suite.
Herve AGNOUX - diaam informatique
http://www.diaam-informatique.com
From: Kostrzewa Bruno <b.kostrzewa@free.fr>
To: java@u-strasbg.fr
Subject: Re: Serializable / Externalizable ?
Date sent: Wed, 5 Dec 2001 15:26:18 -0500
Send reply to: java@u-strasbg.fr
Bonjour,
l'interface Serializable permet d'envoyer ou de recevoir
des objets à travers des InputStream et des OutputStream.
Externalizable doit être voisin, mais je ne connais pas
la nuance.
Pour plus d'informations, faire une recherche sur ces deux
mots avec Google...
J'ai trouvé, par exemple :
http://gbm.esil.univ-mrs.fr/~tourai/Java/node23.html
Amicalement,
Bruno K.
Le Mercredi 5 Décembre 2001 08:46, vous avez écrit :
> Bonjour,
>
> Je ne comprends pas trop à quoi servent les interfaces Serializable
> et Externalizable.
> Pouvez-vous m'en dire plus ou m'indiquer un endroit où je pourrait
> trouver un peu de doc...
>
> Merci,
> Cyriaque,