999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java序列化技術的探討

2011-12-27 12:06:40立,沈
紅河學院學報 2011年4期
關鍵詞:語言

晏 立,沈 銳

(紅河學院 工學院,云南 蒙自 661100)

Java序列化技術的探討

晏 立,沈 銳

(紅河學院 工學院,云南 蒙自 661100)

對象序列化是Java中的重要技術,在RMI、AJAX、Web Service等方面都有應用。文章介紹了幾種常用的Java序列化技術,并通過比較、分析這些技術在功能、序列化后的字節數和序列化/反序列化速度方面的差異,得出了在什么應用環境下應如何選擇序列化技術框架。

Java; 序列化; XML; JSON

1 序列化概述

序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化.將對象狀態轉換成流之后,可以將其保存到文件、管道、另一進程、通過網絡將對象發送到另一主機,或發送到Web客戶端.對象序列化功能非常簡單、強大,在RMI、Socket、JMS、EJB、AJAX、Web Service都有應用.

1、對象序列化可以實現分布式對象.主要應用例如:RMI要利用對象序列化運行遠程主機上的服務,就像在本地機上運行對象時一樣.

2、java對象序列化不僅保留一個對象的數據,而且遞歸保存對象引用的每個對象的數據.可以將整個對象層次寫入字節流中,可以保存在文件中或在網絡連接上傳遞.利用對象序列化可以進行對象的“深復制”,即復制對象本身及引用的對象本身.序列化一個對象可能得到整個對象序列.

2 序列化方法介紹

2.1 Java對象序列化

Java 對象序列化是 JDK中引入的開創性特性之一,用于作為一種將 Java 對象的狀態轉換為字節數組,以便存儲或傳輸的機制,以后,仍可以將字節數組轉換回 Java 對象原有的狀態[1].

使用Java的對象序列化方法比較簡單,只需要把實現Serializable接口,該對象就可以被序列化.序列化把對象轉換成一組byte,這樣日后要用這個對象時候,就能把這些byte數據恢復出來,并重新構建原來的對象了.

2.2 XML

近些年來,已經有多個 Java XML框架來簡化XML 文檔到 Java 對象圖的綁定過程.這些框架都提供了 XML 序列化和反序列化功能.這些框架封裝了XML 處理的全部工作,應用程序代碼只需要處理普通的 Java 類.這些框架采用了兩種不同的方式:代碼生成和對象到 XML 映射.

2.2.1 代碼生成方式

使用代碼生成的框架有XMLBeans、JAXB、Zeus和 JBind等.這類框架首先要建立描述文檔數據類型的 XML方案,然后使用框架提供的工具,就可以生成與這些XML方案匹配的 Java 類.最后,用這些生成的類編寫應用程序,并通過框架提供的API把數據序列化成 XML.這種類型的 XML 綁定框架在數據拆解時最有用(例如,使用 XML 文檔并把它們轉化成Java 對象).

代碼生成方式適用于應用程序要使用大型 XML語法,這樣的好處是不再需要定義自己的 JavaBean.但框架生成的 Java 類不能編輯.如果修改了XML方案,生成的類也要重新生成.

2.2.2 映射方式

采用映射方式的框架包括 JAXB[3]、XStream[2]、Castor 和 Apache Commons Betwixt.映射通常是比代碼生成更靈活和更輕量的解決方案.首先,可以像通常一樣編寫 JavaBean,包括任何行為以及任何自己喜歡的方便的方法.然后,在運行時,調用框架中基于反射的工具,并根據對象成員的類型、名稱和值生成 XML 文檔.通過定義類的映射文件,或使用注釋自定義XML生成方式.

下面重點介紹JAXB和XStream:

(1)JAXB

JAXB(Java Architecture for XML Binding簡稱JAXB)允許Java開發人員將Java類映射為XML的框架.JAXB提供兩種主要特性:將一個Java對象序列化為XML,以及反向操作,將XML解析成Java對象.

當XML格式復雜且經常變化時JAXB特別有用.在這種情況下,經常修改XML模式定義以與Java定義保持一致很花費時間并且容易產生錯誤,而使用JAXB這種一致是自動完成的.

(2)XStream

XStream 是一個輕量級的、簡單易用的開放源代碼 Java 庫,用于將 Java 對象序列化為 XML 或反序列化[2].

使用 XStream 不用任何映射就能實現多數 Java對象的序列化.在生成的 XML 中Java類名,變量名變成了元素名,對象中的值組成了 XML 中的元素內容.使用 XStream 序列化的類不需要實現 Serializable接口.XStream 是一種序列化工具而不是數據綁定工具,就是說不能從 XML 或者 XML Schema Definition(XSD) 文件生成類.和其他序列化工具相比,XStream有三個突出的特點:

(1)XStream 不關心序列化/逆序列化的類的字段的可見性.

(2)序列化/逆序列化類的字段不需要 getter 和setter 方法.

(3)序列化/逆序列化的類不需要有默認構造函數.

2.3 JSON

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式.易于人閱讀和編寫,同時也易于機器解析和生成.它是基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集[4].JSON采用完全獨立于語言的文本格式,這使JSON成為理想的數據交換語言.

JSON建構于兩種結構:

(1)“名稱/值”對的集合.不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組(associative array).

(2)值的有序列表(An ordered list of values).在大部分語言中,它被理解為數組(array).

這些都是常見的數據結構.大部分現代計算機語言都支持它們.所以JSON可以用于不同的編程語言之間交換數據,比較常見的就是在Web開發中Javascript和Java、C#間交互.

2.4 Protocol Buffers

