一.基本概念
J2ME Java 2 Micro Edition
CLDC Connected Limited Device Configuration 有限连接设备配置
MIDP Mobile Information Device Profile 移动信息设备简表
CLDC和MIDP提供了一种便携式的、可扩展的平台,用于为小型移动设备开发应用程序
。
J2ME在设备本机操作系统上定义了三层软件:
1. Java虚拟机层:KVM
2. 配置层(Configuration Layer):CLDC
3. 架构层(Profile Layer):MIDP
配置与架构最主要的目的就是为每一组目标设备提供最优的虚拟机与类库。
配置定义了Java虚拟机性能以及适用于某一类特定设备的Java类库的最小集合
CLDC包括两个部分
i) 从J2SE中继承的类,如java.lang、java.io、java.util等等
ii) 非继承的、专门配置的类:javax.microediton.io包里
架构为一些特定的纵向市场、设备类组或工业界额外定义了一些API和特性。
MIDP:是一个CLDC构架,提供了用户界面、持久存储、网络功能以及应用模型API。
二.无线应用的J2ME总体体系结构
1. MID硬件层:主要包括手机
2. 本地系统软件层:包括由设备生产商提供的本地操作系统和系统库
3. KVM层:为Java应用提供了运行环境
4. CLDC层:为无线应用提供了核心Java API
5. MIDP层:提供了GUI库、持久存储库、网络库和时钟库
三.设置开发环境
J2MEWTK(Java2平台的小型版无线工具包):包括一个字节码预校验器(byte-code
preverifier)、一个MIDP设备仿真器、一个基础IDE和一个Sun的Foret for Java集
成组件组成。
1.Windows下安装J2ME无线工具包
i) 下载和安装Java2标准版 JDK1.4.2版本
ii) 如果还没有决定用什么JavaIDE,建议安装Forte for Java,否则,一般的文本
编辑器,以及Jcreator等IDE都是不错的选择
iii) 下载和安装J2ME无线工具包 j2me_wireless_toolkit-2_0-windows.exe
如果想将Forte for Java与工具包集成,则选择集成(Integrated)选项;
四.无线Java程序设计基础
MIDP设备上的运行程序通常包括KVM(K虚拟机)、CLDC(有限连接设备配置库)、MIDP
库,以及应用管理软件。
1. CLDC库:提供了不依赖设备的高级系统和网络库
i) J2SE子集:在java.lang、java.util和java.io包里定义的
ii) CLDC专用类:在javax.microedition.io包里定义,是从高层次对java.io和java
.net包中与网络化相关的类的通用化
CLDC支持的基本数据类型包括:byte、short、int、long、char和boolean
2. MIDP库:提供了设备的特定功能,包括设备应用管理、低级和高级图形用户界面
、持久存储以及扩展的网络功能。
i) 应用程序管理类:在javax.microedition.midlet包中定义
所有的MIDP应用程序必须在其包中扩展MIDlet类并实现其三个抽象方法:
startApp()、pauseApp()和destroyApp()。
ii) GUI类:GUI包里定义了两套API,高级API和低级API,前者强调设备可移植性,
而后者则强调独立于设备的图形元素及低级输入事件。
与GUI和事件管理相关的类在javax.microedition.lcdui包中定义
高级API:Screen类是超级类,包括Alert、Form、List及TextBox等等
低级API:主要是画布(Canvas)类和图形类
iii) 持久存储类:在设备上长期存储数据
在javax.microediton.rms包里定义
iv) 网络类:CLDC中定义的通用连接框架包括一套连接接口,但并不实现连接接口后
面的具体协议,而是将其留给MIDP完成。
在javax.microediton.io包里定义
注:当MIDlet处在重要的处理过程中时,它可以发出一个MIDletStateChangeException
申请不进入销毁状态,但是此请求不一定会得到AMS的批准。DestroyApp()方法中
的信号布尔变量unconditional将确定此请求是否为有效响应。如果unconditional信
号置为true,则将忽略该响应。
3. MIDlet
MIDP上的应用程序称为MIDlet,MIDlet没有main()方法,必须扩展javax.microedition
.midlet.MIDlet类,并实现上文曾提到的三个抽象方法,此外MIDlet还必须有一个公
共的无参数构造函数。
注:AMS(应用管理软件)可以调用MIDlet类定义的方法,并启动或结束某个MIDlet
应用程序
4. AMS(应用管理软件):本质上是一个软件应用程序,由MIDP实现组成,具体包括
安装、执行和清除MIDlet。
AMS的具体实现会因设备的不同而有所区别,但提供的基本服务都是相同的:
● AMS为用户提供从无线设备上安装和卸载MIDlet的方法
● AMS为MIDlet提供一个运行环境。
● AMS应能很好的控制所有发生在安装与执行应用程序过程中的错误,保证不会破坏
系统。
5. 编译
使用J2ME编译器编译J2ME程序时,要用MIDP类文件覆盖J2SE的主引导类文件,在命令
行模式下,运行javac进行编译需加参数
-bootclasspath %SUNJ2MEHOME%/lib/midpapi.zip
midpapi.zip中包括了所有的CLDC和MIDP库
6. 预校验
7. 创建JAR文件
五.打包与部署Java无线应用
首先,所有的MIDlet类文件都必须打包到单个JAR文件中。每个JAR文件可以包含多个
MIDlet应用,而这组MIDlet应用就组成了一个MIDlet套件
与MIDlet打包和部署相关的两个文件:清单(manifest)和应用描述符(application
descriptor)。清单用于MIDlet打包,它描述了MIDlet套件的JAR文件内容。应用描
述符则用于MIDlet部署,它描述了MIDlet套件的菜单项及JAR文件位置等内容
1. 清单:清单文件必须包含在MIDlet套件的JAR文件中。它描述了JAR文件的内容,
包括名字、版本和MIDlet套件生产商的信息,此外它还为MIDlet套件中的每个MIDlet
提供一个条目。
2. 应用描述符:应用描述符与清单文件格式一致,但功能却大不相同。应用描述符
用于部署MIDlet套件,特别在OTA(空中下载)部署过程中使用(以后介绍)。
应用描述符不放在JAR文件中。应用描述符文件的扩展名必须是.jad。
应用描述符有七个强制性预定义属性:MIDlet-Name MIDlet-Version MIDlet-Vendor
MIDlet-Jar-URL MIDlet-Jar-Size MicroEdition-Profile
MicroEditon-Configuration
四个可选的预定义属性:MIDlet-Description MIDlet-Icon MIDlet-Info-URL MIDlet
-Data-Size
将MIDlet套件的JAR文件下载到设备欠,应用管理软件将检查应用描述符里的七个强
制性属性,并确保此应用适用于这个设备。否则不能下载该JAR文件
ps:用户可以在应用描述符里定义自己的属性,但这些属性不能以MIDlet-开头
3. 使用J2ME无线工具包的Ktoolbar
i) 启动Ktoolbar开发环境
ii) 点击新建工程,输入工程名和MIDlet类名,二者可以相同。
iii) 接着弹出工程设置窗口。这个界面允许你为清单和应用描述符修改MIDlet属性
。其中"必须的"、"可选的"和"用户定义的"三个选项标签下可以修改各种必须的、可
选的和用户定义的属性。在MIDlet选项标签下可以添加和删除MIDlet套件中的MIDlet