《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 浅析利用j2me和j2ee构建小型移动设备的应用

浅析利用j2me和j2ee构建小型移动设备的应用

2009-02-05
作者:于海涛
引 ???? 言
今天,無線、跨平臺、以及嵌入式應用已經成為非常流行和時尚的技術應用。在手機、PDA、以及其他一些智能移動設備已經隨處可見, MICROSOFT,SYMBIAN在手機,PDA這些小型設備上的OS開發(fā)已日趨成熟的同時,用戶對于智能移動設備應用軟件的種類、性能提出更高的要求,對于如何在這些平臺上為程序員提供良好,可移植應用軟件的開發(fā)環(huán)境成為一個新的課題。
1、J2me以及J2me的總體架構
J2me的誕生:我們知道SUN公司在設計java語言之初是要面向消費類電器,并將它定位于實現(xiàn)一種為嵌入式處理器編寫程序的可移植方法。SUN的工程師們帶著這個目的開發(fā)出來的JAVA語言以及虛擬機的運行機制,必然具有可以在設備間移植代碼的CPU無關性,安全性,簡潔性??梢奐AVA作為開發(fā)小型智能移動設備的開發(fā)語言在合適不過了,于是SUN公司在J2SE(JAVA 2 STANDARD EDITION)的基礎上為小型智能設備量身訂做了J2SE的簡化版本J2ME(Java 2 MICRO EDITION),并在1999 年 6loper Conference 上正式宣布J2ME的誕生。
J2ME的總體架構:J2ME使用配置和簡表定制 Java 運行時環(huán)境,配置將基本運行時環(huán)境定義為一組核心類和一個運行在特定類型設備上的特定 JVM,而簡表則定義了應用程序所支持的設備類型。
配置:正如上面所說配置將基本運行時環(huán)境定義為一組核心類和一個運行在特定類型設備上的特定 JVM。當前 J2ME 主要存在兩種配置:連接設備配置 (CDC) CDC是應用在具有較大內存,特別是2MB以上的設備上的,CDC針對有限和間歇的無線連接設備,CDC與CVM和Foundation profile共同定義了完全的J2ME環(huán)境。連接限制設備配置 (CLDC)是針對少于512KB內存footprint的設備的配置。CLDC采用的是KVM,它是高度優(yōu)化的JVM方式,他針對的是16比特或32比特的微處理器,160到512 KB內存為基礎的低端,網(wǎng)絡連接,電池驅動的設備。這里需要說明的是,無論應用在J2ME上的虛擬機CVM還是KVM都是J2SE虛擬機JVM的縮略版。他們之間的關系如下圖:

簡表:正如前面所講的,簡表為J2ME定義了應用程序所支持的設備類型,它是通過向 J2ME 配置添加了特定于域的類來定義設備的某種作用的。它位于配置的頂部。J2me為CLDC主要定義了兩種簡表:MIDP(移動信息簡表)和KJAVA,支持小型設備。同時為CDC也定義了一種基礎表(也叫綱要簡表)主要應用于家用電器,汽車導航系統(tǒng)這種比較大的終端。?

??? 注:CDC和CLDC目標設備的區(qū)別:?

2、J2ME-J2EE架構的優(yōu)勢?

我們知道雖然利用J2ME可以開發(fā)一些不需要運行在無線網(wǎng)絡環(huán)境的小應用程序(比如計算器,小游戲,日歷),但是這并不是J2ME誕生的真正意義,隨著信息社會的到來,人們對于資源需求的不斷膨脹,對于信息儲備極其有限的手機,PDA這種小型設備來說,互連網(wǎng)絡是他們獲取信息的最佳的途徑。于是人們針對這個問題研究,并制定了各種各樣的方案,這里我首推J2ME-J2EE架構。?

關于J2EE(Java 2 Platform Enterprise Edition)J2EE是一種利用Java 2平臺來簡化企業(yè)解決方案的開發(fā)、部署和管理相關的復雜問題的體系結構。J2EE技術的基礎就是核心Java平臺或Java 2平臺的標準版,J2EE不僅鞏固了標準版中的許多優(yōu)點,例如"編寫一次、隨處運行"的特性、方便存取數(shù)據(jù)庫的JDBC API、CORBA技術以及能夠在Internet應用中保護數(shù)據(jù)的安全模式等等,同時還提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支持。其最終目的就是成為一個能夠使企業(yè)開發(fā)者大幅縮短投放市場時間的體系結構。有了J2EE,使得服務器端的開發(fā)有了強有力的支持。?

但是網(wǎng)絡應用的模式有很多,為什么非要選擇J2ME+J2EE的架構呢??

傳統(tǒng)的網(wǎng)絡開發(fā)通常采用瘦客戶端的形式,瘦客戶端是基于瀏覽器的應用,主要使用HTML,WML,HDML。但是這種架構需要連接到高速網(wǎng)絡才能很好的工作。這顯然不太適合無線網(wǎng)絡。憑借J2ME背后強大的JAVA技術的支持,再加上采用JAVA服務器技術J2EE作為服務端,J2ME完全可以設計出超越瘦客戶端的新的客戶端形式,即智能客戶端。?

J2ME-J2EE架構圖示:

它的優(yōu)勢體現(xiàn)在:?

(1). 離線能力(即在設備掉線情況下仍能正常工作)?

(2).客戶端邏輯(即可以本地確認和存儲數(shù)據(jù))?

(3).異步網(wǎng)絡(即數(shù)據(jù)能導向到設備)?

