Introduction to Serialization in Java
Serialization in Java converts an object’s state into a byte stream, allowing it to be saved or transferred across networks. This guide covers what serialization is, its importance, and how it works, with code examples to demonstrate its usage.

What is Serialization and De-serialization in Java?
Serialization changes an object into a byte stream, which is useful for saving the object’s state or transferring it across networks. De-serialization, the reverse process, converts the byte stream back into a copy of the object.
How Serialization Works
Java implements serialization with the Serializable
interface. Here’s a quick example of how to serialize and de-serialize a simple Java object.
Example Code for Serialization and De-serialization:
import java.io.*; public class Employee implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; public Employee(String name, int age) { this.name = name; this.age = age; } public static void main(String[] args) { Employee employee = new Employee("Alice", 30); // Serialization try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.ser"))) { out.writeObject(employee); System.out.println("Serialization completed."); } catch (IOException e) { e.printStackTrace(); } // Deserialization try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.ser"))) { Employee deserializedEmployee = (Employee) in.readObject(); System.out.println("Deserialized Employee: " + deserializedEmployee.name + ", Age: " + deserializedEmployee.age); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } }
This code saves an Employee
object into a file through serialization and then retrieves it with deserialization, restoring the original object’s state. By default, Java prepares objects for serialization with the Serializable
interface.
Java Externalizable Interface
While Serializable
is commonly used, the Externalizable
interface provides greater control over serialization . It requires explicit methods to handle reading and writing object states, which allows you to define exactly how properties are serialized and de-serialized.
import java.io.*; public class Manager implements Externalizable { private String name; private int age; public Manager() {} // Required no-arg constructor public Manager(String name, int age) { this.name = name; this.age = age; } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(name); out.writeInt(age); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { name = (String) in.readObject(); age = in.readInt(); } }
With Externalizable
, developers have complete control over the serialization process, allowing more customized handling of object properties.
Best Practices for Serialization in Java
- Include serial Version UID: A unique ID,
serial Version UID
ensures compatibility between serialized classes and is critical for object consistency. - Use transient for Sensitive Data: Fields marked as
transient
won’t be serialized, protecting sensitive data. - Implement read Object and write Object for Customization: Custom serialization methods provide control over data serialization and deserialization.
- Consider Backward Compatibility: Modifying serialized classes can break compatibility with previous versions; manage changes carefully.
Advantages and Disadvantages of Serialization in Java
Serialization offers easy data persistence and enables data transfer across networks. However, it also has some drawbacks, like increased storage space, potential security risks, and limited flexibility with language interoperability. Weigh the pros and cons before implementing serialization in your application.
Conclusion
Serialization in Java is essential in Java for developers managing data persistence or network communications. By following best practices for serializing and deserializing objects and leveraging Java’s Serializable and Externalizable interfaces, you can use serialization effectively in your Java projects.
INTERVIEW QUESTIONS
1.What is Serialization in Java?
Company: Amazon
Serialization converts an object’s state into a byte stream, allowing you to save it to a file, send it over a network, or reconstruct it later.
2.How do you serialize an object in Java?
Company: TCS
To serialize an object, create an instance of Object Output Stream, and use the write Object() method to write the object to a file or output stream.
3.What is the serial Version UID, and why is it important in Serialization ?
Company: Infosys
The serial Version UID is a unique identifier for each class that implements Serializable. It helps ensure consistency between serialized and de-serialized classes, preventing issues during deserialization when class definitions change.
4.What is the difference between Serializable
and Externalizable
?
Company: Amazon
Serializable
is a marker interface, while Externalizable
requires two methods (write External
and read External
) for custom serialization.
5. Why is serialization in Java important?
Company: Google
Serialization is essential for saving an object’s state to persistent storage or transferring it between different parts of a network. It enables data persistence and object transmission.
QUIZZES
Serealization in Java Quiz
Question
Your answer:
Correct answer:
Your Answers