《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > MIDP2.0新增特性

MIDP2.0新增特性

2008-12-19
作者:莊東

1.引言?

??? 無線Java技術是在移動通信領域內的J2ME技術,,最近兩年內迅速發(fā)展,,截止到2003年2月,,已經有21個生產廠家推出了100多種支持JAVA的手持設備,。今年3月,,CDMA領導廠商高通公司宣布,,將在其CDMA的芯片中提供對J2ME的支持,,其實現主要基于MIDP 2.0和CLDC1.0.4,。今年6月,,Sun和Intel達成協議,將聯合開發(fā)支持英特爾XScale處理器的Java應用程序" title="應用程序">應用程序運行環(huán)境,。在硬件中集成Java,,將進一步促進Java在市場中的普及。根據ARC Group2002年六月的《無線JAVA報告》,,“到 2007年, 幾乎所有的手持設備都將提供對JAVA的支持”,。?

??? 目前無線Java設備主要以手機為主,當前的實現主要基于CLDC1.0和MIDP1.0規(guī)范,。MIDP2.0規(guī)范在去年11月推出,,是未來無線Java技術的核心。今年6月,,Sun與世界知名的手機廠商諾基亞,、摩托羅拉、西門子和索尼—愛立信共同合作,,開發(fā)適用于MIDP2.0技術標準的J2ME技術,。預計合作的時間將為兩個月,相信支持MIDP2.0的設備不久將推向市場,。MIDP2.0作為下一代移動設備開發(fā)規(guī)范,,增強了對音頻、游戲,、安全和Push注冊的支持,,并且對用戶界面、網絡連接" title="網絡連接">網絡連接的功能做了增強,,同時將OTA應用程序下載包括到規(guī)范中來,。本文對MIDP2.0的新增特性做了較詳細的介紹。?

2.MIDP2.0的安全框架?

??? MIDP運行在Java虛擬機之上,,這使它可以解決一部分安全問題,。然而對于移動信息設備,還有特定的安全問題,,比如程序在用戶不知道的情況下連接網絡,,會耗費用戶的通信費用,,還有程序可能會修改用戶的本地資料,或把用戶資料通過無線網絡泄漏出去,。為了解決這種情況MIDP2.0增加了安全框架,。?

1)?有安全隱患的操作 ?

??? 對于有安全隱患的操作,MIDP2.0按功能把它們分為以下幾組:?

??? 撥打電話:向外撥打電話的操作,。?

??? 網絡訪問:與網絡發(fā)生連接,、訪問網絡數據的操作(例如 GSM、 GPRS等網絡訪問),。?

??? 收發(fā)消息:接受和發(fā)送消息的操作,。(如短信服務)?

??? 程序自動激活:導致MIDlet suite自動激活的操作(如push技術、定時MIDlet等),。?

??? 本地連接:訪問本地端口的操作(如COMM端口,、紅外口、藍牙等),。?

??? 多媒體紀錄:捕獲靜止圖像,、紀錄視頻或音頻的操作,。?

??? 讀取用戶數據:讀取用戶電話簿或其他文件中數據的操作,。?

??? 修改用戶數據:增加、刪除或修改用戶的電話簿和其他文件的操作,。?

?

?

