首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.2.8  包含的类库

Java的一个让笔者喜欢的地方是,随着它的平台带来了丰富的类库。然而我们也可以想到,J2EE和J2SE的类库太大,是不能在小型设备上使用的。

CLDC的设计者面临着许多关于创建一组库放到配置中去的问题。当然,首先是所有事情背后最主要的驱动力——资源问题。它们拥有的空间比一个澳洲背包客完成世界旅游后的行李还小。有些东西必须被去掉,那自然意味着它们不能迎合所有的人。

这同样也提出了一个兼容性问题,目标是尽量保持与J2SE类似和兼容。为了方便实现这个,设计者把CLDC的库分成两个逻辑的种类——J2SE的一个子集和CLDC特定的类。

这些类由库的前缀来区分。J2ME中基于J2SE子集的等价物的子集使用与J2SE中同样的名字,所以例如java.lang.String在J2ME中跟J2SE中有同样的名字,它只是一个缩小的版本。CLDC特定的类是在java扩展层的下面的javax.*。这只是为J2SE中通常不出现的类保留的。

注意:CLDC特定的类听起来很棒,但是实际上它们并不存在。CLDC定义了一组与连接相关的类,但是实现它们并不是CLDC的任务,那是简表(例如MIDP)的工作。

下面看看经过CLDC挑选后究竟给我们留下了哪些功能。首先,根据下面的规则,这些类可能与J2SE中发现的在实现上是不同的,这一点很重要,要引起注意。

v        包的名称与J2SE对应的包是相同的。

v        不存在任何公有或者保护的方法和字段。

v        类和方法的语义不能变化。

简而言之,这意味着J2ME中实现的J2SE的类只能删掉方法,不能添加,而且对现有的方法不能更改(尽管这些方法的实际实现可能会完全不同——只要它们起相同的作用,不需要我们不在意那些不同)。

下面是一个完整的可用的类的列表;然而这个列表很具有欺骗性,因为很多J2ME的类都去掉了一些方法。

注意:在浏览CLDC类库的时候可能发现明显缺少一些重要的成分,如任何UI(用户界面)或者对设备相关功能的访问,这是特定种类设备的描述的任务。在MIDP节中,可以看到这些类。

1.系统类

v        java.lang.Object

v        java.lang.Class

v        java.lang.Runtime

v        java.lang.System

v        java.lang.Thread

v        java.lang.Runable

v        java.lang.String

v        java.lang.StringBuffer

v        java.lang.Throwable

2.输入/输出类

v        java.io.InputStream

v        java.io.OutputStream

v        java.io.ByteArrayInputStream

v        java.io.ByteArrayOutputStream

v        java.io.DataInput(interface)

v        java.io.DataOutput(interface)

v        java.io.DataInputStream

v        java.io.DataOutputStream

v        java.io.Reader

v        java.io.Writer

v        java.io.InputStreamReader

v        java.io.OutputStreamWriter

v        java.io.PrintStream

3.集合类

v        java.util.Vector

v        java.util.Stack

v        java.util.Hashtable

v        java.util.Enumeration(interface)

4.类型库

v        java.lang.Boolean

v        java.lang.Byte

v        java.lang.Short

v        java.lang.Integer

v        java.lang.Long

v        java.lang.Character

5.日历和时间类

v        java.util.Calendar

v        java.util.Date

v        java.util.TimeZone

6.工具类

v        java.util.Random

v        java.lang.Math

7.异常函数

v        java.lang.Exception

v        java.lang.ClassNotFoundException

v        java.lang.IllegalAccessException

v        java.lang.InstantiationException

v        java.lang.InterruptedException

v        java.lang.RuntimeException

v        java.lang.ArithmeticException

v        java.lang.ArrayStoreException

v        java.lang.ClassCastException

v        java.lang.IllegalArgumentException

v        java.lang.IllegalThreadStateException

v        java.lang.NumberFormatException

v        java.lang.IllegalMonitorStateException

v        java.lang.IndexOutOfBoundsException

v        java.lang.ArrayIndexOutOfBoundsException

v        java.lang.StringIndexOutOfBoundsException

v        java.lang.NegativeArraySizeException

v        java.lang.NullPointerException

v        java.lang.SecurityException

v        java.lang.EmptyStackException

v        java.lang.NoSuchElementException

v        java.io.EOFException

v        java.io.IOException

v        java.io.InterruptedIOException

v        java.io.UnsupportedEncodingException

v        java.io.UTFDataFormatException

8.错误类

v        java.lang.Error

v        java.lang.VirtualMachineError

v        java.lang.OutOfMemoryError

读者可能已经注意到在这个列表中没有连接类,例如那些在java.net.*层的类。因为在现有通信库中的相互关联性,不可能做到不破坏本节开始时提到的移植规则而包含该连接类。所以CLDC为新的通信函数层包含了一个框架,叫做通用连接框架。CLDC那个削减的框架设计确实只是一个设计,它并没有具体实现它的类。正因为这样,要到简表里去         寻找。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论