Kita dapat menyimpan sebuah keadaan Objek dengan Menserialisasi Objek tersebut.
Untuk Menserialisasi sebuah Objek, kita butuh sebuah ObjectOutputStream (dari java.io)
Streams (Bahasa indonesianya : aliran) terbagi menjadi 2, yaitu Aliran Koneksi (Connection Streams) atau Aliran Berantai (Chain Streams).
Connection Streams dapat digambarkan sebagai sebuah Koneksi ke sebuah sumber atau tujuan, khususnya sebuah file, koneksi jaringan soket, atau konsol.
Chain Streams Tidak dapat menghubungkan ke sebuah sumber atau tujuan dan harus di dirantai ke sebuah aliran koneksi (atau lainnya).
Untuk menserialisasikan sebuah Objek ke file, buat sebuah FileOutputStream dan rantaikan ia ke sebuah ObjectOutputStream.
Untuk menserialisasikan sebuah Objek, panggil writeObject(objek) pada ObjectOutputStream. Kita tidak butuh memanggil method pada FileOutpurStream.
Untuk menserialisasi, sebuah objek harus impelementasikan Interface Serializable. Jika sebuah superclass meng-implementasikan Serializable, subclass akan secara otomatis di Serialisasikan bahkan jika tidak diberikan implementasi Serializable.
Ketika sebuah Objek diserialisasikan, Seluruh Grafik Objek akan diserialisasi. Yang berarti objek referensi dari instans variable objek yang diserialisasi manapun akan diserialisasikan.
Jika beberapa objek di grafik tidak diserialisasi, sebuah exception (pengecualian) akan dijalankan pada saat program dieksekusi, kecuali instance variable yang mengacu ke objek dilewati.
Tanda sebuah Instance Variable dengan kata kunci transient jika kita ingin proses serialisasi melewati / mengabaikan instance variable tsb. Variable akan diberikan niali null (untuk objek referensi) atau nilai default (untuk primitive).
Selama Deserialisasi, class dari semua Objek-Objek di grafik Harus tersedia di JVM (Java Virtual Machine).
Kita membaca objek di (menggunakan readObject() ) di dalam urutan ketika objek-objek tsb ditulis / dimasukkan ke JVM.
Tipe kembalian (return) dari readObject() adalah tipe Objek, jadi Objek-objek deserialisasi harus melemparkannya ke tipe sebenarnya (int, string atau primitive lainnya).
Variabel Static TIDAK DISERIALISASI! Tidak masuk akal untuk menyimpan sebuah nilai static variable dari keadaan objek yang spesifik, karena semua objek-objek yang diketik hanya membagi sebuah nilai tunggal.