隨筆-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 閱讀(498) 評論(1)  編輯  收藏 所屬分類: Java編程

          評論:
          # re: java.io.Serializable與java.io.Externalizable的比較[未登錄] 2010-09-01 10:31 | 哈哈
          哈哈  回復  更多評論
            
          主站蜘蛛池模板: 博湖县| 高碑店市| 永春县| 开化县| 高安市| 江西省| 商水县| 林甸县| 长兴县| 嘉鱼县| 绵竹市| 汉寿县| 景德镇市| 庆云县| 田阳县| 卢氏县| 潼南县| 寻乌县| 察哈| 阳东县| 长治县| 临西县| 淮滨县| 望都县| 监利县| 肃北| 永泰县| 华坪县| 澜沧| 东乌珠穆沁旗| 保亭| 锦州市| 潍坊市| 长葛市| 吴川市| 西华县| 新田县| 平潭县| 台州市| 通州区| 台中县|