The table below provides a comparison between the interfaces listed in the previous section
to help you in deciding which interface to use in your applications.
Serialization Interface
Advantages
Drawbacks
Serializable
A standard and basic Java interface
Requires no implementation
More time and CPU usage
More space occupancy
Not supported by Native clients
Externalizable
A standard Java interface
More CPU and memory usage efficient than Serializable
Serialization interface must be implemented
Not supported by Native clients
DataSerializable
More CPU and memory usage efficient than Serializable
Specific to Hazelcast
Not supported by Native clients
IdentifiedDataSerializable
More CPU and memory usage efficient than Serializable
Reflection is not used during deserialization
Supported by all Native Clients
Specific to Hazelcast
Serialization interface must be implemented
A Factory and configuration must be implemented
Portable
More CPU and memory usage efficient than Serializable
Reflection is not used during deserialization
Versioning is supported
Partial deserialization is supported during Queries
Supported by all Native Clients
Specific to Hazelcast
Serialization interface must be implemented
A Factory and configuration must be implemented
Class definition is also sent with data but stored only once per class
Custom Serialization
Does not require class to implement an interface
Convenient and flexible
Can be based on StreamSerializer ByteArraySerializer
Serialization interface must be implemented
Plug in and configuration is required
Let’s dig into the details of the above serialization mechanisms in the following sections.