湖北工業(yè)職業(yè)技術(shù)學(xué)院信息與智能工程系 莫足琴
JAVA移動應(yīng)用程序開發(fā)對于PUSH技術(shù)的運用分析
湖北工業(yè)職業(yè)技術(shù)學(xué)院信息與智能工程系 莫足琴
PULL方式是較為常用的一種應(yīng)用程序運行方式,這種運行方式需要用戶以手動的形式來實現(xiàn)應(yīng)用程序的啟動,這也就說明PULL方式無法實現(xiàn)某些特定情況下程序啟動的要求,此時,合理的運用PUSH方式實現(xiàn)程序的運行也就非常必要了,PUSH方式可以實現(xiàn)JAVA移動應(yīng)用程序的自動啟動運行。本文主要研究了如何運用PUSH方式在J2ME平臺下來自動啟動運行JAVA移動應(yīng)用程序,為了使讀者加深對PUSH技術(shù)的認(rèn)識,本文首先介紹了該技術(shù),然后對PUSH注冊機制的實現(xiàn)過程進行了詳細闡述,并實際開發(fā)了一個可以應(yīng)用到JAVA手機上的MIDlet應(yīng)用程序?qū)σ苿討?yīng)用程序開發(fā)中采用PUSH注冊機制進行了驗證。
PUSH注冊機制;J2ME平臺;JAVA移動應(yīng)用程序
JAVA技術(shù)主要是由J2EE、J2SE以及J2ME三個主要版本構(gòu)成的,J2ME作為其主要的構(gòu)成部分之一是現(xiàn)階段較為常用的一種移動領(lǐng)域開發(fā)平臺[1]。隨著電子信息技術(shù)的不斷發(fā)展,無線設(shè)備的類型多種多樣,各種無線設(shè)備之間存在較大的差異性,JAVA語言具有與平臺無關(guān)的優(yōu)良特性,而J2ME很好的繼承了JAVA語言的這一特性,并在此基礎(chǔ)上實現(xiàn)了將其應(yīng)用到小型電子設(shè)備中,J2ME可以支持各類移動設(shè)備對應(yīng)用程序進行無差異的共享[2]。Sun公司對J2ME開發(fā)平臺進行了科學(xué)的定義,認(rèn)為該平臺是由簡表、配置以及Java Virtual Machine三個具體層面構(gòu)成,這種定義及設(shè)計方式可以很好的實現(xiàn)J2ME在具有差異性的各類設(shè)備上正常運行。目前,MIDlet應(yīng)用程序中大多數(shù)都是采用PULL方式實現(xiàn)應(yīng)用程序的啟動運行,但實際工作生活中在某些特殊的情況下人們更希望MIDlet應(yīng)用程序可以實現(xiàn)自動啟動,這種現(xiàn)象在那些大型的企業(yè)級移動應(yīng)用程序中表現(xiàn)的更為明顯,這些企業(yè)級移動應(yīng)用程序經(jīng)常進行的一類工作就是將信息從服務(wù)器發(fā)送到移動終端,然后運用移動終端上的應(yīng)用程序?qū)邮艿降男畔⑦M行必要的處理,人們希望這一過程可以自動進行,為了滿足人們的這一需求,PUSH技術(shù)的應(yīng)用是非常必要的。
PUSH技術(shù)是一種新興技術(shù),這種技術(shù)基于C/S模式,可以很好的實現(xiàn)將服務(wù)器中的相關(guān)信息自主推送到各類移動終端[3]。PUSH技術(shù)與傳統(tǒng)的PULL技術(shù)相比有著根本性的區(qū)別,其區(qū)別主要邊現(xiàn)在以下方面[4]:對與信息到達客戶機的方式上兩種技術(shù)存在本質(zhì)性區(qū)別,PULL技術(shù)在獲取信息前必須向服務(wù)器發(fā)出獲取信息的請求,而PUSH則無需進行此步操作,該技術(shù)實現(xiàn)了服務(wù)器自主向客戶機發(fā)送相關(guān)信息,在信息推送的過程中服務(wù)器是一個具體PUSH事件的發(fā)起者,這樣做的最大優(yōu)勢就是可以使各類信息主動地出現(xiàn)在移動終端的客戶眼前,在信息發(fā)送方面更具時效性和主動性,減少了用戶用于搜索各類信息的時間,同時,還可以跟好的將各類增值業(yè)務(wù)推薦給用戶,這樣可以將WAP提供服務(wù)和移動終端的用戶更好地聯(lián)系起來。
JAVA移動應(yīng)用程序開發(fā)中應(yīng)用PUSH注冊機制可以自動的啟動應(yīng)用程序,PUSH注冊是大多AMS應(yīng)用管理軟件的一個非常重要的組件,是AMS應(yīng)用管理軟件的一個組成部分,PUSH注冊位于AMS應(yīng)用管理軟件的內(nèi)部。AMS應(yīng)用管理軟件的主要功能是實現(xiàn)MIDlet應(yīng)用程序的生命周期管理,包括MIDlet應(yīng)用程序的運行、暫停以及銷毀等。
PUSH注冊在MIDP2.0中作為通用連接框架的一個類出現(xiàn),在這個類中定義了所有關(guān)于PUSH的方法,程序開發(fā)人員在實現(xiàn)程序開發(fā)時可以充分利用所提供的方法將具體的MIDlet應(yīng)用程序注冊到PUSH事件中[5],同時,這一過程開發(fā)人員還可以獲取與PUSH相關(guān)的各種信息,可以對該PUSH事件能否激活MIDlet應(yīng)用程序進行判斷。當(dāng)一個應(yīng)用程序處于運行狀態(tài)時,這個應(yīng)用程序便可對所有的與IO有關(guān)的連接進行自動處理,當(dāng)應(yīng)用程序未運行時,AMS應(yīng)用程序管理軟件便可以對一切請求入站連接進行監(jiān)聽,一旦監(jiān)聽到有連接請求,AMS應(yīng)用程序管理軟件便會即刻調(diào)用相關(guān)方法將應(yīng)用程序啟動。
MIDP2.0規(guī)范沒有嚴(yán)格的要求設(shè)備所支持的協(xié)議類型,但為了給PUSH注冊機制提供適宜的運行環(huán)境,必須支持用于保證其能夠正常運行的相關(guān)入站連接的協(xié)議。入站連接的協(xié)議的實現(xiàn)主要是通過設(shè)備制造商來完成的。滿足應(yīng)用程序接收PUSH信息的一個必要前提是該應(yīng)用程序已經(jīng)完成了向,那么此應(yīng)用程序就一定要向PushRegistry的注冊過程,現(xiàn)有的PUSH注冊方式有兩種,分別是靜態(tài)注冊和動態(tài)注冊。
靜態(tài)注冊通過在描述符文件中對MIDlet-PUSH字段的信息進行指定來完成注冊程序,具體的信息內(nèi)容應(yīng)包括連接類型以及連接發(fā)送者兩個方面,這一定義過程發(fā)生在安裝MIDlet套件之前,因此,這種注冊過程是一種靜態(tài)注冊。
動態(tài)注冊發(fā)生在運行PushRegistry應(yīng)用編程接口的過程中,實際注冊過程中應(yīng)用程序可視實際情況拒絕或者允許PUSH請求,某些情況下還可以通過修改注冊來滿足實際情況,因此,這種注冊方式是一種動態(tài)注冊。
當(dāng)某個連接完成了PushRegistry內(nèi)部的注冊后,AMS應(yīng)用管理軟件便會對這個連接進行持續(xù)地監(jiān)聽,當(dāng)AMS監(jiān)聽到消息時便會立刻將MIDlet應(yīng)用程序激活,通常情況下存在兩種激活方式。一種是內(nèi)部時鐘激活方式,另一種是入站連接激活方式。
筆者設(shè)計的這一實例主要是通過PUSH注冊機制以及無線消息API兩者的結(jié)合來實現(xiàn)的,激活方式選用的是入站連接激活,實例的最終目的是運用PUSH注冊機制完成具體的MIDlet應(yīng)用程序(具有信息接受功能)的自行啟動。應(yīng)用程序主要由Reader 類、SendUI 類以及SMSMIDlet 類三個類構(gòu)成。從根本上將Reader類應(yīng)歸入到SMSMIDlet類中的一個內(nèi)部子類,在應(yīng)用程序中每個類的功能不同,具體如下:
Reader類:這個類的主要功能是實現(xiàn)接收各類短消息,并將接收到的消息顯示在Form上。當(dāng)系統(tǒng)初始化過程完成后,Reader就會被啟動,當(dāng)不存在短消息需要進入時,pending值即為零,此時線程也就處于等待狀態(tài)。當(dāng)存在短消息進入時,程序就會自動調(diào)用notifyIncomingMessage()方法,這是Reader線程被喚醒,處于工作狀態(tài),便可接收短消息,然后將短消息的地址以及內(nèi)容在Form上進行顯示。
SendUI類:這個類的主要功能是發(fā)送相關(guān)的短消息,當(dāng)移動客戶端的用戶完成短消息內(nèi)容的輸入以及收信人地址或者號碼的輸入后,這個類便會通過啟動新線程來完成短消息的發(fā)送。
SMSMIDlet類:這個類的功能是通過startApp()方法將界面初始化,同時,完成服務(wù)器模式的 MessageConnection的創(chuàng)建,這樣便可以滿足SMSMIDlet接收短消息的要求。
將PUSH注冊添加到Netbeans IDE中,實際操作過程為【項目屬性】→【應(yīng)用程序描述符】→【推注冊】
通過運行兩個模擬器來使用OTA方式運行SMSMIDlet,點擊【菜單】→【啟動】;
將5550001這一端口號寫入收信人處,然后完成短消息內(nèi)容的編寫,單擊【發(fā)送】→【是】,確認(rèn)發(fā)送后接收端程序就會被自動激活,然后接收發(fā)送過來的短消息。
將PUSH注冊機制應(yīng)用到JAVA應(yīng)用程序開發(fā)過程中可以很好的解決一些實際問題,本文首先簡單介紹了PUSH注冊機制,在此基礎(chǔ)上對PUSH注冊機制如何實現(xiàn)應(yīng)用程序自動啟動運行的過程進行了詳細闡述。最后通過具體的實例對應(yīng)用程序開發(fā)中如何運用PUSH技術(shù)進行了演示,望本文的研究能夠為程序開發(fā)人員提供一定的指導(dǎo)。
[1]趙霞.PUSH技術(shù)在JAVA移動應(yīng)用程序開發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2015,11:256.
[2]趙景,張俊濤.PUSH注冊機制在JAVA移動應(yīng)用程序開發(fā)中的使用[J].無線互聯(lián)科技,2014,05:199+256.
[3]陳玉濤.基于J2ME移動終端的增值業(yè)務(wù)開發(fā)研究[D].華東師范大學(xué),2008.
[4]馬帆.基于J2ME和Web服務(wù)技術(shù)的企業(yè)移動應(yīng)用研究與實現(xiàn)[D].長安大學(xué),2010.
[5]董航.移動應(yīng)用程序檢測與防護技術(shù)研究[D].北京郵電大學(xué),2014.
莫足琴(1973—),女,湖北工業(yè)職業(yè)技術(shù)學(xué)院副教授,從計算機網(wǎng)絡(luò)技術(shù)、計算機應(yīng)用技術(shù)、高職教育改革方面的研究。