??? 當這些操作執(zhí)行時,,應由用戶指定是否允許這些操作運行。比如用戶通過http連接訪問http://wireless.java.sun.com 網站時,,在J2ME Wireless Toolkit2.0模擬器中運行時會出現左圖所示的畫面,,提示用戶該程序即將連接網站,詢問用戶是否進行該操作,,如果用戶同意,,則繼續(xù)進行連接網站的操作,如果用戶不同意,,則拋出安全異常,,指出該程序不具備http網絡訪問的權利.如右圖所示。
2)?權限許可證(Permission),。
??? 對于每一個有安全隱患的操作,,都應有一個與之對應的權限許可證,當程序要進行這些操作時,,AMS(應用程序管理軟件)應根據許可證的類型做出反應,。
??? 許可證主要分為以下兩類:allowed 許可證 和 user 許可證。
??? Allowed表示一直允許該操作,。
??? User需征求用戶的許可,,依據用戶決定的持續(xù)時間分為三類,。
??? oneshot,用戶決定只對本次有效,,下次需要該功能許可時,,繼續(xù)提問用戶。
??? session,,用戶決定在此次程序運行期間內有效,,程序重新啟動后繼續(xù)提問用戶。
??? blanket,,用戶的決定一直有效,,直到該程序被卸載。
??? 當某項操作沒有任何許可證時,,必須拒絕該操作,。
3)?保護域(Protection Domain)。
??? 程序中使用有安全隱患的操作時,,應根據該操作的許可證做出反應,,而一個操作有什么樣的許可證,與程序的來源有很大關系,,來自可信賴的開發(fā)者的程序自然會獲得較多得許可證,。這就涉及到保護域的問題。
??? 保護域實際上是一些許可證的集合,,比如一個只允許http連接的保護域:
allow: javax.microedition.io.Connector.http
??? 在這個保護域中,,所有其他的有安全隱患的操作都會被拒絕。
??? 下面是一個更為靈活的保護域,,允許http連接,,對于https和socket連接要征得用戶同意,拒絕其他有安全隱患的操作
allow: javax.microedition.io.Connector.http
blanket: javax.microedition.io.Connector.https
blanket: javax.microedition.io.Connector.socket
??? 每個程序都會進入一個保護域,,同一個保護域中的所有程序都有相同的安全策略,。
對于保護域的實現問題,比如要定義多少保護域,,每個保護域的內容如何,,MIDP2.0規(guī)范并沒有做強制性的規(guī)定,只是給了一個建議,,具體如何實現由各個廠商自行決定,。一個應用程序能夠進入什么樣的保護域,要看他來自何處,,一個不明來歷的程序肯定不會獲得較多的權限,。MIDP2.0安全框架提供了代碼簽名機制,開發(fā)者可以從權威認證機構獲得密鑰,,然后對程序進行數字簽名,,設備下載之后可以對該簽名進行驗證,,以確定該程序確實來自它所聲稱的地方,通過驗證的程序會進入一些受信任的保護域,。
3.MIDP2.0音頻開發(fā)技術
??? MIDP規(guī)范的目標是使開發(fā)出來的程序能在廣泛的移動信息設備上" title="設備上">設備上運行,,但MIDP1.0規(guī)范并不支持音頻,如果開發(fā)有聲音功能的程序,,則必須使用設備廠商自己提供的API,,這使得開發(fā)出來的程序失去了廣泛的可移植性。MIDP2.0規(guī)范增加了對聲音的支持,,這使以后開發(fā)音頻程序有了統一的規(guī)范,。
??? 移動信息設備涉及的范圍很廣,這些設備的多" title="的多">的多媒體能力也有很大的差別,,有些設備只能播放簡單的曲調,,有些設備卻有很強的音頻和視頻渲染能力。由諾基亞領導的移動媒體API(MMAPI)專家組致力于為移動設備制定一組統一的多媒體API,,以便開發(fā)出的多媒體程序能在各種設備上運行,。MMAPI專家組的工作有以下兩個成果:
??制定出MMAPI規(guī)范(JSR—135),該規(guī)范包含了對音頻和視頻的支持,,能夠完全實現該規(guī)范的設備是一些高性能的設備,,有較強的多媒體功能。諾基亞在2003年3月推出的3300手機就增加了對MMAPI的支持,。
??制定出MIDP2.0媒體API,,鑒于MIDP規(guī)范面向大多數設備,,MIDP2.0的媒體API實現了MMAPI的一個子集,,只支持音頻功能,并與MMAPI保持兼容,。
??? MIDP2.0媒體API與MMAPI有相同的體系結構,。其中主要涉及三個基本概念:
??Manager
??Player
??Control
??? Manager是獲得系統音頻功能的入口,它只包含一些靜態(tài)方法,,使用它來創(chuàng)建Player,,查詢系統支持那些協議和媒體類型,Manager還提供了一個播放簡單曲調的方法,。



