a). Which is the optimized way(Seriallizable Vs Externalizable) of doing serialization?
b). If i use transient / volatile fields in serializable class any difference in using Seriallizable and Externalizable.
Probably Serializable will work best for you. Externalizable is a subinterface of Serializable, which gives you more control over how your objects are serialized and de-serialized ... though at the expense of having to write a lot more code yourself.
The volatile keyword doesn't affect serialization in any way. Member variables marked transient are not serialized from normal Serializable classes, but for Externalizable classes, you decide what gets serialized and what doesn't, so it seems to me that the transient keyword wouldn't do anything.