Serialization is the process of converting an object from its in-memory representation to a sequence of bytes suitable for saving to a file, sending across a network or passing between processes. The reverse process, unpacking the byte sequence and recreating the object, is known as deserialization. Typically the in-memory representation includes pointers to other objects, or the object is represented internally by a number of non-contiguous areas of memory (e.g. ArrayList). The pointers cannot be written directly to the byte sequence, because they won't have the same meaning in the target process (whether on another system, the same process at a later point, ...)