在BlackBerry設(shè)備上使用Java及應(yīng)用程序控制
在BlackBerry設(shè)備上使用Java
編譯源代碼,打包為.cod文件,并將.cod文件加載到BlackBerry設(shè)備上,通過(guò)虛擬機(jī)運(yùn)行。
注:.cod文件名控制在128字節(jié)。
如CLDC中描述的那樣,BlackBerry IDE使用一個(gè)分割的VM架構(gòu)。為了降低內(nèi)存的數(shù)量以及BlackBerry設(shè)備需要的處理能力,部分類加載過(guò)程,稱為預(yù)驗(yàn)證,它在Java代碼加載到BlackBerry之前發(fā)生。在將源代碼打包為.cod文件之前,自動(dòng)驗(yàn)證它。在類加載到BlackBerry設(shè)備時(shí)完成驗(yàn)證的提示。
限制
在 CLDC1.1 中描述的那樣 BlackBerry 虛擬機(jī)有以下限制:
◆沒有對(duì)象的析構(gòu)(finalization)
◆沒有用戶類的加載
◆沒有反射,因此不支持 RMI 和 Jini 網(wǎng)絡(luò)技術(shù)。
◆沒有原生方法(Native method)
◆沒有 Runtime.exec()執(zhí)行外部的進(jìn)程
多線程
BlackBerry Java 環(huán)境提供一個(gè)真正的多線程環(huán)境來(lái)運(yùn)行應(yīng)用程序。這個(gè)環(huán)境允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行,允許事件廣播到多個(gè)應(yīng)用程序,以及長(zhǎng)操作和監(jiān)聽線程在背后運(yùn)行。
持久數(shù)據(jù)
存儲(chǔ)在閃存中的數(shù)據(jù)在 BlackBerry 重新設(shè)置之間持久保存。在 BlackBerry 設(shè)備上存儲(chǔ)數(shù)據(jù)可以采用以下二種方式中的一種:
◆使用 MIDP 記錄存儲(chǔ)
◆使用 BlackBerry 持久模型
網(wǎng)絡(luò)通信
BlackBerry JDE 根據(jù) MIDP2.0,實(shí)現(xiàn)了網(wǎng)絡(luò)通信。它提供多種連接選項(xiàng),包括通過(guò)使用 HTTP代理連接在公司防火墻背后安全連接的能力。
BlackBerry JDE 提供了以下幾種連接類型:
◆流連接(StreamConnection 接口,包括:
1.HTTP 連接(HttpConnection 接口)
2.HTTPS 連接(HttpsConnection 接口)
3.Socket 連接(SocketConnection 接口)
4. 安全 socket 連接(SecureConnection 接口)
5.序列連接到 BlackBerry 設(shè)備的一個(gè)通信接口(CoomConnection 接口)
◆數(shù)據(jù)報(bào)連接(DtagramConnection 接口),包含
1. UDP 數(shù)據(jù)報(bào)連接(UDPDatagramConnection 接口)
Javax.microedition.io.PushRegistry 類對(duì) BlackBerry 設(shè)備保持了一些進(jìn)入的連接。
流
BlackBerry JDE 為包含在 CLDC java.io 包里的流提供了標(biāo)準(zhǔn)的接口和類。
MIME 編碼
BlackBerry IDE 提供了 MIMEInputStream 和 MIMEOutputStream 類來(lái)讀寫一個(gè) MIME 編碼的數(shù)據(jù)流。
壓縮
在 net.rim.device.api.compress 包里 ,BlackBerry JDE 提供類來(lái)讀取使用 Zlib 或者 GZip格式壓縮的數(shù)據(jù)流。這些類的行為如 Java 標(biāo)準(zhǔn)版本里的 java.util.zip 包里對(duì)應(yīng)的類一樣。缺省的,壓縮是允許的,BlackBerry 設(shè)備可以寫有效的 GZip 和 Zlib 文件為這樣壓縮文件的內(nèi)容。解壓縮同樣也是支持的。#p#
集合
BlackBerry IDE 提供了一組接口和實(shí)用類來(lái)管理 BlackBerry 設(shè)備上的集合。
net.rim.device.api.collection 包包含了許多接口,這些接口為某些特定類型數(shù)據(jù)類型多定義了種類型的集合,例如列表,數(shù)組以及映射。這些接口定義了與 Java 標(biāo)準(zhǔn)版本集合框架的 list,set 和 map 接口類似的功能。
在你自己的類中實(shí)現(xiàn)這些接口,或者使用在 net.rim.device.api.collection.util 包里提供的使用類。
向量
標(biāo)準(zhǔn)的 java.util.Vector 實(shí)現(xiàn)了一個(gè)大小可以改變的對(duì)象數(shù)組。BlackBerry JDE 也提供了合適的類,例如 rim.device.api.util.IntVector 和 rim.device.api.util.ByteVector 來(lái)對(duì)主要類型進(jìn)行工作。這些類看起來(lái)和普通的 Vector 一樣,除了它們優(yōu)化了在任何位置上插入的項(xiàng)。相反,如果你使用標(biāo)準(zhǔn)的大 Vector 作隨機(jī)的改變,大量的數(shù)據(jù)會(huì)在閃存和 RAM 移動(dòng)。
列表
BlackBerry JDE 在 net.rim.device.api.collection.util包里提供了一些類來(lái)管理元素的列表
哈希表
除了 CLDC 提供的標(biāo)準(zhǔn) java.util.Hashtable 之外,BlackBerry JDE 包含了特定的net.rim.device.api.collection.util.LongHashtableCollection 類,這個(gè)類提供了使用長(zhǎng)整形作為關(guān)鍵字的哈希表集合。一個(gè) LongHashtableCollection 對(duì)象,寫操作作為一個(gè)映射(使用一個(gè)關(guān)鍵字-元素對(duì)),讀操作作為一個(gè)映射或者作為一個(gè)集合(在集合里作為一個(gè)數(shù)組來(lái)得到數(shù)據(jù))。#p#
事件監(jiān)聽者
事件監(jiān)聽者接口根據(jù)事件類型劃分。每個(gè)應(yīng)用程序注冊(cè)來(lái)接收特定類型的事件。應(yīng)用程序事件隊(duì)列然后調(diào)度事件到一個(gè)合適的監(jiān)聽者。
應(yīng)用程序可以實(shí)現(xiàn)合適的監(jiān)聽者接口或者在各種 Screen 對(duì)象里重寫監(jiān)聽者方法。大多數(shù)應(yīng)用程序?qū)崿F(xiàn)了 KeyListener 和 TrackwheelListener 接 口 ,而且注冊(cè)了監(jiān)聽者來(lái)接收鍵盤和滑輪的事件。鍵盤和滑輪是用戶和應(yīng)用程序交互的主要方式。
下列的事件監(jiān)聽者放在 net.rim.device.api.system 包中
#p#
系統(tǒng)功能
net.rim.device.api.system 包的類提供了訪問(wèn) Java VM 和 BlackBerry 設(shè)備上系統(tǒng)資源的能力。
號(hào)信息
RadioInfo 提供了訪問(wèn)信號(hào)狀態(tài)信息的能力。
得到設(shè)備信息
DeviceInfo 類可以訪問(wèn)下列 BlackBerry 設(shè)備的信息:
◆電池電源和狀態(tài)
◆Blackerry 設(shè)備號(hào)
◆空閑時(shí)間
平臺(tái)版本
系統(tǒng)事件通知用戶
當(dāng)一個(gè)事件,例如一條新消息到來(lái)的時(shí)候,Alert 類允許應(yīng)用程序通知用戶。
監(jiān)視內(nèi)存使用情況
使用一個(gè) Memory 類提供的靜態(tài)方法來(lái)得到 VM 內(nèi)存使用統(tǒng)計(jì)信息。
Memory 類很多實(shí)用方法返回一個(gè) MemoryStats 對(duì)象。使用 MemoryStats 類提供的實(shí)用方法得到 BlackBerry 設(shè)備上內(nèi)存和可用存儲(chǔ)空間的詳細(xì)信息。
日志事件
EventLogger 允許應(yīng)用程序在持久存儲(chǔ)里存儲(chǔ)事件日志。BlackBerry 設(shè)備維護(hù)事件隊(duì)列,以至當(dāng)日志滿時(shí),會(huì)刪除最早的事件,并增加新的事件。用戶可以按住 Alt+lglg鍵來(lái)查看BlackBerry設(shè)備的系統(tǒng)事件日志。
使用工具
BlackBerry JDE 在 net.rim.device.api.util 包里提供了一組實(shí)用工具,這些類里的許多類提供了和 Java 標(biāo)準(zhǔn)版本里相似的功能。
◆Comparator 接口定義了對(duì)象集合上的順序的方法。
◆Arrays 提供方法來(lái)操作數(shù)組,例如排序,查找,以及作為列表來(lái)查看數(shù)組。
◆BitSet 類維護(hù) bit 的集合。
net.rim.device.api.util 包包含了多個(gè)類來(lái)管理特定類型的數(shù)據(jù)集合,包括向量,哈希表,映射以及棧。#p#
應(yīng)用程序控制
應(yīng)用程序控制允許系統(tǒng)管理員操作以下動(dòng)作:
◆控制內(nèi)部連接(公司防火墻背后的連接)
◆控制外部連接
◆控制本地連接(序列和 USB 連接)
◆控制訪問(wèn)鍵存儲(chǔ)(key store)
◆控制訪問(wèn)特殊的 API.
◆阻止第三方應(yīng)用程序存在 BlackBerry 設(shè)備上。
為了得到更多信息,參看 BlackBerry Enterprise Server Handheld Management Guide 的應(yīng)用程序管理。
受限制訪問(wèn)的 API,類,和方法
使用了下列受限的 API,類,以及方法的應(yīng)用程序可以加載到 BlackBerry 設(shè)備,但是如果他們?cè)L問(wèn)了一個(gè)沒有在應(yīng)用程序控制下得到允許的 API 時(shí),在運(yùn)行時(shí)會(huì)拋出一個(gè)ControlledAccessException 或者 NoClassDefFoundError 的異常。
【編輯推薦】
- 簡(jiǎn)介BlackBerry API
- Java語(yǔ)言編寫B(tài)lackBerry應(yīng)用程序
- BlackBerry應(yīng)用開發(fā)者指南基礎(chǔ)附錄 .alx文件
- BlackBerry應(yīng)用開發(fā)者指南 使用受控API
- BlackBerry應(yīng)用開發(fā)者指南 Mail API
- BlackBerry應(yīng)用開發(fā)者指南 PIM API
- BlackBerry應(yīng)用開發(fā)者指南 選項(xiàng)API