(4).更好的響應效率 ?

這里需要強調的是J2ME+J2EE的架構是基于HTTP協(xié)議的,HTTP協(xié)議,以及HTTP協(xié)議的擴展協(xié)議HTTPS本身具有很多優(yōu)勢,在互連網(wǎng)上有很廣泛的應用。?

擁有了以上的優(yōu)勢,J2ME+J2EE的架構無疑為我們提供了一個很好的解決方案。?

3、J2ME-J2EE的架構的分析和設計思路?

常用的應用模型:隨著手機及其他小型設備的普及,我們可以看到很多基于手機的無線應用,基于短信的居多(比如在線評球,在線竟猜,和一些在線的小游戲),顯然應用在技術上已經比較成熟。我們把這種模型稱為長時間離線型。它的特點在于何時在線并不影響應用,設立更多的本地模塊,通常基于短信的模式。這種設計可以極大的降低連接成本,并且由于數(shù)據(jù)交互在后臺進行,不需要用戶在進行干預。?

與長時間離線型相對的另外一種應用模型便是長時間連線型,顧名思義這種應用模型需要在線狀態(tài)下運行,并且采用客戶端-服務端的運行模式,使得用戶可以實時的查詢和更新數(shù)據(jù),J2ME-J2EE的架構通常被這種模型的設計采用,下面我簡單舉例說明一下采用J2ME-J2EE架構實現(xiàn)的長時間應用模型的設計過程。

(天氣情況查詢系統(tǒng))客戶段的設計:客戶端采用J2ME編寫,主要采用基于HTTP協(xié)議的javax.microedition.io.HttpConnection類來完成,手機在上網(wǎng)之后通過它可以實現(xiàn)與運行在INTERNET上的J2EE服務器的數(shù)據(jù)交換。使用它的主要函數(shù)是GetWeather(),代碼片段如下:?

public void getWeather() {……?

try {……?

URL=”www.x.com/X.JSP?Country=x”?

StringBuffer sb = new StringBuffer(URL);?

sb.append(urlEncode(postalCode.getString()));?

??????? HttpConnection conn = (HttpConnection)Connector.open(sb.toString()):?

??????? InputStream is = conn.openInputStream();//獲取輸入流?

??????? String contentType = conn.getType();?

??????? int len = (int)conn.getLength();?

??????? receivedData = new byte[len];?

??????? int nb = is.read(receivedData);//得到數(shù)據(jù)?

??????? ……}?

上面的實例是基于HTTP協(xié)議的GET請求協(xié)議,并通過OpenInputStream來獲得數(shù)據(jù)流,當然我們也可以采用POST的請求方式,我們知道POST請求的參數(shù)是存放到消息體里的,所以我們要用到OpenOutputStream來返回一個輸出流,并且采用write(“attributeA value”)將參數(shù)寫入消息體。(實際上基于J2ME的客戶端應用主要發(fā)送HTTP的請求消息,輸出流已經不想SOCKET編程應用的那么頻繁,基本上只在寫入POST參數(shù)才會用到。)?

服務器的設計服務器端用一個簡單的javaBean+JSP即可,這里就是簡單的實現(xiàn)。?

Sring postalCode = (String)request.getParameter("postalCode");?

……?

????? ResultSet rs = stmt.executeQuery(query);?

????? if (rs.next()) {?

??????? request.setAttribute ("city", rs.getString("city")?

??????? request.setAttribute ("stateprovince", rs.getString("province"));?

??????? request.setAttribute ("weather", rs.getString("weather"));?

??????? nextJSP = "/ReportWeather.jsp";?

???? ??}?

……?

rd.forward(request, response);?

當然在系統(tǒng)設計的同時,我們通常有許多因素要考慮到,是我對于這個問題的一些思路。

應當考慮的因素:?

1.保證J2ME的應用不會被外來的不可抗拒的因素破壞,中斷,這種因素主要來自于J2ME的設備的主要應用(比如手機收到電話,短信),所以盡可能的采用后臺線程來管理應用程序,避免這些因素的影響。?

2.小型設備并非采用像PC一樣的標準鍵盤,如何用小鍵盤進行準確的輸入也是應當考慮的問題(比如采用詳細的選擇列表代替用戶的輸入)。?

3.安全性,包括數(shù)據(jù)在傳輸過程中被竊取,J2ME設備的毀壞和遺失造成的數(shù)據(jù)丟失 (我們可以對數(shù)據(jù)進行加密,并且采取措施定期的對數(shù)據(jù)備份)?

關于MIDP2。0:MIDP作為應用在CLDC配置上的一種結構已經得到了日趨廣泛的應用,MIDP2.0作為MIDP1.0的升級版本曾加了許多新的特性。包括HTTPS成為必要組件,一些包括播放聲音在內的一些多媒體API集的引入,并且通過曾加用戶接口,對游戲編程提供了特別的支持。?

結束語?

通過上面的介紹,我們可以看到通過J2ME技術與J2EE技術的結合完全可以構筑完備的企業(yè)級無線應用,隨著手機,PDA為代表的小型智能設備的進一步發(fā)展,相信以J2ME為代表的JAVA技術會有更為廣闊的施展舞臺。?

參考文獻:?

1.Sun公司J2ME 網(wǎng)站 ?

2.J2ME專業(yè)開發(fā)者指南 MIDP Wiley,IS BN 0471034657?

3.sun網(wǎng)絡社區(qū) ?

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。