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: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

2 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

3 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

3 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

5 Tagen ago