分享
 
 
 

勃勃生机的J2ME技术简要标准介绍

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

J2ME的标准很多,这里我们只简要介绍几个基本而重要的标准。读者也可以直接去查标准的正式文档,在JCP网站可以找到所有J2ME标准和规范,包括还在提出和审核阶段,没有正式成为标准的提案。

虽然J2ME标准繁多,但只要把握住标准划分的原因就很轻易把握。在这个技术飞速发展的领域,我们不能把眼光局限于标准的字面含义,而要灵活把握,把握其精神。比如,CLDC和CDC的定义中具体的最小内存需求仅仅是"最小的",随着硬件能力的飞速发展,很有可能一些界限会变得模糊。PDA本来应该属于CLDC的范围,但是Compaq的ipaq上却实现了CDC。以后的下一代PDA有64M内存并不意外,在其上实现CDC也是完全可能的。但是,从功能的角度,应该还是CLDC以及PDA PRofile更适合于PDA的条件。到那时,具体的实现就要看厂商和开发者的选择了。还需要注重的是,由于Profile是建于Configuration之上,作为对Configuration的扩展,因此Profile必须Configuration的支持。有的文章在讲到MIDP的内存需求时,说MIDP需要最少256K,这是指MIDP本身。而有的文章说MIDP需要最少768K,那时因为把作为基础的CLDC所需要的512K算进去了

CLDC

CLDC(Connected, Limited Device Configuration)针对个人化的移动的有限连接信息设备,例如智能手机,双向呼机,PDA等等。其要求是:

512 KB 以下内存

有限能源供给(通常使用电池)

有限或非持续网络连接

简单的用户界面(甚至没有)

在如此严格的限制之下,CLDC 只包括四个包,其中三个来自标准 java 规范并且作了缩减(java.lang、java.util 和 java.io),另一个专门针对CLDC (javax.microedition)。

包 描述 类和接口数目

java.io 系统输入输出 18

java.lang Java 编程语言的基本类 38

java.util 集合、日期和时间支持、各式实用工具类 10

javax.microedition 通用连接框架(Generic Connection Framework) 10

CLDC必须照顾最苛刻的硬件条件,因此去掉了许多重要的类和特征,只保留了最核心的一些基本类。例如RMI和映射因需要内存太多而被舍弃,错误处理要求的代价太高,也被删除了。许多设备不能支持浮点数,更不用说双精度类了。还有许多设备没有或不提供访问一个文件系统的功能或权限。不过请放心,对于那些能够支持更多特征的设备,它们所需要的这些功能或者超出标准J2SE要求的功能,都可以由针对此类设备的Profile来补充。

CLDC中唯一新增的javax.microedition包定义了一个通用连接框架(Generic Connection Framework,GCF)。通用连接框架把J2SE中的文件,sockets,HTTP请求和其他输入/输出机制的概念抽象为更简单的一套类。可以说,它提供了java.io和java.net的同样功能,却不需要设备的非凡能力。与底层操作系统无关是Configuration的基本要求。通用连接框架可以看成是构造通讯驱动的框架,这一点类似于J2SE中的JDBC,后者是一个构造数据库驱动的框架。通用连接框架并没有定义对任何特定协议的支持,但是在Sun的一个CLDC参考实现中确实包括了对一些通讯协议的支持,这点使许多人感到困惑。那些协议只是一些例子,协议的支持应该在Profile层或者专门针对某设备的扩展中定义。

由于虚拟机处于Configuration中定义平台的核心,Configuration和虚拟机是紧密相关的。既然CLDC的硬件要求如此苛刻,对其虚拟机也就有着非常高的要求。Sun提供的参考实现是KVM(K Virtual Machine)。KVM是完全从头开始编写的,其设计目标包括:

虚拟机的大小和类库为50到80KB左右

内存占用为几十K

在具有 16 位和 32 位处理器的设备上,有相当的性能

高度可移植和可扩展,特定于机器和/或平台的代码的总量很少

多线程和垃圾回收是独立于系统的

可以对虚拟机的组件进行配置,以适合于特定设备,从而增强了灵活性

KVM的实现是相当成功的。最早在1999年JavaOne大会的时候,作为Sun的Spotless计划派生结果,Sun分发了许多Palm V,提供了Palm OS上的第一个KVM版本和一个实验性的类库com.sun.kjava。这一KVM非常小而紧凑,只需要几十K内存。而com.sun.kjava类库提供了Palm的图形用户接口,Palm数据库访问,简单的集合类等等。将两者结合,开发者就可以开发Palm上的Java应用,因此它受到了开发者的广泛欢迎,网上也有了许多教程和示例代码。事实上,到目前为止,这都是在Palm上开发Java程序的唯一合理途径。CLDC没有定义用户界面等API,MIDP并不适合PDA,对应的最合适J2ME标准是PDA Profile,但是尚未完成。许多开发者强烈要求Sun在正式的J2ME标准中继续支持它,但是Sun已经放弃了这一技术,而且并不保证正式的PDA Profile与之的兼容性,因此不建议读者过多研究。

