Serialization allows for a quick and easy way to store data after a program
finishes execution.
The serialized data is independent of the Java virtual machine (JVM) that
generated it.
This means that as long as a different computer has access to the class
files and the serialized data, the object can be reconstructed just as it
originally was.
It also allows for remote procedure calls. To call a method on another
machine, often an object is needed argument.
Serialization converts an object to a byte stream that can then be sent
over a network and deserialized on the target machine.