1 Persist data for future use.
2 Send data to a remote computer using such client/server Java
technologies as RMI or socket programming.
3 "flatten" an object into array of bytes in memory.
4 Exchange data between applets and servlets.
5 Store user session in Web applications.
6 To activate/passivate enterprise java beans.
7 Send objects between the servers in a cluster.