Java Externalizable vs. Serializable

Statt des Java Interfaces Serializable kann mit dem alternativen Interface Externalizable die volle Kontrolle über den Vorgang der Serialisierung übernommen werden. Insbesondere lässt sich in vielen Situationen der Speicherbedarf des serialisierten Objekts deutlich verringern, indem man bewusst auf einigen Overhead verzichtet. Um diesen Unterschied zu messen, kann man zwei Klassen erstellen, die jeweils Serializable bzw. Externalizable implementieren und einige Variablen mit festen Werten enthalten. Anschließend schreibt man diese Objekte via ObjectOutputStream und FileOutputStream in zwei Dateien und betrachtet die resultierende Dateigröße – allerdings nicht die Dateigröße auf der Festplatte, die von der Blockgröße des Dateisystems abhängt, sondern nur die Größe des eigentlichen Inhalts. Ich möchte hier auf ein paar Dinge hinweisen, die mir beim Experimentieren aufgefallen sind. Versuchskaninchen waren zwei Klassen E und S im Package C mit jeweils zwei Variablen des primitiven Typs int. E implementiert Externalizable, S Serializable.

to be continued…