Object Serialization

Revised: Mar./23rd/2002

Object Serialization とは何か

オブジェクトの直列化 (Object Serialization) とは、オブジェクトとそこから参照されているオブジェクトを、バイトストリームにコード化することです。このことによって、基本データ型、文字列型の入出力ストリームと同様に、オブジェクトを入出力することが出来ます。

オブジェクトを出力ストリームで書き込むことを直列化 (serialize)、入力ストリームから読み込んでオブジェクトに復元することを直列化復元 (deserialize) と呼びます。 JavaVM の外部に対して、オブジェクトを入出力する仕組みだと考えて良いでしょう。

直列化直列化復元という言葉は直感的ではないのですが、 SunMicrosystems がこの言葉を充てているので、本稿でもそれに従います。シリアル化デシリアル化シリアライズデシリアライズという言葉で読み替えた方が分かりやすいかもしれません。

オブジェクトの直列化の概要

直列化できるオブジェクトは、 java.io.Serializable インタフェースを実装するクラスか、それを継承したサブクラスから作られたものです。このインタフェースを実装したクラスから作られたオブジェクトは、 ObjectInputStream/ObjectOutputStream によって入出力可能です。

こうして作られた直列化可能オブジェクトの入出力では、このオブジェクトが保持している他のオブジェクトへの参照を自動的辿って、関連するオブジェクトが全て入出力されます。

オブジェクトを直列化するときに、直列化しないフィールドを宣言しておくこともできます。また、直列化プロセスを明示的に制御することも可能です。この場合は、 Serializable インタフェースを継承した java.io.Externalizable インタフェースを実装します。

オブジェクトを直列化/復元することで、オブジェクトをファイルに保存して持続的 (persistent) に利用したり、ネットワーキングでソケットストリームを用いてリモートホスト間でやりとりすることが出来ます。



Copyright © 2002 SUGAI, Manabu. All Rights Reserved.