The Externalizable interface does allow complete control over the serialization process, and you have to write all the serialization code yourself. Using the standard Serializable interface may be easier, but there are cases where it may not work as required. An example might be a subclass that wants to control how it is serialized without interference from a superclass.
There is an interesting chapter (Input/Output) which talks about this in
Java Pitfalls by Daconta et al (Wiley).
[ July 24, 2003: Message edited by: Dave Cronin ]