Serialization is the process of converting a Java object into a sequence of bytes so that it can be stored in a file, transferred over a network, or persisted for future use. Deserialization is the reverse process, where the byte stream is converted back into an object.
Key Points: • Serialization converts an object's state into a byte stream. • Deserialization reconstructs the object from the byte stream. • A class must implement the Serializable interface to support serialization. • Serialization is commonly used for file storage, caching, distributed systems, and network communication. • The transient keyword can be used to exclude specific fields from serialization.
Example: Suppose a User object needs to be saved to a file and restored later. Serialization allows the object's state to be preserved even after the application stops running.
Code Example:
import java.io.Serializable;
class User implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}In this example, the User object can be converted into a byte stream and later restored through deserialization.
Common Use Cases:
• Saving object state to files • Sending objects over a network • Distributed applications • Session management • Caching mechanisms
Important Concepts:
Serializable Interface: • Marker interface provided by Java • Does not contain any methods • Indicates that objects of the class can be serialized
serialVersionUID: • Unique version identifier for a serializable class • Helps ensure compatibility during deserialization
transient Keyword: • Prevents sensitive or unnecessary fields from being serialized
Example:
transient String password;
Benefits of Serialization:
• Enables object persistence • Simplifies data transfer between systems • Supports distributed computing • Facilitates caching and session replication
Interview Tip: A concise interview answer is:
"Serialization is the process of converting a Java object into a byte stream so it can be stored or transmitted. Deserialization converts the byte stream back into an object. A class must implement the Serializable interface to participate in this process."