隨筆-204  評論-149  文章-0  trackbacks-0
                當兩個進程在進行遠程通信時,無論是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方需要把這個Java對象轉換為字節序列,才能在網絡上傳送,稱為對象的序列化;接收方則需要把字節序列再恢復為Java對象,稱為對象的反序列化。 只有實現了Serializable和Externalizable接口的類的對象才能被序列化,而Externalizable接口又繼承自Serializable接口。下面是序列化和外部化接口代碼:
          SerializableMyTest
          obj1=Hello,gefforey
          obj2=Sat Jun 20 17:32:20 CST 2009
          obj3:name=Gefforey,age=23.
          obj4=520

          AppTest
          in writeExternal----1524332777
          cus==cusTemp---false
          in readExternal----1524332777
          gefforey--88

          序列化會自動存儲必要的信息,用以反序列化被存儲的實例,而外部化則只保存被存儲的類的標識。當你通過java.io.Serializable接口序列化一個對象時,有關類的信息,比如它的屬性和這些屬性的類型,都與實例數據一起被存儲起來。在選擇走Externalizable這條路時,Java 只存儲有關每個被存儲類型的非常少的信息。

          每個接口的優點和缺點

          Serializable接口

          · 優點:內建支持

          · 優點:易于實現

          · 缺點:占用空間過大

          · 缺點:由于額外的開銷導致速度變比較慢

          Externalizable接口

          · 優點:開銷較少(程序員決定存儲什么)

          · 優點:可能的速度提升

          · 缺點:虛擬機不提供任何幫助,也就是說所有的工作都落到了開發人員的肩上。

          在兩者之間如何選擇要根據應用程序的需求來定。Serializable通常是最簡單的解決方案,但是它可能會導致出現不可接受的性能問題或空間問題;在出現這些問題的情況下,Externalizable可能是一條可行之路。

          posted on 2009-06-20 17:43 Frank_Fang 閱讀(500) 評論(1)  編輯  收藏 所屬分類: Java編程

          評論:
          # re: java.io.Serializable與java.io.Externalizable的比較[未登錄] 2010-09-01 10:31 | 哈哈
          哈哈  回復  更多評論
            
          主站蜘蛛池模板: 娄底市| 永州市| 永嘉县| 高唐县| 奉贤区| 衡东县| 加查县| 承德市| 中牟县| 仁寿县| 运城市| 鄂尔多斯市| 崇州市| 洞口县| 比如县| 商洛市| 湛江市| 获嘉县| 连江县| 车致| 米林县| 内黄县| 石柱| 韶关市| 四平市| 军事| 滕州市| 青铜峡市| 河津市| 临邑县| 若尔盖县| 萝北县| 定安县| 阜新| 龙井市| 高密市| 黄石市| 新宁县| 永顺县| 昭通市| 拉萨市|