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 | Disadvantages | 
| Serializable |  |  | 
| Externalizable |  |  | 
| DataSerializable |  |  | 
| IdentifiedDataSerializable | 
More CPU and memory usage efficient than Serializable
Reflection is not used during deserialization
Supported by all Native Clients |  | 
| 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 |  |  | 
| Compact Serialization (BETA) | 
More memory usage efficient than Portable
Convenient, flexible, and can be used with no configuration
Does not require class to implement an interface
Supports schema evolution
Partial deserialization is supported during queries and indexing | 
Specific to Hazelcast
Schema is not part of the data but schema distribution
may incur costs on short-lived use cases
The format is in the BETA state and no compatibility
guarantees are given yet
Currently, not supported by the Hazelcast SQL engine | 
Let’s dig into the details of the above serialization mechanisms in the following sections.