Wednesday, March 26, 2008

Java Object Serialization

Serialization is a process of reading or writing an object. It is a process of saving an object’s state to a sequence of
bytes, as well as a process of rebuilding those bytes back into a live object at some future time. An object is
marked serializable by implementing the java.io.Serializable interface, which is only a marker interface -- it simply
allows the serialization mechanism to verify that the class can be persisted, typically to a file.

Transient variables cannot be serialized. The fields marked transient in a serializable object will not be
transmitted in the byte stream. An example would be a file handle or a database connection. Such objects are only
meaningful locally. So they should be marked as transient in a serializable class.
Serialization can adversely affect performance since it:
􀂃 Depends on reflection.
􀂃 Has an incredibly verbose data format.
􀂃 Is very easy to send surplus data.
When to use serialization? Do not use serialization if you do not have to. A common use of serialization is to use
it to send an object over the network or if the state of an object needs to be persisted to a flat file or a database.
Deep cloning or copy can be achieved through serialization. This may be fast
to code but will have performance implications .
The objects stored in an HTTP session should be serializable to support in-memory replication of sessions to
achieve scalability . Objects are passed in RMI (Remote Method Invocation)
across network using serialization.

No comments: