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