隨筆-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 | 哈哈
          哈哈  回復  更多評論
            
          主站蜘蛛池模板: 凤台县| 新河县| 宽城| 西峡县| 古交市| 礼泉县| 南皮县| 郎溪县| 法库县| 栖霞市| 清丰县| 蓝田县| 浪卡子县| 留坝县| 平乡县| 新民市| 洪洞县| 白河县| 德阳市| 河南省| 泗阳县| 温宿县| 高唐县| 南通市| 云南省| 郎溪县| 当雄县| 望奎县| 丰顺县| 鄂托克前旗| 海宁市| 灵丘县| 金寨县| 彭州市| 新源县| 应用必备| 建昌县| 嘉祥县| 雅江县| 思茅市| 富平县|