Unter Serialisierung versteht man das automatische Speichern von Objekten, entweder auf ein Speichermedium wie Festplatte oder im Arbeitsspeicher. Mithilfe der Serialisierung kann problemlos eine so genannte Lightweight Persistence implementiert werden. Damit wird die Lebensdauer von Objekten über die der Anwendung hinaus verlängert.
Das Verfahren der Serialisierung wurde aus zwei Gründen zur Java-Sprache hinzugefügt:
Das Serializable Interface
Es ist möglich, jedes Objekt zu serialisieren, sofern es das Serializable Interface implementiert hat. Dieses Interface enthält keine Methoden, es ist lediglich ein Zeichen für den Compiler und die Java Virtual Machine (JVM), dass die jeweilige Klasse serialisierbar ist. Als das Serialisierungsverfahren zu der Sprache hinzugefügt wurde, änderte man viele Standard-Java-Klassen (alle Wrapper für primitive Typen wie Integer und Double, alle Container-Klassen und die Class-Klasse), so dass sie nun eine Serialisierung unterstützen.
Um ein Objekt zu serialisieren, ist ein Ausgabestrom (OutputStream) vonnöten, der in den speziellen Serialisierungsstrom namens ObjectOutputStream integriert werden muss. Danach ist lediglich die Methode writeObject() aufzurufen, um das Objekt zu serialisieren und an den Ausgangsstrom zu senden. Die Serialisierung eines Objekts lässt sich rückgängig machen, indem der InputStream in ObjectInputStream umgewandelt und dann die Methode readObject() aufgerufen wird. Wie gewohnt erhält der Programmierer dadurch einen Verweis auf einen Objekttyp, weshalb er auch einen Class-Cast durchführen muss, um ein Objekt des erforderlichen Typs zu erhalten.
Das Serialisierungsverfahren verarbeitet alle in dem Objekt enthaltenen Verweise korrekt. Alle verbundenen Objekte, zu denen aktive Verweise bestehen, werden ebenfalls serialisiert, was auch für alle verbundenen Objekte aller verbundenen Objekte gilt, und so weiter. Dieser Vorgang wird auch als Objektnetz bezeichnet. Listing A zeigt, wie die Serialisierung eines Objekts rückgängig gemacht werden kann.
Listing A
Ist ein ObjectOutputStream (basierend auf einem anderen Ausgangsstrom) erstellt worden, schreibt die Methode writeObject() ein Objekt in den Strom. Wichtig ist dabei, dass das String-Objekt in den Strom geschrieben wird, um anschließend problemlos deserialisiert zu werden. Die JVM erfasst nur die Länge eines Objekts, berücksichtigt jedoch nicht seine Größe und Struktur. Objekte können in jeden Strom geschrieben werden. Beispielsweise schreibt RMI ein Objekt in den Netzwerkstrom. Zu beachten ist, dass bei der Deserialisierung keine Methoden und auch keine Konstruktoren aufgerufen werden.
Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.
Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…
Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…
Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…
Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…
Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…