Serializable is a marker interface but Externalizable is not a marker
interface.
When we implement Serializable interface, the class is serialized
automatically by default. We can override writeObject() and
readObject()methods to control more complex object Serialization
process.
In case of Externalizable, we use readExternal() and
writeExternal() methods to give control to class for class's
serialization process.
Serializable interface is based on recursive algorithm.
Serializable gives you two options. One option is to provide custom
way of serialization, the other default way. In Externalizable, you
have to always implement readExternal() and writeExternal()
methods.
A public no-arg constructor is needed while using Externalizable
interface.
In Serialization, we need to define serialVersionUID. If it is not
explicitly defined it will be generated automatically based on all the
fields, methods of the class