□文/丁振國
(江蘇海事職業(yè)技術(shù)學(xué)院 江蘇·南京)
根據(jù)有關(guān)統(tǒng)計(jì)數(shù)據(jù),截至2011年8月31日,中國手機(jī)用戶總數(shù)已達(dá)9.2726億戶,其中包括9,380萬3G手機(jī)用戶。手機(jī)已經(jīng)不再僅僅是一種通信工具,而是集通信、娛樂、辦公等于一體的移動(dòng)電子設(shè)備。為了滿足用戶的各種不同需求,手機(jī)各項(xiàng)功能在不斷地拓展,如閱讀學(xué)習(xí)功能、照相、錄像及錄音功能等。同時(shí),各種手機(jī)應(yīng)用軟件也層出不窮,例如移動(dòng)辦公系統(tǒng)、股票查詢系統(tǒng)、手機(jī)導(dǎo)航系統(tǒng)等應(yīng)用軟件。這些新功能開發(fā)極大地滿足了不同手機(jī)用戶的不同需求,進(jìn)一步提高了手機(jī)的利用率,也大大激發(fā)了開展手機(jī)各種新功能研發(fā)工作。本系統(tǒng)的設(shè)計(jì)也是基于方便航海領(lǐng)域從業(yè)人員能及時(shí)掌握船舶動(dòng)態(tài)這一目的而設(shè)計(jì)的。手機(jī)用戶只需要安裝客戶端應(yīng)用程序,就可以隨時(shí)使用電子海圖系統(tǒng),達(dá)到隨時(shí)掌握船舶航行動(dòng)態(tài)的需求。
目前,手機(jī)上的應(yīng)用軟件從最早的只有基本語音服務(wù),到之后增加了簡(jiǎn)單的附加應(yīng)用,直到出現(xiàn)了WAP方式使移動(dòng)終端能訪問Internet功能的三個(gè)發(fā)展階段。發(fā)展到當(dāng)前這個(gè)階段,利用J2ME(Java 2 Micro Edition)實(shí)現(xiàn)移動(dòng)應(yīng)用是一種良好的途徑。
J2ME是為機(jī)頂盒、移動(dòng)電話和PDA之類嵌入式消費(fèi)電子設(shè)備提供的Java語言平臺(tái),是一種高度優(yōu)化的Java運(yùn)行環(huán)境。J2ME在設(shè)計(jì)時(shí),將所有的嵌入式裝置大體上區(qū)分為兩種:一種是運(yùn)算功能有限、電力供應(yīng)也有限的嵌入式裝置(如手機(jī));另一種則是運(yùn)算能力相對(duì)較佳,并且在電力供應(yīng)上相對(duì)比較充足的嵌入式裝置(如電視機(jī)頂盒)。然后把上述運(yùn)算功能有限、電力有限的嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規(guī)格之中;而另一種裝置則規(guī)范為 Connected Device Configuration(CDC)規(guī)格。也就是說,J2ME先把所有的嵌入式裝置利用Configuration的概念區(qū)隔成兩種抽象的形態(tài)。而這些規(guī)格之中定義了這些裝置至少要符合的運(yùn)算能力、供電能力、記憶體大小等規(guī)范,同時(shí)也定義了一組在這些裝置上執(zhí)行的Java程序所能使用的類別函式庫、這些規(guī)范之中所定義的類別函式庫為Java標(biāo)準(zhǔn)核心類別函式庫的子集合以及與該形態(tài)裝置特性相符的擴(kuò)充類別函式庫。如就CLDC的規(guī)范來說,可以支援的核心類別函式庫為 java.lang.*、java io.*、java.util.*,而支援的擴(kuò)充類別函式庫為java micro edition io.*。區(qū)分出兩種主要的Configuration之后,J2ME接著再定義出Profile的概念。Profile是架構(gòu)在Configuration之上的規(guī)格,是為了要更明確地區(qū)分出各種嵌入式裝置上Java程序該如何開發(fā)以及它們應(yīng)該具有哪些功能。J2ME的體系結(jié)構(gòu)圖,如圖1所示。(圖1)
本系統(tǒng)從功能上主要分為登陸模塊和船舶信息查詢模塊。其中,登陸模塊負(fù)責(zé)用戶信息的核對(duì)、驗(yàn)證,通過驗(yàn)證后允許該用戶繼續(xù)操作,否則提示用戶重新輸入;船舶信息查詢模塊又分為基于地點(diǎn)查詢和基于船名/船舶呼號(hào)查詢?;诘攸c(diǎn)的查詢,允許用戶輸入某一個(gè)地點(diǎn),例如某個(gè)港口名,服務(wù)器端將提供在該港區(qū)附近水域范圍內(nèi)的所有船舶信息;基于船名/船舶呼號(hào)的查詢,允許用戶輸入船名或者船舶呼號(hào),服務(wù)器端將提供該船舶目前實(shí)際位置的詳細(xì)信息。
基于以上功能,本系統(tǒng)采用整體結(jié)構(gòu)如圖2所示。其中,客戶端使用J2ME訪問網(wǎng)絡(luò),使用HTTP協(xié)議作為客戶端和服務(wù)器端交互的方式;服務(wù)器端,Servlet負(fù)責(zé)接收并響應(yīng)客戶端的請(qǐng)求。即手機(jī)用戶將通過Internet訪問數(shù)據(jù)庫,經(jīng)過身份驗(yàn)證后將需求告訴服務(wù)器,服務(wù)器把用戶請(qǐng)求的資源以流的形式進(jìn)行包裝,并傳送給手機(jī)用戶。J2ME在手機(jī)上接收流,并將數(shù)據(jù)重組為圖像,顯示在手機(jī)屏幕上。由于移動(dòng)設(shè)備的處理能力有限,較復(fù)雜的或者比較耗費(fèi)資源的操作都在服務(wù)器端完成,客戶端只負(fù)責(zé)屏幕的顯示和網(wǎng)絡(luò)的鏈接。(圖 2)
基于以上的系統(tǒng)設(shè)計(jì)分析,客戶端采用Sun Wireless Toolkit 2.5開發(fā),服務(wù)器端采用Tomcat6.x作為Servlet的運(yùn)行容器,數(shù)據(jù)庫采用MySQL5.0。
(一)客戶端設(shè)計(jì)??蛻舳诵枰鉀Q的主要問題是客戶端程序與應(yīng)用服務(wù)器之間的通信,根據(jù)需要請(qǐng)求的電子海圖瓦片的編碼,向服務(wù)器發(fā)起訪問鏈接請(qǐng)求,接收服務(wù)器端返回的瓦片數(shù)據(jù)流,生成瓦片后返回。由于移動(dòng)設(shè)備可以支持HTTP、UDP和Socket等協(xié)議,為了保證與服務(wù)器端通信的可靠性,在本系統(tǒng)中采用了HTTP協(xié)議,實(shí)現(xiàn)客戶端和應(yīng)用服務(wù)器之間互聯(lián)互通。以下是客戶端與應(yīng)用服務(wù)器之間的部分交互代碼:
(二)服務(wù)器端設(shè)計(jì)。服務(wù)器端的設(shè)計(jì)主要是解決處理來自客戶端的訪問請(qǐng)求,檢索海圖瓦片,并向客戶端反饋響應(yīng)。主要的組成部分有數(shù)據(jù)庫連接池的配置和處理訪問請(qǐng)求的servlet。數(shù)據(jù)庫連接池在應(yīng)用服務(wù)器的配置文件中做好了部署,并且對(duì)登錄用戶進(jìn)行驗(yàn)證。應(yīng)用服務(wù)器采用了Tomcat6.x,在其server.xml文件中配置數(shù)據(jù)庫連接池的代碼片段如下:
服務(wù)器端應(yīng)用程序采用了struts2.0框架,在應(yīng)用程序中也對(duì)數(shù)據(jù)庫連接進(jìn)行了配置,以下是配置數(shù)據(jù)庫的代碼片段:
這樣,在應(yīng)用程序中就可以直接引用chart數(shù)據(jù)源,獲取與數(shù)據(jù)庫的連接。
檢索海圖瓦片并向客戶端做出反饋響應(yīng)的任務(wù)主要由servelt完成,它首先接受客戶端的請(qǐng)求,獲得客戶端請(qǐng)求海圖瓦片的quadkey(四叉數(shù)碼),由quadkey在海圖瓦片庫中檢索到對(duì)應(yīng)瓦片,再將其反饋給客戶端,以下是實(shí)現(xiàn)的代碼片段:
在無線網(wǎng)絡(luò)傳輸中,移動(dòng)用戶和基站是通過無線信道進(jìn)行通信的,而無線信道具有公開性的特點(diǎn),任何擁有相同頻段接收設(shè)備的用戶都可以對(duì)無線設(shè)備進(jìn)行監(jiān)聽。因此,與有線信道相比,無線信道更容易被其他用戶竊聽而不容易被發(fā)現(xiàn)。由于本系統(tǒng)是向用戶提供船舶動(dòng)態(tài)信息查詢,對(duì)于安全性有一定的要求,在系統(tǒng)設(shè)計(jì)時(shí)采取了對(duì)用戶登錄密碼加密的措施。
MD5(Message-digest Algorithm 5)是由MIT的計(jì)算機(jī)科學(xué)實(shí)驗(yàn)室和RSA Data Security Inc發(fā)明,經(jīng)MD2、MD3和MD4發(fā)展而來,是一種Hash算法。Hash算法具有單方向性的特點(diǎn),破解需要大型計(jì)算機(jī)或網(wǎng)絡(luò)計(jì)算輔助才能完成,利用數(shù)學(xué)方法反向運(yùn)算是不可能破解的,因此MD5具有一定安全性。本系統(tǒng)采用MD5技術(shù)加密算法對(duì)用戶登錄密碼進(jìn)行加密,然后存儲(chǔ)在數(shù)據(jù)庫里,用戶驗(yàn)證登錄時(shí)需要輸入登錄密碼,系統(tǒng)自動(dòng)將密碼與MD5加密后的數(shù)據(jù)庫密碼進(jìn)行比對(duì),二者一致時(shí)用戶才能繼續(xù)登錄本系統(tǒng),否則無法登錄。
本系統(tǒng)基于J2ME技術(shù)和現(xiàn)有的Web技術(shù),實(shí)現(xiàn)了電子海圖在移動(dòng)通信設(shè)備上的顯示,并實(shí)現(xiàn)了船舶動(dòng)態(tài)信息查詢的功能。在一定程度上能夠滿足船舶管理者對(duì)船舶信息的掌握需求,也能夠達(dá)到隨時(shí)為管理者查詢所需要船舶信息的目的。隨著移動(dòng)通信技術(shù)的不斷發(fā)展、3G時(shí)代的到來和手機(jī)硬件性能的不斷提升,基于J2ME技術(shù)的無線應(yīng)用將會(huì)迎來更大的發(fā)展機(jī)遇。
[1]葉亮輝.基于J2M E的手機(jī)導(dǎo)游系統(tǒng)的開發(fā)[J].內(nèi)江科技,2006.7.
[2]黃聰明.Java應(yīng)用程序開發(fā) [M].北京:清華大學(xué)出版社,2002.
[3]李迅.J2M E無線設(shè)備編程[M].北京:機(jī)械工業(yè)出版社,2002.
[4]楊湘榮,楊堅(jiān)榮,李超.移動(dòng)選課和成績(jī)查詢系統(tǒng)的研究與實(shí)現(xiàn)[J].廣西廣播電視大學(xué)學(xué)報(bào),2006.3.