一 J2ME是什么?

简单的说,就是一种开发平台,是SUN推出的对嵌入式、消费类电子产品推出的开发平台,与J2SE 和J2EE 共同组成Java 技术的三个重要的分支。

深一步说,是一种规范集合。规范的名称是Java Specification Request(JSR),由JCP发布。我们通常会看到许多文档提到JSR118之类的,就是指这个。

image

 

摘自SUN的网站。

二 J2ME的体系结构

关于这又很多详细介绍,简单的说,包括CLDC和CDC,现在SUN网站又出了一个

Java ME Platform for Converged Services,就目前很少用。主要还是前两者。

J2ME主要是由configuration、profile、optional package组成。

configuration是提供给最大范围设备使用的最小类库集合,在配置中同时包含Java 虚拟机;

profile是针对一系列设备提供的开发包集合;

optional package是针对特定设备提供的类库,比如某些设备是支持蓝牙的;

CLDC和CDC就是两种configuration,CLDC 主要针对那些资源非常受限的设备比如手机、PDA、双工寻呼机等,而CDC 主要面对那些家电产品,比如机顶盒、汽车导航系统等;

Mobile Information Devices Profile(MIDP)就是CLDC 上层的重要简表;

 

image

 

A MIDlet可以是一个a game, a business application 。

Digital Media Platform

三、MIDlet生命周期-摘自网络

在MIDP中定义了一种新的应用程序模型MIDlet,它是被Application Management Software(AMS)管理的。AMS 负责MIDlet 的安装、下载、运行和删除等操作。在被AMS 管理的同时,MIDlet 可以和应用管理软件通信通知应用管理软件自己状态的变化,通常是通过方法notifyDestroyed()和notifyPaused()实现的MIDlet 有三个状态,分别是pause、active 和destroyed。在启动一个MIDlet 的时候,应用管理软件会首先创建一个MIDlet 实例并使得他处于pause 状态,当startApp()方法被调用的时候MIDlet 进入active 状态,也就是所说的运行状态。在active 状态调用destroyApp(booleanunconditional)或者pauseApp()方法可以使得MIDlet 进入destroyed 或者pause 状态。值得一提的是destroyApp(boolean unconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS 通知MIDlet 进入destroyed 状态。在destroyed 状态的MIDlet 必须释放了所有的资源,并且保存了据。如果unconditional 为false 的时候, MIDlet 可以在接到通知后抛出
MIDletStateChangeException 而保持在当前状态,如果设置为true 的话,则必须立即进入destroyed状态。下图说明了MIDlet 状态改变情况:

 

image