分享
 
 
 

J2ME结构与相关规范介绍

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

J2ME结构与相关规范介绍

J2ME的适用范围很广,而且针对J2ME的规范也在增加,很多人因为对各种规范的作用不了解造成对J2ME体系的误解。本文主要讲述一下 J2ME 的结构和构成,同时对一些容易混淆的概念进行解释。

J2ME是什么?

很多人把J2ME等同于手机程序开发,其实这是一个非常错误的说法。也有人认为J2ME是一个标准,一个规范,这同样是不正确的。

Sun 公司将 J2ME (Java 2 Micro Edition,Java 2微型版)定义为一种以广泛的消费性产品为目标的、高度优化的 Java 运行时环境。自从 1999 年 6 月在 JavaOne Developer Conference 上声明之后,J2ME 进入了小型设备开发的行列。通过 Java 的特性,遵循 J2ME 规范开发的 Java 程序可以运行在各种不同的小型设备上。

J2ME是Sun公司为嵌入式开发所定义的一个框架,一系列标准的规范所组成。所以J2ME是一个协议簇,而不是单一的规范。

J2ME是一个非常大的概念,下面的一幅图可以看看J2ME的适用范围。

图1

图中的CDC 和CLDC 是支持J2ME的两类设备的配置的简称,分别是:

? ?CDC (Connected Device Configuration,连接设备配置),运行在这一配置上的程序称为J2ME Application,在CVM上进行解释。

? ?CLDC(Connected Limited Device Configuration,连接限制设备配置),运行在这一配置上的程序称为MIDlet ,在KVM上进行解释。

可以把CDC 和CLDC 理解为对硬件的定义,就如同PC机和小型机一样,这些设备提供Java程序运行的硬件环境。

在 J2ME 中有两类虚拟机:CVM (C Virtual Machine,C虚拟机)与 KVM (K Virtual Machine,K虚拟机)。KVM 和 CVM均可被看作是一种 Java 虚拟机,是 JVM 的子集,在功能上都是 JVM 的缩减版。这两类虚拟机的适用范围并不相同,简单地说,CVM 的功能比KVM 功能更为强大。

这里再补充一点,J2ME还包括对了Java Card 的定义,用于各类IC卡。JavaCard 和CDC/CLDC在J2ME中是相同的地位。

JavaCard 的网页见:http://java.sun.com/prodUCts/javacard/index.jsp 。

所以在这里要理解J2ME的含义,就可以从CLDC 和CDC这两方面进行了解。

CLDC 与CDC的对比

在前面的图1中已经显示出CLDC 和CDC在适用设备上的区别。

CDC主要针对32位的处理器主频通常在75MHz以上,内存可能在1~4MB 。CDC 针对的设备主要是数字电视、机顶盒、网络电话、车载计算设备等。这些设备的特点是:

? 有线连接

? 电源稳定

? 设备外设资源比较受限

CLDC设备的最低配置为:CPU为16位、32位主频在 16MHz以上的处理器,设备的内存比较少,可能只有512KB,甚至更少。现在硬件的发展非常快,以前所定义的CLDC的设备目前的设备甚至远远超过原来的定义。不过请注意一下,J2ME 对CLDC设备配置的定义只是一个最低要求的定义。其实目前很多CLDC设备的配置都远远超过上面的配置,不过要分辨CLDC设备主要要从设备特点上进行区别。这些设备的特点是:

? 无线连接

? 没有稳定的电源供应(通常使用电池)

? 设备外设资源极少

具体一点说如智能手机,例如:Nokia 7650,Nokia 3650等,还有例如PDA设备也都应该归于CLDC的范围。

简表

J2ME 使用配置(CDC或CLDC)和简表(Profile)定制JRE(Java Runtime Environment, Java 运行时环境)。一个完整的 JRE由配置和简表组成,配置决定了所使用的 JVM(可能是CVM 或 KVM),而简表通过定义特定的类来为应用程序提供功能上的支持,一个简表定义了设备所提供的 API 集合。

如果把CDC 、CLDC 理解称为硬件配置的话,Profile可以理解为硬件上的操作系统,这个操作系统提供了程序可以调用的所有功能集合,也就是说Profile定义了各种功能的 API 函数集。当然这个比喻并不完全恰当,因为CVM 和 KVM 才充当了解释Java程序执行的角色。又或者可以把Profile理解称为虚拟机上提供的开发包,不同的开发包提供不同的核心功能调用。不管怎么理解都好,只要便于自己理解。

这里再补充说明一点:CDC规范和CLDC规范中也都定义了基本的API集合,这些API提供Java 的基本功能,例如:java.io、java.lang、java.util 、javax.microedition.io 这些包就是定义与CDC 和CLDC中的。不过这些包都是Java最基本的功能,更多的面向设备的功能性 API 必须还是通过简表来提供。

下面介绍一下几种常见的简表:

? MIDP (Mobile Information Devices Profile,移动信息设备简表):定义了移动信息设备的类型和提供相关的API集合, MIDP 所定义的功能更加面向用户,而且比 CLDC 更高级。

? IMP (Mobile Information Device Profile,信息模块简表):定义了提供网络连接,但是显示方式比较单一的设备简表,例如告警器。

? Foundation Profile(基础简表):提供除了用户界面以外 J2SE 所能够提供的标准类库。

? Personal Profile(个人简表):针对那些资源相对有限,但是对网络访问要求很高,基于AWT图形界面的设备,例如Web-TV、汽车导航系统等。

除这里提到的三个简表外还有其他类型的简表,但是上面的四个简表是Sun公司所推荐的,而且是开放的简表。例如以前的KJava就是和MIDP 类似的简表。

J2ME内定义的各种规范介绍

到目前为止,本文一共提到了几个规范:

