在BlackBerry设备上使用Java
编译源代码,打包为.cod文件,并将.cod文件加载到BlackBerry设备上,通过虚拟机运行。
注:.cod文件名控制在128字节。
如CLDC中描述的那样,BlackBerry IDE使用一个分割的VM架构。为了降低内存的数量以及BlackBerry设备需要的处理能力,部分类加载过程,称为预验证,它在Java代码加载到BlackBerry之前发生。在将源代码打包为.cod文件之前,自动验证它。在类加载到BlackBerry设备时完成验证的提示。
限制
在 CLDC1.1 中描述的那样 BlackBerry 虚拟机有以下限制:
◆没有对象的析构(finalization)
◆没有用户类的加载
◆没有反射,因此不支持 RMI 和 Jini 网络技术。
◆没有原生方法(Native method)
◆没有 Runtime.exec()执行外部的进程
多线程
BlackBerry Java 环境提供一个真正的多线程环境来运行应用程序。这个环境允许多个应用程序同时运行,允许事件广播到多个应用程序,以及长操作和监听线程在背后运行。
持久数据
存储在闪存中的数据在 BlackBerry 重新设置之间持久保存。在 BlackBerry 设备上存储数据可以采用以下二种方式中的一种:
◆使用 MIDP 记录存储
◆使用 BlackBerry 持久模型
网络通信
BlackBerry JDE 根据 MIDP2.0,实现了网络通信。它提供多种连接选项,包括通过使用 HTTP代理连接在公司防火墙背后安全连接的能力。
BlackBerry JDE 提供了以下几种连接类型:
◆流连接(StreamConnection 接口,包括:
1.HTTP 连接(HttpConnection 接口)
2.HTTPS 连接(HttpsConnection 接口)
3.Socket 连接(SocketConnection 接口)
4. 安全 socket 连接(SecureConnection 接口)
5.序列连接到 BlackBerry 设备的一个通信接口(CoomConnection 接口)
◆数据报连接(DtagramConnection 接口),包含
1. UDP 数据报连接(UDPDatagramConnection 接口)
Javax.microedition.io.PushRegistry 类对 BlackBerry 设备保持了一些进入的连接。
流
BlackBerry JDE 为包含在 CLDC java.io 包里的流提供了标准的接口和类。
MIME 编码
BlackBerry IDE 提供了 MIMEInputStream 和 MIMEOutputStream 类来读写一个 MIME 编码的数据流。
压缩
在 net.rim.device.api.compress 包里 ,BlackBerry JDE 提供类来读取使用 Zlib 或者 GZip格式压缩的数据流。这些类的行为如 Java 标准版本里的 java.util.zip 包里对应的类一样。缺省的,压缩是允许的,BlackBerry 设备可以写有效的 GZip 和 Zlib 文件为这样压缩文件的内容。解压缩同样也是支持的。#p#
集合
BlackBerry IDE 提供了一组接口和实用类来管理 BlackBerry 设备上的集合。
net.rim.device.api.collection 包包含了许多接口,这些接口为某些特定类型数据类型多定义了种类型的集合,例如列表,数组以及映射。这些接口定义了与 Java 标准版本集合框架的 list,set 和 map 接口类似的功能。
在你自己的类中实现这些接口,或者使用在 net.rim.device.api.collection.util 包里提供的使用类。
向量
标准的 java.util.Vector 实现了一个大小可以改变的对象数组。BlackBerry JDE 也提供了合适的类,例如 rim.device.api.util.IntVector 和 rim.device.api.util.ByteVector 来对主要类型进行工作。这些类看起来和普通的 Vector 一样,除了它们优化了在任何位置上插入的项。相反,如果你使用标准的大 Vector 作随机的改变,大量的数据会在闪存和 RAM 移动。
列表
BlackBerry JDE 在 net.rim.device.api.collection.util包里提供了一些类来管理元素的列表
哈希表
除了 CLDC 提供的标准 java.util.Hashtable 之外,BlackBerry JDE 包含了特定的net.rim.device.api.collection.util.LongHashtableCollection 类,这个类提供了使用长整形作为关键字的哈希表集合。一个 LongHashtableCollection 对象,写操作作为一个映射(使用一个关键字-元素对),读操作作为一个映射或者作为一个集合(在集合里作为一个数组来得到数据)。#p#
事件监听者
事件监听者接口根据事件类型划分。每个应用程序注册来接收特定类型的事件。应用程序事件队列然后调度事件到一个合适的监听者。
应用程序可以实现合适的监听者接口或者在各种 Screen 对象里重写监听者方法。大多数应用程序实现了 KeyListener 和 TrackwheelListener 接 口 ,而且注册了监听者来接收键盘和滑轮的事件。键盘和滑轮是用户和应用程序交互的主要方式。
下列的事件监听者放在 net.rim.device.api.system 包中
#p#
系统功能
net.rim.device.api.system 包的类提供了访问 Java VM 和 BlackBerry 设备上系统资源的能力。
号信息
RadioInfo 提供了访问信号状态信息的能力。
得到设备信息
DeviceInfo 类可以访问下列 BlackBerry 设备的信息:
◆电池电源和状态
◆Blackerry 设备号
◆空闲时间
平台版本
系统事件通知用户
当一个事件,例如一条新消息到来的时候,Alert 类允许应用程序通知用户。
监视内存使用情况
使用一个 Memory 类提供的静态方法来得到 VM 内存使用统计信息。
Memory 类很多实用方法返回一个 MemoryStats 对象。使用 MemoryStats 类提供的实用方法得到 BlackBerry 设备上内存和可用存储空间的详细信息。
日志事件
EventLogger 允许应用程序在持久存储里存储事件日志。BlackBerry 设备维护事件队列,以至当日志满时,会删除最早的事件,并增加新的事件。用户可以按住 Alt+lglg键来查看BlackBerry设备的系统事件日志。
使用工具
BlackBerry JDE 在 net.rim.device.api.util 包里提供了一组实用工具,这些类里的许多类提供了和 Java 标准版本里相似的功能。
◆Comparator 接口定义了对象集合上的顺序的方法。
◆Arrays 提供方法来操作数组,例如排序,查找,以及作为列表来查看数组。
◆BitSet 类维护 bit 的集合。
net.rim.device.api.util 包包含了多个类来管理特定类型的数据集合,包括向量,哈希表,映射以及栈。#p#
应用程序控制
应用程序控制允许系统管理员操作以下动作:
◆控制内部连接(公司防火墙背后的连接)
◆控制外部连接
◆控制本地连接(序列和 USB 连接)
◆控制访问键存储(key store)
◆控制访问特殊的 API.
◆阻止第三方应用程序存在 BlackBerry 设备上。
为了得到更多信息,参看 BlackBerry Enterprise Server Handheld Management Guide 的应用程序管理。
受限制访问的 API,类,和方法
使用了下列受限的 API,类,以及方法的应用程序可以加载到 BlackBerry 设备,但是如果他们访问了一个没有在应用程序控制下得到允许的 API 时,在运行时会抛出一个ControlledAccessException 或者 NoClassDefFoundError 的异常。
【编辑推荐】
- 简介BlackBerry API
- Java语言编写BlackBerry应用程序
- BlackBerry应用开发者指南基础附录 .alx文件
- BlackBerry应用开发者指南 使用受控API
- BlackBerry应用开发者指南 Mail API
- BlackBerry应用开发者指南 PIM API
- BlackBerry应用开发者指南 选项API