??? Player負責播放媒體內容,,它由Manager創(chuàng)建,可以管理自己的生命周期,,控制播放進度,,提供可用的Control。
??? Control是用于實現一個Player可能有的各種控制,,如音量Control可以控制音量的大小,。
??? 右圖說明了Manager ,、Player 和Control之間的關系:Manager創(chuàng)建Player,Player提供Control,,Control用來控制Player,。
??? 下面以我們PC機上的多媒體系統為例說明這種關系。
??? Manager相當于PC機操作系統的一部分,,用來管理各種播放軟件,,而Player就相當于這些播放軟件,比如音頻播放器" title="播放器">播放器用來播放音頻,,視頻播放器用來播放視頻,,在這些播放器上有各種各樣的控制按鈕,這些按鈕與Control相當,,用來控制播放器,,比如音量按鈕控制播放器音量的大小。
??? 在PC機上,,我們一般選擇一個播放器播放媒體文件,,然后用播放器上的控制按鈕來控制播放過程。與之相對應,,在移動設備上開發(fā)有音頻功能的程序時,,首先用Manager創(chuàng)建一個Player,然后從Player中得到相應的Control,,用Control對Player進行控制,。
4.MIDP2.0的游戲開發(fā)技術
??? 對J2ME游戲開發(fā)的支持可能是開發(fā)者企盼已久的, MIDP2.0新增了一個游戲包javax.microedition.lcdui.game,,該包由以下五個類組成:GameCanvas,、Layer 、LayerManager,、Sprite,、TiledLayer。MIDP2.0提供的游戲API使得游戲本身可以更充分的利用設備自身的圖形處理功能,。它的出現無疑大大簡化了J2ME游戲的開發(fā)工作,,同時也使得開發(fā)者可以更多地控制程序的圖形處理性能。
1)?MIDP2.0的游戲運行機制
??? GameCanvas提供了基本的游戲運行機制,,除了繼承其父類Canvas的特性,,它還提供了特定于游戲的下列功能:
查詢鍵盤狀態(tài):
??? 在MIDP1.0中,為了獲得用戶的鍵盤輸入,,一般要使用系統的消息處理機制來處理鍵盤事件,,但鍵盤事件的產生受系統線程調度的影響,因此不一定能反映用戶當前的按鍵狀態(tài),。GameCanvas提供了getKeyStates函數來查詢鍵盤狀態(tài),,該函數返回一個整數,,這個整數的每一位代表一個健是否被按下,例如要查詢LEFT鍵是否被按下,,可用如下語句:
?int keyState = getKeyStates();
????? ?if ((keyState & LEFT_KEY) != 0) {
????????? //do something
????? ?}
??? getKeyStates返回自上一次調用該函數以來有沒有鍵被按下,,并且清除按鍵狀態(tài),因此如果連續(xù)兩次調用該函數,,第二次會很好地反映當前鍵盤的狀態(tài),。
??? 另外,為了提高性能,,GameCanvas還可以阻止鍵盤事件的產生,。用戶玩游戲時,經常會頻繁的按鍵,,如果不阻止鍵盤事件的產生,,系統會花費很多時間來發(fā)送鍵盤事件。
??? GameCanvas構造函數為:GameCanvas(boolean suppressKeyEvents)
其中參數suppressKeyEvents表示是否要阻止鍵盤事件的產生,,當該參數為true時,,keyPressed, keyRepeated 和 keyReleased 事件將會受到阻止,這時可以通過查詢鍵盤狀態(tài)來確定用戶的按健,。
要注意的是,,只有當GameCanvas正處于顯示狀態(tài)時,鍵盤事件才會受到阻止,,并且受阻止的鍵僅限于與游戲有關的鍵,,如UP、DOWN,、FIRE等,。其它鍵所產生的事件不會受到阻止。
??? 圖像的繪制與顯示:
??? 對每一個GameCanvas對象,,系統都會為它開辟一個離屏圖像緩沖區(qū),,要顯示的圖像先在該緩沖區(qū)內繪制,繪制完成后再復制到實際顯示屏幕,。這樣做既提高效率,又可以避免頻繁在實際屏幕繪圖產生的閃爍現象,。
??? 實際操作時,,先用getGraphics返回一個操作離屏圖像緩沖區(qū)的Graphics對象,使用該對象可緩沖區(qū)進行繪制,。對緩沖區(qū)繪制完畢后使用flushGraphics函數將緩沖區(qū)復制到實際屏幕,。
??? 有了上述功能,GameCanvas為游戲開發(fā)者提供了一個重要的機制:把整個游戲邏輯(包括圖像顯示和處理用戶輸入)封裝在一個單線程的單循環(huán)內,,這解決了在MIDP1.0中依賴系統的輸入和顯示線程來控制游戲問題,,有利于提高游戲的穩(wěn)定性和性能,。
??? 典型的游戲循環(huán)如下:
Graphics g = getGraphics();//獲得操作圖像緩沖區(qū)的Graphics對象
while (true) {
??// 更新游戲狀態(tài)?
?int keyState = getKeyStates();//查詢鍵盤狀態(tài)
? // 處理用戶輸入
? // 繪制圖像緩沖區(qū)
? flushGraphics();//將緩沖區(qū)復制到實際屏幕
? //延時.
}
2)?創(chuàng)建游戲場景。
??? GameCanvas提供了基本的游戲運行機制,,游戲包的其它類方便了創(chuàng)建游戲場景,。
??? 在一個游戲場景中,可能有各種角色和背景,,MIDP2.0把每一個這樣的角色或背景作為一個層(Layer)的概念,,抽象類Layer定義了層的基本屬性,如位置,、大小,、是否可見等。有兩個類繼承了Layer,,分別是Sprite和TiledLayer,。Sprite用來表示游戲中的動畫角色,TiledLayer用于創(chuàng)建大的背景,。當游戲中的Layer很多時,,有必要對這些Layer進行統一管理。LayerManager類可以集中管理這些Layer,。
5.MIDP2.0其它新增特性
??? 除了上面所述之外,,MIDP2.0還在以下方面做了增強:
1)?Push注冊
??? 用戶在Internet上瀏覽信息時,一般使用c/s(客戶/服務器)架構,,由客戶機發(fā)出請求,,服務器做出相應的相應,這種方式稱為pull方式,。與之相對應的是push方式,,即服務器主動的向客戶機發(fā)出信息。push技術非常適合無線網絡的特點,,無線網絡的帶寬比較低,,無線傳輸的信息服務費也比較高,使用push使用戶不必花費大量時間進行搜索,,既有利于提高網絡的利用效率,,又可以減少用戶的通信費用。push技術在無線商業(yè)上也有很大的應用價值,,例如服務器可以根據用戶的設定,,將各種實時信息發(fā)送到用戶的手機上,這些實時信息可以包括各種新聞,、生活信息,、廣告等。
??? MIDP2.0增加了對push注冊的支持,push注冊機制可以使MIDlet自動運行,。運行方式有兩種,,一種基于定時技術,當到達特定時間時,,程序就會運行,;另一種基于網絡,當設備收到網絡推送的信息時,,可以啟動程序運行,。設備的AMS維護著已注冊的push列表,這些列表包括注冊的網絡連接和定時器以及與它們對應的MIDlet,。當這些列表中的某個網絡連接到來或是到達某個定時時間,,AMS將根據列表激活相應的MIDlet。
2)?OTA應用程序傳輸
??? 在PC機上開發(fā)者通常使用光盤發(fā)布軟件,, 移動設備沒有軟驅,、光驅等數據交換設備,它主要通過無線網絡進行數據傳輸,,因此軟件的發(fā)布也通過無線網絡進行,。網絡運營商提供無線數據服務,開發(fā)者將自己開發(fā)的軟件提交到服務器上,,用戶連接到服務器把軟件下載到自己的設備上運行,。為了規(guī)范這一過程,MIDP規(guī)范推出時同時推出了OTA (over-the-air??? provisioning,,無線服務提供方式)規(guī)范,MIDP1.0時,,OTA作為一個推薦的行為,MIDP2.0對OTA做了增強,,并把它作為規(guī)范的一部分,,以后支持MIDP2.0的設備必須支持OTA,使得軟件的發(fā)布有了統一的規(guī)范,。
??? OTA使移動信息設備上應用軟件的下載,、安裝和刪除能夠通過無線網絡自動進行,用戶在這個過程中只需做很少的干預,。一個OTA系統通常由用戶設備,、無線傳輸網絡和提供服務的Web服務器組成。
??? 服務器的功能通常包括內容發(fā)布和管理,、訪問控制,、程序安裝、收費管理,。一方面服務器使第三方軟件開發(fā)者能將他們開發(fā)的軟件發(fā)布到服務器上,另一方面使終端用戶可以下載,、安裝這些軟件,,一旦軟件安裝成功,,可以通過收費系統收取用戶的費用,并根據下載數量來支付開發(fā)者的費用,。在整個過程中,,都有安全管理,這既包括對用戶身份信息的認證,,也包括對程序的鑒別,,以確保該程序不用于非法目的。除了這些基本功能,,有些服務器還為用戶提供個性化服務,,比如根據用戶的設備特點和用戶的設定為用戶提供可用程序列表,確保這些程序都能在用戶的設備上運行,,當某一程序有新版本推出時通知用戶等,。
3)?網絡連接增強
??? 在MIDP1.0中,只包含了對HTTP網絡連接的支持,,MIDP2.0增加了支持的連接類型,,包括HTTPS、Socket,、Datagram等,。
4)?用戶界面增強
??? MIDP2.0對用戶界面做了較多的增強,更方便開發(fā)者使用,,例如對Form的布局管理,,以字節(jié)數組的形式直接操縱Image圖像等。

參考文獻:
1.?JSR-118 Mobile Information Device Profile 2.0(Final Release), http://jcp.org/aboutJava/communityprocess/final/jsr118/index.html,,2002年11月
2.?Jonathan Knudsen,,What's New in MIDP 2.0,? http://wireless.java.sun.com/midp/articles ,,2002年11月
3.?Jonathan Knudsen,,Understanding MIDP 2.0's Security Architecture,http://wireless.java.sun.com/midp/articles ,,2003年2月
4.?Enrique Ortiz,,Introduction to OTA Application Provisioning,http://wireless.java.sun.com/midp/articles ,,2002年11月
5.?Enrique Ortiz,,The MIDP 2.0 Push Registry,http://wireless.java.sun.com/midp/articles ,,2003年1月
6.?Jonathan Knudsen,,Mobile Media API Overview http://wireless.java.sun.com/midp/articles ,2002年6月

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