What is Difference between Serializable and Externalizable in Java serialization?

Answer Posted / javamasque

Serializable: It is marker interface, it has no method to override in implemented class. It enables the object to be serialized. If any object is tried to serialize without implementing Serializable interface, then JVM throws NotSerializableException. It uses JVM’s default serializing mechanism. There is no control by the program over serialization.

Advantages (Serializable implemented object)
1. JVM takes responsibility to store the state of object.
2. No overhead of method implementation for logic to write or read object state, to or from stream.
3. It is recommended to use as suitable as possible.
4. No default constructor is required.

Disadvantages
1. No control over object serialization.
2. We need to manually take care of static or transient state of objects
3. We have to implement serializable interface in all of its super class (if any) that we need to serialize.

Externalizable: It is not as serializable interface. The interface has two methods to implement for logic to write (writeExternal()) or read (readExternal()) object sate or behavior, to or from stream.

Advantages (Externalizable implemented object)
1. We have full control over content of object stream.
2. There is no special attention we need to provide for static or transient properties of an object.
3. No need to implement enternalizable interface to all of its super class (if any) that we need to serialize.

Disadvantages
1. It should not use as there is really need of it.
2. Takes overhead of writing logic to save state of an object.
3. Default constructor is required.

Is This Answer Correct ?    7 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

Explain scope or life time of local variables in java?

562


Is it necessary for the port addresses to be unique? Explain with reason.

577


What data type is string java?

541


Can you write a java class that could be used both as an applet as well as an application?

519


What is the purpose of using javap?

620






Explain the reason behind ending a program with a system.exit(0)?

602


How do you declare an empty string?

624


What do heavy weight components mean in java programming?

526


How do you sort arrays in java?

528


What is the difference between a constructor and a method?

571


How to create packages in java?

533


What is byte data type?

551


Is integer passed by reference in java?

572


why an outer class cannot be declared as private?

3620


What do you mean by ordered and sorted in collections in java?

555