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.
Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…
Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…
Laut Bitkom-Umfrage werden in jedem dritten Unternehmen in Deutschland private KI-Zugänge genutzt. Tendenz steigend.
2023 erlitten neun von zehn Unternehmen in der DACH-Region Umsatzverluste und Kurseinbrüche in Folge von…
Der Report „Pacific Rim“ von Sophos beschreibt Katz-und-Maus-Spiel aus Angriffs- und Verteidigungsoperationen mit staatlich unterstützten…
NVIDIA DGX SuperPOD soll voraussichtlich Mitte 2025 in Betrieb genommen und für Forschungsberechnungen genutzt werden.