新聞中心
本文和大家重點討論一下基于J2ME/J2EE的JSON數(shù)據(jù)交換,J2ME(Java2PlatformMicroEdition)是Java2的一部分。將Java語言與平臺無關的特性移植到小型電子設備上,允許移動無線設備之間共享應用程序。

成都創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設的網(wǎng)絡公司;我們對營銷、技術、服務都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關注我們的成都網(wǎng)站制作、做網(wǎng)站質(zhì)量和服務品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術創(chuàng)新,服務升級,滿足企業(yè)一站式營銷型網(wǎng)站建設需求,讓再小的品牌網(wǎng)站制作也能產(chǎn)生價值!
基于J2ME/J2EE的JSON數(shù)據(jù)交換的探討
1引言
隨著無線技術的發(fā)展和無線通信設備的普及,基于手機、PDA等小型消費類和嵌人式設備的無線移動應用越來越廣泛。在可編程手機中,基于Java的手機最為通行,事實上,Java已為多數(shù)手機制造商所接受,成為手機應用與服務的標準。構(gòu)建網(wǎng)絡感知軟件時,選擇正確的數(shù)據(jù)交換格式是一項重要的設計決策,尤其在設計移動和嵌入式應用程序時,此時,輕量和有效等特性是需要考慮的重要特征。此類特征非常重要,因為它們可轉(zhuǎn)化為較低的計算要求和功耗使用、能發(fā)揮更好的性能以及較低的運營成本。這里研究JSON數(shù)據(jù)交換格式相比XML和傳統(tǒng)數(shù)據(jù)交換格式所具有的優(yōu)勢,并提出在客戶端(J2ME)與服務器端(J2EE)之間采用JSON數(shù)據(jù)交換格式的一般實現(xiàn)框架。
2J2ME/J2EE簡介
J2ME(Java2PlatformMicroEdition)是Java2的一部分。將Java語言與平臺無關的特性移植到小型電子設備上,允許移動無線設備之間共享應用程序。J2ME是針對有限硬件、有限功率、有限網(wǎng)絡連接設備進行應用開發(fā)的技術,適合在無限通信設備上開發(fā)交互性較強的網(wǎng)絡應用。在此基礎上編寫的MIDP應用程序具有良好的兼容性和可移植性,可在PDA等手持設備上很好的運行。
J2EE是Java2平臺的企業(yè)版,是一種利用Java2平臺簡化企業(yè)解決方案的體系結(jié)構(gòu)。J2EE使用多層分布應用模型,其典型的4層結(jié)構(gòu)為:
①運行在客戶端機器上的客戶層組件,如Web瀏覽器、JavaApplet等;
②運行在J2EE服務器上的Web層組件,如Servlet和JSP;
③運行在J2EE服務器上的業(yè)務邏輯層組件(EJB);
④運行在EJS(EnterpriseInformationSystem)服務器上的企業(yè)信息系統(tǒng)層軟件。
3JSON簡介
JSON(JavaScriptObjectNoation)是一種輕量級的數(shù)據(jù)交換格式,易于閱讀和編寫,也易于機器解析和生成。JSON采用完全獨立于語言的文本格式,但也使用類似于C語言家族的習慣。這些特性使JSON成為理想的數(shù)據(jù)交換語言。
JSON格式的數(shù)據(jù)有對象和數(shù)組兩種。對象是一個無序的“名稱/值”對集合。一個對象以“{”開始,“}”結(jié)束。每個“名稱”后跟一個“:”;“名稱/值”對之間使用“,”分隔。數(shù)組值(value)的有序結(jié)合。一個數(shù)組以“{”開始,“}”結(jié)束。值之間使用“,”分隔。
4數(shù)據(jù)交換格式分析
XML是一種用于描述信息存儲格式的語言,其優(yōu)點是健壯性和描述性強,且是新一代開放、可互操作的WebServices選用的通信數(shù)據(jù)格式。在移動應用程序中,開發(fā)者通常自己創(chuàng)建數(shù)據(jù)交換格式或可擴展標記語言XML。前者的優(yōu)勢是可針對特定情況進行調(diào)整,從而最大限度地提高性能,并最大限度地利用計算資源。當在HTTP上使用后者時,其優(yōu)勢在于它是事實上的數(shù)據(jù)交換標準。另外,在XML中使用的基于文本的表示形式使其易于調(diào)試。這兩種方法各有其缺陷,前者本質(zhì)上是專用的、非標準的,并可能是不可互操作的,而后者數(shù)據(jù)表示過于正規(guī)和繁瑣,對于移動和嵌入式應用程序尤其如此。
JSON是一種輕量級的數(shù)據(jù)交換格式,是基于文本的,具有良好的可讀性且易于調(diào)試。JSON支持所有基本數(shù)據(jù)類型的表示法,并提供將這些數(shù)據(jù)類型相互解析為Java類型的方法。對于輕量級應用,JSON數(shù)據(jù)交換格式能夠較好的節(jié)省手機的計算資源,減少網(wǎng)絡傳輸時間,加快網(wǎng)絡傳輸速度。#p#
5數(shù)據(jù)交換框架實現(xiàn)
5.1框架總體設計
框架結(jié)構(gòu)包括2部分:J2ME客戶端和J2EE服務器端??蛻舳瞬捎肑2ME的MIDP技術,服務器端使用J2EE的servlet技術??蛻舳耸褂肏TTP協(xié)議發(fā)送已序列化的JSON消息到服務器端,服務器端通過反序列化JSON消息,根據(jù)客戶端請求進行相應的操作后,把請求的結(jié)果序列化成JSON消息返回給客戶端,客戶端獲取到返回的JSON消息后,反序列化成具體需要的數(shù)據(jù)。圖1為總體設計框架。
5.2服務器端
服務器端使用serverlet接收客戶端發(fā)送的基于HTTP協(xié)議的JSON消息,并調(diào)用JSONObject類對JSON進行反序列化操作,得到所需的詳細信息。根據(jù)JSON格式的數(shù)據(jù)類型,需要分3種情況對JSON格式的數(shù)據(jù)進行反序列化:
①簡單的對象形式。實現(xiàn)方法:創(chuàng)建一個JSONObiect實例,然后調(diào)用getString()函數(shù),具體形式如下:
- JSONObjectjsonObj=newJSONObject(message);
- Stringtitle=jsonObj.getString(“title”);
其中message為接收到的JSON消息,title代表想要獲取的名稱。
②對象里面嵌套對象的形式。實現(xiàn)方法:在原對象基礎上調(diào)用其getJSONObject()方法。具體形式如下:
- JSONObjectbody_obj=jsonObj.getJSONObject();
③數(shù)組形式。實現(xiàn)方法:在原對象的基礎上調(diào)用其getJSONArray(),得到一個數(shù)據(jù)類型為JSONOebject的數(shù)組。反序列化得到請求的詳細信息后,J2EE端根據(jù)請求進行其他操作,如從網(wǎng)絡上獲取XML數(shù)據(jù)、從數(shù)據(jù)庫獲取數(shù)據(jù)等。得到數(shù)據(jù)后,服務器端把數(shù)據(jù)序列化成JSON格式消息,發(fā)送到客戶端。
5.3客戶端
客戶端向服務器端發(fā)送已被序列化的JSON格式消息,然后等待服務器端返回的消息,接到服務器返回的消息后,反序列化JSON消息。處理過程調(diào)用ison.me的API。具體實現(xiàn)如下:
①序列化成JSON格式。只需調(diào)用JSONObjeet的put方法添加相關項。JSONObject可以添加3種對象:簡單的對象、JSONObject對象、JSONArray對象。具體操作如下:
- JSONObjectheader=newJSONObjeet();
- headerput(“title”,“yahoonews”);
- JSONObjectchildObj=newJSONObject();
- header.put(“child”,childObj);
- JSONArrayarrayObj=newJSONArray();
- headerput(“array”,arrayObj);
②反序列化JSON格式消息。反序列化也包括3種情況:簡單的JSONObject對象、嵌套的JSONObject對象、數(shù)組對象。具體實現(xiàn)如下:
- JSONObjectobj=newJSONObject(str);
- Stringtitle=obj-getString(“title”);
- intcount=obj.getInt(“count”);
- JSONObjectbody=obj.getJSONObject(“body”);
- JSONArrayarrayObj=obj.getJSONArray(“array”);
5.4傳輸協(xié)議層
客戶端和服務器端之間的通信采用HTTP協(xié)議。HTTP協(xié)議是一種廣泛使用的協(xié)議,所有MIDP設備都支持HTTP協(xié)議。且在各種不同的無線網(wǎng)絡上,HTTP協(xié)議實現(xiàn)相對較容易。HTTP協(xié)議請求方式有GET和POST兩種。由于GET請求發(fā)送大數(shù)據(jù)塊時對URL字符串長度有限制。對象JSON字符串長度可能很長,尤其當使用極其復雜的對象時。
同時,在跨域網(wǎng)絡以純文本方式發(fā)送所有數(shù)據(jù),安全性難以保證.因此建議采用POST方式發(fā)送機密或內(nèi)容極長的請求。
6結(jié)束語
通過分析JSON、XML與自定義數(shù)據(jù)交換格式,提出以JSON作為輕量級數(shù)據(jù)交換格式,并給出其在客戶端(J2ME)與服務器端(J2EE)解決方法的一般框架,解決了自定義和使用XML數(shù)據(jù)交換格式所帶來的繁瑣、耗費資源的缺陷。
【編輯推薦】
- JSON數(shù)據(jù)在J2ME下的構(gòu)造和解析
- 深入了解J2ME Polish+Eclipse配置過程
- 探究J2ME中cookie庫的管理
- 術語匯編 J2ME 3D技術簡介
- 解析Linux下如何用eclipse搭建J2ME開發(fā)環(huán)境
文章題目:探討J2ME/J2EE的JSON數(shù)據(jù)交換方式
分享路徑:http://m.5511xx.com/article/dpcdcih.html


咨詢
建站咨詢