? CLDC 规范:目前分为 v1.0 JSR 30,v1.1 JSR 139

? CDC 规范:目前分为 v1.0 JSR 36,v1.1 JSR 218

? MIDP 规范:分为 v1.0 JSR 37,v2.0 JSR 118

? IMP 规范:JSR 195

? FP 规范:JSR 46

? PP 规范:JSR 62

这些规范都是J2ME中的基础规范,例如说CLDC 设备必须要支持 CLDC规范,同时要选择支持一个简表规范,可能是MIDP 或者其他简表。对于CDC 设备来说也必须支持 CDC 规范,同时选择支持一个简表规范,可能是FP,也可能是PP。

对于其他规范,设备可以选择支持。接下来我引用一下Sun公司J2ME主页对各种规范的介绍:

适用于CLDC设备的规范:

Connected Limited Device Configuration (CLDC); JSR 30, JSR 139 CLDC 规范,前面已经介绍过

Mobile Information Device Profile (MIDP); JSR 37, JSR 118 MIDP 规范,前面已经介绍过

Information Module Profile (IMP), JSR 195 IMP 规范,前面已经介绍过

Java Technology for the Wireless Industry (JTWI), JSR 185 无线Java行业规范

Wireless Messaging API (WMA); JSR 120, JSR 205 无线信息规范,提供短信和彩信功能

Mobile Media API (MMAPI); JSR 135 移动媒体规范,提供音频视频播放

Location API for J2ME (JSR-179) 定位规范,提供定位功能

SIP API for J2ME (JSR-180) 提供对会话发起协议的支持

Security and Trust Services API for J2ME (JSR-177) 提供网络安全与信任的支持

Mobile 3D Graphics (JSR-184) 提供对3D绘图的支持

J2ME Web Services APIs (WSA), JSR 172 提供对Web Services的支持

Bluetooth API (JSR-82, Motorola, Java Partner Site) 提供对兰牙的支持

PDA Optional Packages for the J2ME Platform (JSR 75) 提供对PDA中文件、通信录等存取的支持

适用于CDC设备的规范:

Connected Device Configuration (CDC); JSR 36, JSR 218 CDC规范,前面已经介绍过

Foundation Profile (FP) (JSR-46) FP 规范,前面已经介绍过

Personal Profile (PP) (JSR-62) PP 规范,前面已经介绍过

Personal Basis Profile (PBP) (JSR-129) 类似于PP的规范,但在图形界面方面无需支持AWT

J2ME RMI Optional Package, (RMI OP); JSR 66 提供对远程调用的支持

JDBC Optional Package for CDC/Foundation Profile API (JSR-169) 提供对JDBC的支持

同时请大家注意一下,这里提到的适用于并不是表示只适用于,很多规范是可以同时适用于CDC 和CLDC 设备的。

J2ME的副作用:升级你的系统

这真是一个痛苦的事情!J2ME 中各种规范正处于一个不断扩充和不断完善的过程,旧设备无法支持新规范的事情会越来越多,而嵌入式设备的种类多很难在短时间内实现对各种规范的支持。

相关网页

Java Community Process:http://jcp.org/ ;

Sun公司 J2ME 主页:http://java.sun.com/j2me/

Sun公司 J2ME 下载页:http://java.sun.com/j2me/downloads/index.Html ;

支持J2ME的设备列表:http://developers.sun.com/techtopics/mobility/device/

对一些问题的看法

J2ME 很简单

完全错误,J2ME的范围和规模非常之大,适用范围也非常广。要知道嵌入式设备无论从种类还是结构来将都要远远超出PC机,小型机的范围。

认为J2ME简单的人,多半是把J2ME过于具体化。例如:认为手机程序的开发就是J2ME开发的全部。或者认为在PDA上开发一个Java程序就是J2ME开发的全部。

KJava程序开发就是手机程序开发

KJava 也是一个Profile,和前面提到的MIDP的功能和作用类似。以前KJava是Sun公司提供的一个示范性简表。但是由于事实原因现在很多智能手机都支持KJava简表,和MIDP相比 MIDP是一个更开放的规范。

J2ME只能用于手机程序开发

目前看来J2ME还没有能够全面的渗透到各种嵌入设备中,而且目前最大的用途就是一些手机游戏。但是J2ME的用途绝对不止这些,J2ME 应用的发展有赖于各种硬件厂商提供的支持。

J2ME已经可以作为嵌入设备上操作系统

Java程序是解释执行的,所以必须还要有操作系统的支持。Palm OS、WinCE、Symbian的 EPOC、嵌入Linux这些才是操作系统,而且在嵌入式智能设备上应用比较广泛。至于JavaPhone之类的纯Java产品还有待Sun公司的开发。1997年,Sun公司兼并了长期从事嵌入式实时操作系统开发的Chorus公司,希望为Java嵌入技术的发展提供了良好的操作系统环境。以后应该会出现只支持Java的硬件设备和操作系统。不过从前面提到的四种嵌入式操作系统来说,支持C/C++语言才是首位。

J2ME程序可以实现一次编写到处运行

基本上很难。因为J2ME中定义的规范很多,每个规范有自己的API 集,不同的厂商还有自己提供的针对自身设备的 API集,而要求所有的嵌入设备都支持完全相同的规范集合是不现实的。所以利用厂家提供的 API 集开发程序还会保持一段相当长的时间。

但是有些基本的规范是被强制要求的,例如CLDC 和MIDP 要求的API 集就要求所有的智能手机支持。不过另一个方面讲即使是相同的规范也会有不同的版本,不同的版本中对 API 集的要求是不同的。

在我看来 J2ME的最大好处是把Java 带入了嵌入式设备这个领域,至少开发人员可以使用相同的开发模式来为嵌入式设备编写程序。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有