文章来源:J2ME开发网 (节选自《J2ME中文开发教程》)
1 CLDC包含的功能
在CLDC1.0版本中定义了以下功能:
1)Java核心语言与Java虚拟机的特性
2)核心Java类库
3)输入/输出
4)对网络的支持
5)对安全性的支持
6)对国际化的支持
1)对应用程序生命周期的管理
2)用户界面
3)事件处理
4)高级应用程序模式(这里指用户与应用程序的交互)
CLDC包含了一个基本的J2ME运行环境,其中包括虚拟机和核心的java类库。作为专门针对于小型设备的配置,CLDC对J2SE类库进行了大量的简化,其类库只保留了java 规范中定义的最核心的3个包,即java.iojava.lang和java.util,并重新定义了一个新的包javax.microedition。这里你可以通过前缀来区别:java.表示核心的java包,javax.表示标准java扩展包。
这里要注意的是在CLDC中定义的javax.microedition包为javax.microedition.io,用来支持通用连接框架(GCF,Generic connection framework)。CLDC中的包和所对应的功能如下所示:
CLDC包
|
对应的功能
|
java.io
|
标准的输入/输出功能,J2SE java.io包的子集
|
java.lang
|
核心语言包,J2SE的子集
|
java.util
|
实用类
|
javax.microedition.io
|
通用连接框架类及接口
|
javax.microedition中其他的包定义了CLDC中没有定义的功能,如对应用程序生命周期的管理、用户界面(UI)、事件处理模式、永久性存储和用户与应用程序的交互等。这些功能的定义是由Profile (即MIDP)来完成的。
4 CLDC核心类库与J2SE的主要区别
由于CLDC主要针对16位、32位主频在16MHz以上的处理器,设备内存只有512KB,甚至更少,而目前Windows平台下运行的JVM需要的最小内存为16M。因此CLDC所使用的虚拟机和核心类库与J2SE的并不相同。
1.不支持浮点数据类型(没有float和double)
因为很多使用CLDC的设备硬件都不支持浮点运算,而且处理浮点运算需要较大的内存。因此在CLDC1.0中,并没有要求虚拟机支持浮点数据类型。
9) dadd |
10) dmul |
11) fadd |
12) fmul |
13) i2d |
14) dalaod |
15) dneg |
16) faload |
17) fneg |
18) i2f |
19) dastore |
20) drem |
21) fastore |
22) frem |
23) l2d |
24) dcmpg |
25) dreturn |
26) fcmpg |
27) freturn |
28) l2f |
29) dcmpl |
30) dstore |
31) fcmpl |
32) fstore |
33) newarray(double) |
34) dconst_0 |
35) dstore_x |
36) fconst_0 |
37) fstore_x |
38) newarray(float) |
39) dconst_1 |
40) dsub |
41) fconst_1 |
42) fsub |
43) |
44) ddiv |
45) d2f |
46) fdiv |
47) f2f |
48) |
49) dload |
50) d2i |
51) fload |
52) f2i |
53) |
54) dload_x |
55) d2l |
56) fload_x |
57) f2l |
58) |
CLDC不支持的浮点数据类型
对于CLDC的应用,Sun使用了和J2SE相同的编译器,这使得使用浮点数据的类及对象在编译的时候可以正常通过。因此Sun引入了类审核机制来阻止未经定义的类调入虚拟机。
2.不支持JNI (the Java Native Interface )
CLDC不提供native code的支持,除了因为设备内存有限外,还出于安全性的考虑。因为CLDC中缺少完整的安全性模型,禁用了这些J2SE的特性可以使潜在的安全风险降到最低。
3.不支持以及用户自定义的Java级的类载入器(class loaders)
CLDC不允许用户自定义类载入器。按照CLDC规范的要求,类的载入是不能被覆盖、替换和修改的。和JNI类似,这些是出于安全方面的一些考虑。
4.不支持反射(reflection)
不支持java.lang.reflect包以及java.lang.Class中和reflection有关的函数。其目的主要是节省内存占用。
5.不支持线程组(thread groups)或守护线程(daemon threads)
CLDC提供了对线程的支持,也支持多线程,但是线程组和守护线程是不被允许的。每个线程都要生成独立的Thread对象来实现。如果应用程序想实现对一组线程的操作,则必须在应用程序的级别上自行实现多个Thread对象的控制,如使用Hashtable和Vector来存取多个Thread对象。
6.不支持类实例(class instance)的终结(finalization)
CLDC类库不包含java.lang.Object.finalize()方法,因此类对象的终结是不支持的。对于应用CLDC的设备来说,对象终结相对于它所起的作用来说实现起来过于复杂,并不被需要。
7.不支持弱引用(weak references)
8.有限的错误处理(error handling)
在J2SE中定义了大量的类用来描述各种错误和异常,而CLDC仅仅包含有限的几个J2SE的核心类库,因此大部分java.lang.Error的子类都未被支持,这包括异步异常。这是因为在嵌入式系统中,应用程序并不期望获得设备的出错处理机制;定义和运行出错处理需要较大的虚拟机的开销,而这些出错的代码信息对于连用户界面都没有的有限连接设备来说是没有用处的。
分享到:
相关推荐
6. **CLDC的功能范围** - CLDC包含了如java.io、java.lang和java.util等基本包,但不包含浮点类型、JNI、自定义类加载器、反射、线程组、守护线程、类实例终结和弱引用等功能。 - MIDP扩展了CLDC的功能,提供应用...
**CLDC的功能范围:** CLDC的功能主要包括对java.io、java.lang和部分java.util的支持,以及javax.microedition.io和其他包提供的特定于移动设备的功能。CLDC的API设计目的是提供有限但实用的编程接口,例如输入/...
- **CLDC**:定义了一组在资源受限设备上可用的最基本Java APIs,包括核心数据类型定义、数学运算、基本输入输出等功能。 - **MIDP**:建立在CLDC之上,扩展了CLDC的APIs,为移动设备提供应用程序生命周期管理、图形...
- **CDC (Connected Device Configuration)**:针对性能更强的设备,如智能手表等,不在本次讨论范围内。 ##### 3. Profile Profile是在Configuration的基础上进一步具体化的概念,旨在为特定类型的设备提供更丰富...
在J2ME(Java 2 Micro Edition)开发中,与手机系统的交互是非常常见的,而这一交互的核心在于理解和使用J2ME Property属性表。...通过这种方式,J2ME应用程序可以在全球范围内的众多设备上实现广泛兼容性。
它的核心组件包括CDC(Connected Device Configuration)和CLDC(Connected Limited Device Configuration),以及一系列的Profile,如MIDP(Mobile Information Device Profile),用于实现特定功能,如图形用户...
通过对 HTTP 协议的支持、Filter 的引入、会话跟踪机制以及对国际化和本地化的支持,Servlet 2.3 极大地扩展了 Web 应用程序的功能范围。理解这些核心特性和技术要求对于开发高效可靠的 Web 服务至关重要。
CLDC定义了运行环境的基础,而MIDP则提供了用户界面组件和网络访问功能,是开发游戏的核心框架。 2. MIDlet:在J2ME中,应用程序的基本单元称为MIDlet,它是一个Java类,继承自J2ME的MIDlet类。MicroTankMIDlet很...
CDC(Connected Device Configuration)则面向更强大功能的设备,不在本文讨论范围内。 CLDC是J2ME的基础,包含了J2SE的一个子集,但做了相应的简化和调整,例如没有finalize方法,不支持浮点运算,这是因为KVM是用...
通过"javame_components.gif"这个文件,我们可以形象地看到J2ME的组件结构以及与J2EE、J2SE的关系,这有助于我们理解不同Java平台的层次结构和适用范围。 总结来说,J2EE、J2SE和J2ME分别对应企业级、桌面级和...
J2ME的出现极大地扩展了Java技术的应用范围,使得开发者能够在多种不同类型的设备上构建应用程序。通过配置和简档的概念,J2ME能够有效地适应各种资源受限的设备,提供定制化的Java环境和API。随着技术的发展和市场...
- **CLDC 1.1**:深入探讨了CLDC 1.1的核心特性和技术要求。 - **MIDP 2.0**:详细描述了MIDP 2.0的增强功能及其应用场景。 - **MIDLET生命周期** - **应用程序启动**:规定了应用程序启动过程中的行为。 - **执行...
CLDC是J2ME的基础,为资源有限的设备提供了精简的Java运行环境,而MIDP则提供了用户界面和网络功能,用于构建实际的应用程序。 计算器应用通常包含以下关键部分: 1. 用户界面:计算器的前端设计,使用MIDP的Java ...
profiles则针对特定设备或应用领域扩展配置,如CLDC(Connected Limited Device Configuration)用于非互联网连接的设备,而CDC(Connected Device Configuration)适用于功能更强大的设备。可选包则提供了额外的...
7. **随机数生成**:在J2ME中,使用`Math.random()`生成0到1之间的随机数,乘以范围大小(不包括最大值)并加1,然后转换为整数,可以得到指定范围内的随机整数。 8. **CLDC与J2SE的区别**:CLDC不支持线程组、守护...
例如,MIDP(Mobile Information Device Profile)是CLDC上的一个特定配置,它提供了开发移动应用所需的基本框架和API,包括用户界面、网络通信和数据存储等功能。这些术语可能会让初学者感到困惑,但理解它们的含义...
它包括CLDC1.1和JSR139、MIDP(JSR118)以及WMA(JSR120)等标准,确保了在有限资源设备上的高性能Java应用开发。此外,Sun还预集成了一系列MSA-Subset JSR,满足了遵循MSA标准的完整栈需求。 **2. Jataayu WAP 2.0...
- **MIDP**:Mobile Information Device Profile 的缩写,是一种基于 CLDC 的配置文件,专为移动设备设计,支持图形用户界面、网络连接等功能。 - **JINI**:Java Intelligent Network Interface 的缩写,是一种...