Wissenswertes zur Serialisierung von Java-Objekten

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:

  1. Das Javabeans-Verfahren verwendet die Serialisierung.
  2. Der Aufruf entfernter Methoden (RMI) ermöglicht eine automatische Verwendung von Objekten, die sich auf einem anderen Host im Netzwerk befinden, und zwar in der gleichen Weise wie bei lokalen Objekten.

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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

4 Stunden ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

5 Stunden ago

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

13 Stunden ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

1 Tag ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

1 Tag ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

1 Tag ago