由于这一历史原因,造成了很多名词上的困扰。许多早期的文章把这一KVM与com.sun.kjava包合称为KVM,表示这一技术,而现在所说的KVM应该是单单指Sun的CLDC虚拟机参考实现。甚至还有人用K Java作为J2ME的代称,表示基于KVM的Java,这很轻易和正式的J2ME标准以及早期的com.sun.kjava包相混淆,读者在看这类文章时需要注重文章的时间和背景,并采用严格的正式名称。

目前Sun还正在开发KVM的一个高性能版本--Project Monty虚拟机以用于下一代的移动信息处理设备。它采用了Hot Spot的技术,性能将比现有的KVM将近高一个数量级。

虽然KVM作为Sun的参考实现最经常被提到,不过并不等于一定要用KVM。其它公司的虚拟机只要满足相应的Configuration里的定义,通过兼容性测试,一样可以作为Configuration的虚拟机。目前IBM WebSphere Micro Environment,已经通过了"Java PoweredTM"认证,其J9虚拟机在相当多的平台上通过了J2ME兼容性测试:

MIDP

MIDP(Mobile Information Device Profile)定义了针对移动信息处理设备(主要指智能手机和一部分具有无线通信功能的PDA)的图形界面,输入和时间处理,持久性存储,无线电话网络连接之上的一些消息处理(例如短消息),安全等等API,并且考虑到了移动信息设备的屏幕和内存限制。类似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet 包的MIDlet应用程序框架

PDA Profile

PDA Profile将在CLDC的基础上,提供针对PDA的用户界面,数据存储等扩展API。用户界面部分适用于有限大小和色彩的显示,为了支持开发者已有的经验基础,将是AWT的一个子集,也有可能在AWT子集之上加入MIDP用户界面组件。而存储机制将是简单的,平台无关的,类似于MIDP中的存储,为应用程序、数据、配置/环境信息提供简单的数据存储。

CDC

CDC(Connected Device Configuration)针对有固定的不间断网络连接的共享连接信息设备,如置顶盒(set-top boxes),Web-TV,支持Internet的有屏幕电话,汽车娱乐/导航系统等。

CDC要求为Java提供至少2M的内存,这可以是ROM加上RAM,也就是说,Java虚拟机和核心类库很有可能放在ROM或者Flash里。事实上,下一代无线手持设备完全可以满足CDC的需求。

CDC是CLDC的完整超集,包含了所有的CLDC规范。另外,在相对充裕的条件下,它支持J2SE的标准 Java 虚拟机和一部分核心类库。

其次,CDC支持标准的J2SE虚拟机,这只是Java平台的基础,并不包括建筑于平台基础之上的各种类库。特定设备需要的特定类库由相应的Profile来定义。还是那个要害:Configuration定义的是一类设备的与设备无关的最小平台,因此,诸如用户界面之类的类都被分离,留在Profile中定义。

虽然CDC支持标准的J2SE虚拟机,但是标准的Java虚拟机显然无法适应有限的资源环境。为此需要专门定义一个虚拟机,称为CVM(开始的时候,CVM代表Compact Virtual Machine,但是后来Sun的工程师认为这有可能与KVM相混淆,因此现在C并不代表特定的含义)。CVM除了支持标准J2SE虚拟机的所有特性外,还支持许多嵌入系统需要的特性,更适合于在资源限制条件下运行,移植性很强。目前Sun提供了linux和VxWorks之上的CVM参考实现(reference implementation)。

Foundation Profile

Foundation Profile提供除了用户界面以外CDC所缺少的几乎所有标准J2SE核心类库,作为其他所有Profiles的基础(我们看到,多个Profile可以共存,也可以叠加)。

Personal Profile

Personal Profile针对那些资源相对有限,但是需要高度的Internet和WEB连接支持的设备,例如Web-TV,汽车导航系统等等。它在Foundation Profile的基础上提供了网络特性以及支持Java applets的 GUI。

Personal Profile的前身是Personal Java,Personal Java是Sun为资源限制设备创建 Java 平台版本的早期尝试。Personal Profile将与Personal Java 1.1和1.2向后兼容。

RMI Profile

RMI Profile在Foundation Profile的基础上提供RMI支持,将答应网络设备与其它系统应用程序(不一定是J2ME的)交互操作。(

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有