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.