Protocol Buffers是Google提供的一個開源序列化框架[6],類似于XML,JSON這樣的數據表示語言,其最大的特點是基于二進制,因此比傳統的XML表示高效短小得多.雖然是二進制數據格式,但并沒有因此變得復雜,開發人員通過按照一定的語法定義結構化的消息格式,然后使用工具自動生成相關的類.protobuf可以支持java、c++、python等語言環境.

3 比較序列化技術

前面已經介紹了把 Java 序列化的4種不同技術.每種技術都有自己的優勢和不足,分別適用于不同的應用程序架構.下面從功能和效率上比較了這些序列化技術.

硬件環境:CPU: Pentium T4300, RAM: 4G;

軟件環境:JDK 1.6.021

用于測試的類有兩個分別是:Person和PhoneNumber,類UML圖如圖1所示,功能比較的結果如表1所示.

圖1 測試類Person和PhoneNumber

表1 Java序列化功能比較

效率測試時,每類測試執行10組,每組共執行序列化和反序列化操練100,000次,去掉最快和最慢的兩組,對剩下的8組取平均,結果如表2所示.

表2 Java序列化效率比較

4 結論

前面的測試數據并不表明某項序列化技術比其他的技術好.畢竟不同標準的相對重要性取決于項目的具體情況.例如,如果要處理數百種數據類型,這時想要的是可伸縮性,那么使用JAXB或Protocol Buffers的代碼生成可能就是最好的選擇.如果處理的是小規模項目,想降低需要編寫的 JavaScript 代碼數量,那么JSON是比較好的選擇.如果要跨平臺交換數據,XML或Protocol Buffers是比較好的選擇,如果效率的要求比較高Protocol Buffers是最好的.

[1] JAVA API.http://java.sun.com/javase/6/docs/api/ 2010.

[2] XStream.http://xstream.codehaus.org/.

[3] JAXB.http://jaxb.java.net/.

[4] JSON.http://www.json.org/.

[5] Jackson.http://jackson.codehaus.org/.

[6] Protocol Buffers.http://code.google.com/apis/protocolbuffers/.

Java Serialization Technology

YAN Li SHEN Rui
(Engineering College, Honghe University, Mengzi 661100, China)

Object serialization is an important technology of Java, which is used in RMI, AJAX, Web Service, etc.This paper introduces several common techniques of Java serialization, by comparing and analyzing the differences of these techniques in function,space consumption after serialization, speed of serialization/deserialization, and getting how to choose the framework of serialization technology in what kind of application environment.

Java; serialization; XML; JSON

TP3

A

1008-9128(2011)04-0037-03

2011-05-02

晏立(1974-),男,云南個舊人,工學碩士.研究方向:計算機網絡、P2P、軟件工程研究.

[責任編輯 張燦邦]

猜你喜歡
語言
詩之新,以語言創造為基
中華詩詞(2023年8期)2023-02-06 08:51:28
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態分析下的同聲傳譯語言壓縮
日常語言與播音語言
新聞傳播(2016年10期)2016-09-26 12:15:04
語言技能退化與語言瀕危
我有我語言
論語言的“得體”
語文知識(2014年10期)2014-02-28 22:00:56
Only Words慎用你的語言
主站蜘蛛池模板: 国产一级毛片网站| 成人中文字幕在线| 免费全部高H视频无码无遮掩| 国产福利大秀91| 亚洲自拍另类| 日韩av无码DVD| 午夜无码一区二区三区在线app| 免费人成在线观看成人片 | 在线永久免费观看的毛片| 日韩A级毛片一区二区三区| 91av国产在线| 欧美yw精品日本国产精品| 一区二区午夜| 亚洲h视频在线| 日韩成人高清无码| 日韩黄色精品| 欧美国产日本高清不卡| 中文字幕伦视频| 国产好痛疼轻点好爽的视频| 欧美一级黄片一区2区| 亚洲人成亚洲精品| 97精品国产高清久久久久蜜芽| 国产真实乱人视频| 色婷婷国产精品视频| P尤物久久99国产综合精品| 欧美日韩国产综合视频在线观看 | 国产免费观看av大片的网站| 亚洲一区第一页| 无码人妻免费| av天堂最新版在线| 国产爽爽视频| 国产第一福利影院| 国产JIZzJIzz视频全部免费| 免费国产小视频在线观看| 一本大道无码日韩精品影视| 国产在线自揄拍揄视频网站| 亚洲中文字幕国产av| 国产玖玖玖精品视频| 国产精品美人久久久久久AV| 五月婷婷导航| 性喷潮久久久久久久久| 亚洲欧州色色免费AV| 亚洲日韩高清无码| 亚洲成人网在线播放| 草草线在成年免费视频2| 日本伊人色综合网| 欧美黄网站免费观看| 国产丝袜精品| 在线国产资源| 国产成人毛片| 国产主播喷水| 专干老肥熟女视频网站| 亚洲无码在线午夜电影| 国产精品自在线天天看片| 久青草免费在线视频| 成年女人18毛片毛片免费| 538国产在线| 国产一级视频久久| 久久99国产乱子伦精品免| 亚洲第一综合天堂另类专| 伊人婷婷色香五月综合缴缴情| 亚洲欧美日韩精品专区| 国产精品自在在线午夜区app| 亚洲AV色香蕉一区二区| 91亚洲精选| 香蕉伊思人视频| 亚洲三级色| 五月激激激综合网色播免费| 视频在线观看一区二区| 精品久久久无码专区中文字幕| a级毛片毛片免费观看久潮| 亚州AV秘 一区二区三区| 日韩中文字幕亚洲无线码| 日本欧美一二三区色视频| 国产成人乱码一区二区三区在线| 中国精品久久| 欧美精品影院| 伊人91在线| 国产精品yjizz视频网一二区| 亚洲伦理一区二区| 久久99久久无码毛片一区二区| 免费国产一级 片内射老|