1.
Javaシリアル化の問題は、コードに依存しないことです。あなたのクラスの構造と密接に結びついている意味。他のシリアル化フレームワークは、この種の状況を回避するのに役立つ柔軟性/制御を提供します。java標準メカニズムにはwriteObjectreadObjectメソッドを介してシリアル化を制御する方法がありますが、他のfwkがより洗練された方法で対処しているという問題があります。
次に、Javaシリアル化の出力を他の言語(プラットフォーム)と交換することはできません。
少なくとも最後のではなく。Javaのシリアル化では、可能な限りコンパクトな結果が得られないため、ネットワークを介したデータの転送などを実行すると、パフォーマンスが低下する可能性があります。他のプロトコル(OracleのPOFやプロトコルバッファなど)は、より小さな出力を生成するようにさらに最適化されています。
2.
2番目の質問に関しては、シリアル化されたクラスの構造が変更された場合にコードを生成するプリコンパイルジョブを実行する必要がないことを意味していると思います。私は個人的に、ある種のコンパイル時のコード生成を強制するフレームワークを嫌います。生成されたコードを見なければならないという煩わしさは嫌いですが、それは私と私のocdだけです。