Chapter 10. Object Serialization

To serialize an object means to write its complete internal state (including its private state) to a byte stream in such a way that a copy of the object can be reconstituted at some later time. When an object is serialized, the entire object graph of all the objects it refers to are serialized along with it. This means it's possible to serialize complex data structures such as binary trees. It's also possible to serialize applets and complete GUI component hierarchies. Serialization is a critical piece of Remote Method Invocation (see Chapter 21) because it allows objects (as long as they are Serializable) to be passed across the network. Serialization also provides a convenient way to produce a "deep clone" of an object graph. Serialization can also be used as a trivial technique for saving application state: just serialize the data structures to disk. This requires care, however, because the serialization file format is sensitive to implementation changes in your classes. In Java 1.4, the java.beans package (see Chapter 15) provides a JavaBeans-based persistence mechanism that is often a better alternative for long-term persistence.

This chapter shows how to serialize and deserialize objects, and how to write serializable classes that make simple use of the serialization mechanism. Serialization is actually a surprisingly complex problem, and the serialization mechanism has been updated with each release of Java. This chapter does not attempt to cover any of the complex details. Joshua Bloch's book Effective Java Programming Language Guide (Addison-Wesley) includes an excellent discussion of serialization that goes as deep as most of us ever need to go. If you do need to understand the gory details, see the Java Object Serialization Specification that is shipped as part of the documentation bundle for the Java SDK.



Java Examples in a Nutshell
Java Examples in a Nutshell, 3rd Edition
ISBN: 0596006209
EAN: 2147483647
Year: 2003
Pages: 285

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net