Object Serialization

Why is Object Serialization needed?

Object persistency preserves the state of objects beyond the lifetime of the programs that instantiated. Without it, it is impossible to save objects and to transfer objects on a network. Java object persistency is realized in the form of Object Serialization.

How does Java do the job?

It is very easy to serialize a java object by only implementing either the java.io.Serializable or java.io.Externalizable interface.

An example

import java.io.*;
import java.util.*;

class aSerializedObj implements Serializable {
   private int id;
   private String name;
	
   aSerializedObj (int id, String name) {
      this.id = id;
      this.name = name;
   }
	
   public void print() {
      System.out.println("ID: " + id);
      System.out.println("Name: " + name);
      System.out.println();
      }
}

public class atry {
   public static void main(String args[]) throws Exception {
      aSerializedObj as1 = new aSerializedObj(1, "no. 1");
      aSerializedObj as2 = new aSerializedObj(2, "no. 2");
      aSerializedObj as3 = new aSerializedObj(3, "no. 3");
      Vector av = new Vector();
      av.addElement(as1);
      av.addElement(as2);
      av.addElement(as3);
	
      //write serialized objects to a file
      FileOutputStream fo = new FileOutputStream ("test.txt");
      ObjectOutputStream oos = new ObjectOutputStream (fo);
      oos.writeObject(av);
	
      oos.flush();
      oos.close();
      fo.close();
      av.clear();
		
      //read serialized objects from a file
      FileInputStream fi = new FileInputStream ("test.txt");
      ObjectInputStream ois = new ObjectInputStream (fi);
      av = (Vector) ois.readObject();
	
      for(int i=0; i<av.size();i++) {
         ((aSerializedObj)av.elementAt(i)).print();
      }
	
      ois.close();
      fi.close();
      av.clear();
   }
}