Java虚拟机:执行JAVA字节码的虚拟计算机。针对不通的嵌入式设备以及为了满足不同的需要,提供了CVM和KVM两类虚拟机。这两类虚拟机在功能上都是JVM的子集,适用范围不同(KVM的功能比CVM的功能稍弱)。
配置:对某一范畴的设备的规范性描述
解释:面对大量的小型设备,它们在外观和功能上均各不相同。J2ME 将这些设备进行分类,将一些共性提取出来,从而形成适合于某个范畴中的设备的可用规范,称之为“配置”。我们也可以将配置理解为对硬件的描述,所以通过定义配置的方法就能够清楚地描述硬件功能。
配置为开发人员提供了一个最基础的,能在所有平台上通用的核心API类库和运行环境(描述了设备必须提供的最少资源的集合)。简单来说,配置就是一套核心类库加上一个运行在某一特定类型设备上的虚拟机。Java虚拟机是运行环境的核心,它运行在设备的操作系统之上。
简表:对某一系列或某一类设备的规范性描述,他是建立在配置之上的.
解释:简表定义了特定系列或某一类设备上可用的应用程序编程接口(API)的最小集。简表在特定的配置上实现,是作为配置的补充。简表是一个完整的运行环境。应用程序是针对特定的简表编写的,因此可以移植到支持该简表的任何设备上。另外,一个设备可以同时支持多个简表,用户和开发人员看到最多的就是这一层。
J2ME提供两种配置:CLDC(Connected Limited Device Configuration)和CDC(Connected Device Configuration)
CDC使用CVM,用于连接设备(指:32位以及75MHz以上的处理器、具有2MB以上内存的嵌入式设备)
CLDC使用KVM,用于有限连接设备(指:16/32位的RISC/CISC微处理器,并且可用内存为160~512KB的嵌入式设备)
连接设备:可视电话,机顶盒,网络电话,车载计算设备,特点:有线连接,稳定而持续的电源供应,设备资源比较受限
有限连接设备:手机,个人数字助理(PDA),小型零售支付终端(POS机),特点,运算能力,网络通信能力较弱
CLDC1.0不支持的功能:
1、不支持浮点数类型(CLDC 1.1支持浮点型)
2、不支持JNI(Java Native Interface)
3、不支持用户定义的泪装载器(Class Loaders)
4、不支持反射
5、不支持线程组
6、不支持类实例的终结
7、有限的错误处理
CLDC 1.1新特性:
1、增加浮点数的支持
2、重新设计Calendar Date 和TimeZone类被重新设计
3、对错误处理有了更加明确的定义,并增加了NoClassDefFoundError类
4、允许为线程命名
5、对一些类库进行了小的修改,一些方法被添加或修正。
6、由于增加了浮点运算功能,目标设备的最小内存提高到160~192KB
CLDC的安全机制:
1)底层安全机制(low-level security)
即虚拟机安全机制。要求运行再虚拟机上的应用程序必须遵循Java语言的标准语法,并且能够检查出恶意代码以各种方式对设备进行的破坏。CLDC使用与审核机制来保证虚拟机的底层安全。
2)应用级别的安全几只(application-level security)
即:运行应用程序调用哪些API,不允许调用哪些API(或者允许访问哪些资源,不允许访问哪些资源)。CLDC通过使用封闭的沙箱模型来实现此目的。应用程序被限制在一个叫沙箱的环境中运行,只有系统已定义的配置,简表,可选包以及设备支持的一些泪可以被应用程序访问。
3)端对端的安全机制(end-to-end security)
指再数据传输时的安全,采用数字签名、加密等措施。
此安全级别超出了CLDC的描述范围,它由简表实现
当程序的源文件被编译后,必须先经过预审核器的预审,然后才可以生成可被下载到目标设备上运行的类文件。CLDC把一部分的审核任务放在预审核器中完成,可以使得与CLDC兼容的虚拟机审核Java类文件时速度更快,并且只需很少的虚拟机代码和动态内存。需要说明的是:经过预审核器预审的Java类文件不需要修改就可以直接运行在J2SE和J2EE的环境上,这使得移植和相互调用变得简单。
绝大多数的CLDC类库都是从J2SE和J2EE中集成过来的,它们是J2SE和J2EE的子集。但由于目标设备的特殊性,CLDC类库在安全,输入/输出、用户界面、网络和存储管理等方面没有全部使用J2SE的实现,其中部分类库经过了改写,例如用户界面、网络连接等。
-----------------------------------------------------------
移动信息设备简表(Mobile Information Device Profile, MIDP)针对的是移动信息设备或者体积较小的能力有限的手持设备(MID),这些设备的共性是具有用户接口,即屏幕和输入机制。MIDP目标设备的典型例子就是手机和PDA
MIDP的硬件和软件要求(略)
注意:MIDP规范中没有定义应用程序管理(Application Management Software ,AMS)是如何工作和编写,仅仅是定义了其应该实现的功能,因此不同设备上的应用程序管理器都是由厂商自行研发,其差别可能会比较大。
MIDP中包含7个软件包,分别是:
核心包java.lang
工具包java.util
I/O包java.io
网络I/O包javax.microedition.io
用户界面包javax.microedition.ludui
MIDP主类包javax.microedition.midlet
持久化存储包java.microedition.rms
其中后三个包是MIDP特定的软件包