J2me的基本概念 |
| 作者:yuanfeige 来源:javaresearch.org 发布时间:2005-9-6 9:24:17 |
|
本文主要介绍J2me的基本概念。因为注意到国内的java站点介绍J2me的还比较少,所以就写了本文。如果有什么不妥的地方,欢迎您email我,讨论商榷。 如您要转贴,请保留原出处,并勿做删改。谢谢。 1.名词 这里我列出一些常见的关键词,方便与下文参照.具体解释见后文. J2ME(Java2 Platform, Micro Edition) CLDC(Connected, Limited Device Configuration) MIDP(Mobile Information Device Profile) KVM(The K Virtual Machine) 2.背景 随着无线应用与嵌入式系统的愈来愈受到人们的重视,SUN也推出了J2ME来迎合这一趋势.(实际上道也不能算是新推出,熟悉Java历史的人都知道,java原先本是为了开发消费性电子产品而研制的.谁知,无心插柳柳成荫,因在网络应用上的出色表现而流行,以致现在的J2EE、EJB等等,发展地越来越庞大。这次实质是杀了个回马枪。至于表现如何,还得拭目以待)sun认为,未来的信息设备将比我们今天的更为customizable 和 personal。这一点我们已经可以从手机和pda的流行程度看出。所以为了开发面向这些设备的applications。sun推出了J2ME(Java2 Platform, Micro Edition)。 3.j2me的基本结构 j2me把设备分为两类,一种是联接设备( connected device),一种是有限联接设备(Connected, Limited Device)。前一种对应于那些有电源的,电力充裕,较大的设备。例如:电视机,冰箱等,后一种对应于主要使用电池,小型的设备,例如:手机,pda等。这里我只涉及第二种,有限联接设备(Connected, Limited Device)。 3.j2me的基本结构 sun把J2me分为两个部分:configuration 和 profile。 configuration包括虚拟机(virtual machine),核心的类库与API。configuration层定义一个java虚拟机的特性与java类库的最小子集。也就是说,configuration层提供了开发人员一个最基础,最核心的Java平台。就像我前文提到的,j2me把设备分为两类,一种是联接 设备(connected device),一种是有限联接设备(Connected, Limited Device)。对应这两种设备就有了两种J2ME configuration。分别为CDC(Connected Device Con-figuration )和CLDC(Connected, Limited Device Configuration)。这里请注意,CDC使用经典的javaVM,而CLDC使用的是KVM(The K Virtual Machine)。 注:kvm是sun为使用16/32位RISC/CISC微处理器或控制器,并其可用内存为160kb~512kb 的的设备而开发的。 Profile层也包含一组API,主要针对于特定的某一族系的设备而定义。profile层在特定的configuration层上实现,而我们程序员则负责在特定的profile上编写应用程序。对于手机,pda等Connected, Limited Device。它们的profile层称为MIDP(Mobile InformationDevice Profile)。于是MIDP与CLDC合在一起就构成了一个完整的J2ME架构。 顺便说一句,对于MIDP上的应用程序sun也有独特的叫法,它们被称为MIDlet。你是不是觉得有点眼熟。想想java中的applet。 ┌───────┐┄┄┄┄┄┄┄ │MIDlet │ 应用程序 ├───────┤┈┈┈┈┈┈┈ │ MIDP │ proflie层 ├───────┤┄┄┄┄┄┄┄ │J2ME核心API │ configuration层 ├───────┤ CLDC │ KVM │ ├───────┤┈┄┄┄┄┄┄ │特定的硬件 │ └───────┘ 图1 J2ME的CLDC&MIDP架构 4。深入理解CLDC 本节的部分内容译自J2ME White Paper,比较枯燥,但请记住,毕竟,正确的观念重于一切。 CLDC的目的 ?为小型的,且资源有限,Connected Limited的设备定义一个标准的Java平台。 ?允许动态的向这些设备发布内容与应用程序。 ?方便第三方软件厂商与开发者向这些设备移植内容与应用程序。 CLDC的范围 ?Java语言与虚拟机的特性 ?核心Java类库(如java.lang.*, java.util.*) ?输入/输出 ?对网络的支持 ?对安全性的支持 ?对国际化的支持 CLDC不包括的范围(即由MIDP解决的) ?对应用程序life-cycle的管理(就是指一个应用程序是如何安装,运行,删除的) ?UI界面(User Interface) ?Event处理 ?高级应用程序模式(这里指用户与应用程序的交互)。 CLDC的安全性 低端的基于虚拟机的安全性由下载时对class文件的审核(verification)步骤来保证。(如果你写过并编译过MIDlet程序,就会知道这一步是必须的。这里有一个概念就行了,我会在以后讲述如何创建MIDlet程序时,详细介绍具体的步骤)。 基于应用程序的安全性通过使每个应用程序分别运行在相对独立的封闭环境中来保证并且处于被保护的系统package中的类不能被应用程序重载(overridded)。 对于Java语言支持的特殊的方面 CLDC总的来说是与Java语言完全兼容的,但需注意以下几点: 不支持浮点数据类型(即没有float和double)(这实际上主要是由于CLDC所面向的设备,其硬件因其内存限制或是基于安全性的考虑不支持浮点运算) 不支持类实例(class instance)的终结(finalization),即不存Object.finalize ()方法。(注:finalization指的是java中提供的有别与garbage collection的另外的一种对象清理方法。具体可参看侯捷老师译的Bruce Eckel的《Thinking in Java 第二版》,可以在www.jjhou.com中下载) 有限的错误处理,即大部分Java.lang.Error的子类都未被支持。与此相反,CLDC包括了相当完备的异常(exception)类。 对于Java虚拟机(Java Virtual Machine)支持的特殊的方面 实质上CLDC在其严格的内存限制下达到了对Java虚拟机相当程度的兼容性。不过还是有下列不同点。 ?不支持浮点数据类型(没有float和double) ?不支持JNI (the Java Native Interface ) ?不支持用户自定义的Java级的类载入器(class loaders ) ?没有反射(reflection)特性(注:reflection指java通过java.lang.reflect提供的,可以对类的能力进行分析的功能。常用来对类的结构进行检查,在JavaBeans上有广泛运用可参见Gary Cornell的Core Java2 volumeI,II,机工有出中译本) ?不支持线程组(thread groups)或守护线程(daemon threads) ?不支持类实例(class instance)的终结(finalization) ?没有弱参考(weak references)(注:weak reference提供了一种解决指向已经被garbage collector清除的对象的方法。在Java2中被介绍。具体请参考java.lang.ref API文档,和sun网站上关于Reference Objects和Garbage Collection的文章。) ?有限的 |
| [] [返回上一页] [打 印] |
|
文章评论 |
