このスレッドに投稿された多くの非常に役立つ回答シリアライゼーションに関する私の疑問を解決するのに役立ちました。応答から、jvmでデータを永続化して再作成する手段にすぎないことを理解しています。したがって、バイトストリームからJavaオブジェクトを再作成するためにシリアライゼーションが使用されます。ただし、データは XML / JSON またはその他のデータ形式を介して転送できます。これをシリーズ化と呼べるでしょうか?違いは、関連する Java ライブラリが、渡されたデータの形式に基づいて、バイト ストリーム / xml データ / json データなどを使用してオブジェクトを再作成することだと思います。2 つの Java ベースのシステム間の通信の場合、異なるテクノロジで動作する 2 つのシステム間の通信の場合のように、他の標準データ形式が使用される場合、bytestream が役立つと思います。EJB / Java RMI の場合、Javaが標準のシリアライゼーションAPIを使用してオブジェクトをデシリアライズすると想定しているため、クライアントとサーバー間で転送されるオブジェクトをシリアライズする必要があると想定しています。上記のリストはすべて正しいですか?
1 に答える
ウィキはそれをうまく要約している、
In computer science, in the context of data storage and transmission,
serialization is the process of translating data structures or
object state into a format that can be stored
だからあなたの最初の質問
ただし、データは XML / JSON またはその他のデータ形式を介して転送できます。これをシリーズ化と呼べるでしょうか?
そのとおり。保存できるものであれば、どんなフォーマットでも構いません。
質問 2:
2 つの Java ベースのシステム間の通信の場合、異なるテクノロジで動作する 2 つのシステム間の通信の場合のように、他の標準データ形式が使用される場合、bytestream が役立つと思います。
実際、Java のビルトイン シリアライゼーションは、ユーザーにはほとんど見えず、速度が問題にならない場合にのみ使用される傾向があります。たとえば、一部の分散製品は、Java シリアライゼーションを使用して、あるノードから別のノードにオブジェクトを送信する場合があります。JVM を利用したサービスから別のサービスまで、どのような種類の Web サービスでも、JSON や XML などの使いやすい形式の方がはるかに一般的です。速度が重要であるか、ペイロード サイズをできるだけ小さくする必要がある製品では、Java のシリアライゼーションは使用せず、優先度の高いバイナリ形式を使用する可能性があります。
protobuf、avro、thriftなどのプロトコルは、両方の長所を活かすように設計されています。それらはある程度人気がありますが、普遍的ではありません.
マーシャラーまたはオブジェクトのマーシャリングのように、マーシャリングという用語を耳にすることもあります。これらは基本的に同じことを意味しますが、Java の世界では、非バイナリ形式について話しているときにマーシャリングを聞くことがより一般的であり、バイナリ形式について話しているときにシリアライゼーションを聞くのが一般的です。