ation and deserialization is independent of the platform used, that is, data serialized on one machine is able to be deserialized on a completely different machine with a different platform (DAnjou, 2005).
Serialization in java has been used mainly to facilitate communication between different machines, for persistence, deep copying, caching and cross java virtual machine synchronization. The use of serialization is advantageous since it allows for refactoring , it is customizable and easy to use, allows encryption, compression and authentication thus facilitating secure computing and lastly, the mechanism allows interchange of libraries between java and other programing languages such as C++ among other advantages.
Despite the above stated functions and advantages of serialization in java, there are too many disadvantages associated with serialization. Serialization offers significant overhead thus it cannot be used with large objects. Also, the serialization facilitates increased memory requirements for a system. The use of data serialization also leads to breakage of identity of an objects, and invasion of the programming model. To address this disadvantages and limitations of serialization, an input/output process mechanism has been introduce. This mechanism is referred to as Externalization. Not only is Externalization used to eliminate the limitations of serializations, but also in some cases, it is exclusively required.
Externalization refers to the process in which externalizable interface is implemented to facilitates persistence and restoring of the object. Basically, the externizable interface works by extending the serializable interface. Moreover, the externizable interface facilitates definition of custom rules and also, definition of customizable serialization mechanism. Thus, it can be easily said that externalization is an extension of serialization. The process of using Externalization is similar to the implementation process of