隨筆-204  評(píng)論-149  文章-0  trackbacks-0
                當(dāng)兩個(gè)進(jìn)程在進(jìn)行遠(yuǎn)程通信時(shí),無(wú)論是何種類型的數(shù)據(jù),都會(huì)以二進(jìn)制序列的形式在網(wǎng)絡(luò)上傳送。發(fā)送方需要把這個(gè)Java對(duì)象轉(zhuǎn)換為字節(jié)序列,才能在網(wǎng)絡(luò)上傳送,稱為對(duì)象的序列化;接收方則需要把字節(jié)序列再恢復(fù)為Java對(duì)象,稱為對(duì)象的反序列化。 只有實(shí)現(xiàn)了Serializable和Externalizable接口的類的對(duì)象才能被序列化,而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

          序列化會(huì)自動(dòng)存儲(chǔ)必要的信息,用以反序列化被存儲(chǔ)的實(shí)例,而外部化則只保存被存儲(chǔ)的類的標(biāo)識(shí)。當(dāng)你通過(guò)java.io.Serializable接口序列化一個(gè)對(duì)象時(shí),有關(guān)類的信息,比如它的屬性和這些屬性的類型,都與實(shí)例數(shù)據(jù)一起被存儲(chǔ)起來(lái)。在選擇走Externalizable這條路時(shí),Java 只存儲(chǔ)有關(guān)每個(gè)被存儲(chǔ)類型的非常少的信息。

          每個(gè)接口的優(yōu)點(diǎn)和缺點(diǎn)

          Serializable接口

          · 優(yōu)點(diǎn):內(nèi)建支持

          · 優(yōu)點(diǎn):易于實(shí)現(xiàn)

          · 缺點(diǎn):占用空間過(guò)大

          · 缺點(diǎn):由于額外的開(kāi)銷導(dǎo)致速度變比較慢

          Externalizable接口

          · 優(yōu)點(diǎn):開(kāi)銷較少(程序員決定存儲(chǔ)什么)

          · 優(yōu)點(diǎn):可能的速度提升

          · 缺點(diǎn):虛擬機(jī)不提供任何幫助,也就是說(shuō)所有的工作都落到了開(kāi)發(fā)人員的肩上。

          在兩者之間如何選擇要根據(jù)應(yīng)用程序的需求來(lái)定。Serializable通常是最簡(jiǎn)單的解決方案,但是它可能會(huì)導(dǎo)致出現(xiàn)不可接受的性能問(wèn)題或空間問(wèn)題;在出現(xiàn)這些問(wèn)題的情況下,Externalizable可能是一條可行之路。

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

          評(píng)論:
          # re: java.io.Serializable與java.io.Externalizable的比較[未登錄](méi) 2010-09-01 10:31 | 哈哈
          主站蜘蛛池模板: 全南县| 东乡县| 柘城县| 临泽县| 和平区| 郧西县| 剑河县| 娱乐| 古田县| 拜城县| 房产| 视频| 绿春县| 安丘市| 临江市| 巴里| 德庆县| 湘潭市| 博客| 渝北区| 吉林省| 会同县| 海门市| 湘潭市| 克拉玛依市| 灌云县| 田东县| 乐至县| 浦城县| 开阳县| 文山县| 新闻| 敦煌市| 微博| 武邑县| 金秀| 惠来县| 小金县| 东海县| 拜城县| 呈贡县|