I know there've been plenty of discussion around this, but I could not find a satisfatory answer as to why Externalizable is really required.
I can achieve an extremely high level of customization by manually overriding readObject and writeObject methods of Serializable just as I can by overriding readExternal and writeExternal of Externaliable.
The sun documentation page on Externalizable says that...
Externalizable interface are implemented by a class to give the class complete control over the format and contents of the stream for an object and its supertypes
...but can't the same level of customization be gained by overriding Serializable?