| Axel Rogat |
| Objektorientiertes Programmieren mit C++ und JAVA |
|   |
27.5: Datenkompression
| Kapitel 27 |
28: JAVA im Netz 
|
|   |
|   | 27.6 Serialisierung |   |
|   |
Dieser in JAVA 1.1 eingeführte Mechanismus dient zum Schreiben und Laden kompletter Objekte in/aus Dateien ("Serialisieren" und "Deserialisieren"). Es werden alle Member abgespeichert, auch private und solche, die aus Oberklassen geerbt wurden. Wenn ein Objekt andere Objekte referenziert, werden auch diese automatisch mit abgespeichert (rekursive Serialisierung). Daher stammt der Name: alle zusammengehörigen Daten (ein ganzer Objekt-/Unterobjekt-Baum) werden serialisiert, um in die sequentielle Struktur einer Datei zu passen.
Objekte müssen also nicht bei jeder I/O-Operation explizit in ihre Bestandteile (letztendlich primitive Typen) zerlegt und ein passendes Dateiformat entworfen zu werden. Programmen, die mit Grafiken und Textdarstellungen arbeiten, erhalten so automatisch ein Ein-/Ausgabe-Format, das nicht ausdrücklich programmiert zu werden braucht. Applets können durch Deserialisierung in den Viewer oder Browser geladen werden. Außerdem kann die Serialisierung problemlos mit Zip-Streams gekoppelt werden.
Der Mechanismus speichert automatisch alle (nicht-transienten) Datenmember des Objekts ab. Die Daten landen nicht einfach binär sequentiell in der Datei, in einem bestimmten Format werden die Namen der Member mit abgelegt.
Wenn die Klasse eine Konstante static final long serialVersionUID definiert, wird dieser Wert als Versionsnummer benutzt. Ansonsten wird automatisch ein Wert verwendet, der aus den Zeichen im Klassennamen und in den Methodennamen berechnet wird. Mit dem Utility serialver kann man ihn berechnen und ausgeben.
Auch wenn nur kleine Änderungen durchgeführt werden, würde sich mit großer Wahrscheinlichkeit der berechnete Wert ändern. Wenn Objekte dennoch über Serialisation austauschbar sein sollen, sollte man die Konstante definieren.
Beispiel: Wir serialisieren einen Vektor aus Strings mit einem Befehl. Die erste Funktion schreibt den Vektor in eine Datei, die zweite restauriert den Vektor aus dieser Datei und gibt ihn aus.
Auch Applets können serialisiert werden. Dabei ist zu beachten, daß sie vor dem Abspeichern gestoppt werden müssen. Sie können dann auf spezielle Weise in den Browser geladen werden. Nach dem Laden müssen sie neu gestartet werden, was die Browser üblicherweise automatisch tun.
|   |
27.5: Datenkompression
| Startseite |
28: JAVA im Netz 
|
|   |