迄今为止,我们知道 cldc 比较适合 j2me,并且也已经建立了我们的开发环境。在这一章中,我们将更深入地探索 cldc api。cldc api 实际上只是 j2se 的一个子集,它包括 java.lang、java.io 和 java.util,另加一个新软件包 — javax.microedition。我们将逐个来研究这些软件包,并突出显示每一个包中的重要的类。
尽管每一个类都在 j2se 中,但是没有必要让每一个类的 cldc 实现都能实现 j2se 支持的所有方法。您可以检查 cldc api 文档以确认哪些方法是受支持的。文档的副本位于安装 j2me cldc 时创建的 j2me_cldc/docs 目录下。它提供 pdf 和 javadoc 两种格式。
java.lang
cldc java.lang 软件包是 j2se java.lang 软件包的一个子集。与 j2se 相比,它最引人注目的可能便是冗长的浮点操作了,特别是浮点 (float) 和双精度 (double) 类。如果使用浮点的话,这些冗余将涉及到所有其它的类。
相对于 j2se v1.3 api,cldc api 中删去了几个其它的类。其中包括 classloader、compiler、inheritablethreadlocal、number、package、process、runtimepermission、securitymanager、strictmath、threadgroup、threadlocal 和 void。
我们描述了可从下面几页表中的 cldc java.lang 软件包中获取的主要的类。java 开发人员对所有这些类的使用都应该是非常熟悉了。
除这些核心类之外,您还将看到 cldc 支持的 runnable 接口,正象 exception 、error 和其它有关的类一样。
java.lang 核心运行时类
java.lang 软件包的核心运行时类有:
class — 显示正在运行的 java 应用程序中的类和接口。
object — 与在 j2se 中相同,object 是所有 java 对象的基本类。
runtime — 为 java 应用程序提供一种与运行时环境(java 应用程序在其中运行)进行交互的方法。
system — 提供一些静态的帮助方法,就像为 j2se 提供方法一样。
thread — 定义 java 程序的一个执行线程。
throwable — java 语言中所有错误和异常的超级类。
java.lang 核心数据类型类
java.lang 软件包中的核心数据类型类有:
boolean — 包装 boolean 原始数据类型。
byte —- 包装 byte 原始数据类型。
character — 包装 char 原始数据类型。
integer — 包装 int 原始数据类型。
long — 包装 long 原始数据类型。
short — 包装 short 原始数据类型。
java.lang 帮助类
java.lang 软件包的帮助类有:
math — 包含执行基本数学运算的方法。请注意,所有执行浮点值运算的方法都被省略了,仅保留了关于 integers 和 longs 的方法:abs()、min() 和 max()。
string — 在 java 中代表对象 string,就像在 j2se 中一样。
stringbuffer — 代表一个可以修改的串,就像在 j2se 中一样。
java.io 输入类
cldc api 包含许多 j2se 中共同使用的输入类。特别地,cldc java.io 软件包中包括下面一些类:
bytearrayinputstream — 包含一个内部缓冲器,它代表可能从输入流中读取的字节。
datainput — 一个接口,从二进制输入流提供字节以供读取并把它们转换成原始 java 数据类型。datainputstream 提供该接口的实现。
datainputstream — 允许应用程序以独立于平台的方式从基层输入流中读取原始 java 数据类型。
inputstream — 一个抽象类,它是所有代表字节输入流的类的超级类。
inputstreamreader — 读取字节并把它们按照指定的字符编码方法转换成字符。
reader — 一种读取字符流的抽象类。
注意:其中一些类可能不包含 j2se 姊妹版支持的所有方法,就像在 java.lang 软件包中一样。尤其是省略了浮点和双精度方法。
java.io 输出类
cldc api 包含了许多 j2se 中的共同使用的输出类。特别是,cldc java.io 软件包中包括下面一些输出类:
bytearrayoutputstream — 实现一个输出流,在此输出流中数据被写入字节数组。
dataoutput — 一种接口,提供原始 java 数据类型以供写入二进制输出流。dataoutputstream 提供该接口的实现。
dataoutputstream — 一个输出流,允许应用程序以一种便捷的方式编写原始 java 数据类型。
outputstream — 一个抽象类,它是所有代表字节输出流的类的超级类。
outputstreamreader — 给出字符,并按指定的字符编码方法将其转换为字节。
printstream — 添加一种便捷的方法来打印数据值的文本表现形式。
writer — 编写字符流的一个抽象类。
其中一些类可能不包含 j2se 支持的所有方法,比如浮点和双精度方法。
java.util 收集类
cldc java.util 软件包中包含 j2se java.util 软件包中最常用的类。这些类中包括四个收集类(实际是三个收集类和一个接口),以及日期/时间和实用程序类。
cldc 支持的 java.util 收集类有:
enumeration — 一个接口,通过项目集允许对例程进行重复调用。
hashtable — 实现 hashtable,将键映射到值。
stack — 代表了一个后进先出 (lifo) 的对象集合或堆栈。
vector — 代表可以调整大小的对象“数组”或者矢量。
java.util — 其它的类
cldc 支持的 java.util 类中其余部分包括日期和时间类,以及 random 实用程序类。下表中简要列出了这些类。
calendar — 一个抽象类,使用一套整型字段如 year、month、 day 等来获取和设置日期。
date — 代表特定的时间和日期,精确到毫秒级。
random — 一个实用程序类,用来生成 int 或 long 的随机值流。
timezone — 代表时区的偏移量,也用于校正时间。
javax.microedition.io
迄今为止,我们在 cldc api 中看到的所有的类都是 j2se api 的子类。cldc 还包含一个附加的软件包 — javax.microedition.io。
在这个包里唯一被定义的类就是 connector 类,也称为工厂类,包含创建 connection 对象或输入、输出流的方法。
当动态识别一个类的名字时,connection 对象就被创建了。类名称的识别基于平台名称和被请求连接的协议。描述目标对象的参数串应该满足 rfc 2396 规范所要求的格式。请使用下列格式:
{scheme}:[{target}][{params}]
{scheme} 是一个协议的名称,如 http 或 ftp。{target} 通常是一个网络地址,但是面向非网络的协议则可能把它当作一个相当灵活的字段来处理。还有一些参数,如 {params} 被指定为一系列形如 ";x=y" 的分配形式(例如,;myparam=value)。
