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.