This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
There is really no performance hit if you implement Serializable, but you should implement it with care. Not everything should be Serializable. Remember if you make something Serializable, then its entire object tree must also be Serializable. So it could turn into a lot of extra work for no good reason.
Also, you probably don't want to make everything Serializable because some objects should not be serialized. For examples, GUI objects (in general) should not need not need to be serialized. If they do, that may be an indication of bad design.
Bottom line is, just because you can implement Serializable for everything doesn't necessarily mean you should.
I've actually been working a lot with serialization in conjunction with Quartz Scheduler. I'm basically putting a serialized class(x.y.Clazz) into the database (blob) and then when it gets pulled to execute the x.y.Clazz , the version has changed because I updated it while x.y.Clazz was persisted.
I solved it by other means. But I realized the solution would be to start using XML because it's easier to manage certain aspects like not knowing where our classes were going..