跳转到内容

J2ME 编程/连接有限设备配置

来自 Wikibooks,开放世界中的开放书籍

许多人混淆了 CLDC 在 J2ME 应用程序开发中的作用。它本身不是一个应用程序开发框架,因为你需要比配置更多的东西来生成 J2ME 应用程序("J2ME". The J2ME Platform.). 你可以将 CLDC 视为帮助定义 J2ME 语言项目的子集的规范,例如输入/输出、数学等等,Java 虚拟机将其用作一组规则来实际运行移动信息设备配置文件(MIDP)下的 MIDlet。

包结构

[编辑 | 编辑源代码]

通过观察 CLDC 中每个包定义的 J2ME java 子集,我们可以更清楚地了解这一点。尽管从 javadoc 中看不出来,但 Sun Microsystems 并没有将 MIDP 和 CLDC javadoc 分开,这些是 CLDC 的实际包("cldcapi" (PDF). CLDC API Documentation, V1.0.)

CLDC1.0 在 java.* 下的包列表

[编辑 | 编辑源代码]
  • java.lang.*
  • java.io.*
  • java.util.*

因此,我们有定义用于 java 语言子集属性的类。如何使用 java 语言子集定义进行输入/输出。此外,还对来自完整 java 语言的 java.util.* 的子集进行了语言定义。

来自 J2SE1.3 的 java.lang.* 包中的数学类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.lang.Long
  • java.lang.Short
  • java.lang.Integer

请注意,与 J2SE 数学相比,我们没有浮点数(Float 类)和双精度(Double 类)。

来自 J2SE1.3 的实用程序类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.lang.Math
  • java.util.Random

来自 J2SE1.3 的 java.lang.* 包中的系统类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.lang.System
  • java.lang.Object
  • java.lang.Runtime
  • java.lang.Thread
  • java.lang.Throwable
  • java.lang.String
  • java.lang.StringBuffer

来自 J2SE1.3 的 java.lang.* 包中的数据类型类(CLDC1.0),不包括数学

[编辑 | 编辑源代码]
  • java.lang.Boolean
  • java.lang.Byte
  • java.lang.Character

来自 J2SE1.3 的 java.util.* 包中的集合类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.util.Enumeration
  • java.util.Hashtable(请参阅结论中的注释,来自 jdk1.1.8,而不是 jse1.3)
  • java.util.Stack
  • java.util.Vector(请参阅结论中的注释,来自 jdk1.1.8,而不是 jse1.3)

来自 J2SE1.3 的 java.util.* 包中的日历和时间类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.util.Calendar
  • java.util.Date
  • java.util.TimeZone

来自 J2SE1.3 的 java.io.* 包中的 IO 类(CLDC1.1),不包括 GCF

[编辑 | 编辑源代码]
  • java.io.Writer
  • java.io.Reader
  • java.io.ByteArrayInputStream
  • java.io.ByteArrayOutputStream
  • java.io.DataInputStream
  • java.io.DataOutputStream
  • java.io.InputStream
  • java.io.OutputStream
  • java.io.InputStreamWriter
  • java.io.OuputStreamWriter
  • java.io.PrintStream

来自 J2SE1.3 的 java.util.* 包中的异常类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.util.EmptyStackException
  • java.util.NoSuchElementException

来自 J2SE1.3 的 java.io.* 包中的异常类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.io.EOFException
  • java.io.IOException
  • java.io.InterruptedException
  • java.io.UnsupportedEncodingException
  • java.io.UTFDataFormatException

java.lang.* 包中来自 J2SE1.3 的错误类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.lang.Error
  • java.lang.VirtualMachineError
  • java.lang.OutOfMemoryError


其他类与 MIDP 在 javadoc 中混合,因此我将在 javax.microedition.io.* 包下列出 CLDC 类的完整列表。类是包末尾点后的右边的首字母大写的名称。


javax.microedition.io.* 下的 CLDC1.0 类列表

[编辑 | 编辑源代码]
  • javax.microedition.io.InputConnection
  • javax.microedition.io.Connection
  • javax.microedition.io.StreamConnection
  • javax.microedition.io.OutputConnection
  • javax.microedition.io.Datagram
  • javax.microedition.io.DatagramConnection
  • javax.microedition.io.StreamConnectionNotifier
  • javax.microedition.io.ContentConnection
  • javax.microedition.io.ConnectionNotFoundException
  • javax.microedition.io.Connector


将这些类区分开来的共同点是它们是定义输入/输出连接功能的接口。java.io.* 中的类定义了 javax.microedition.io.* 中的输入/输出类用作其规则集的 java 语言属性。

CLDC1.1 附加类

[编辑 | 编辑源代码]
  • java.lang.Float
  • java.lang.Double
  • java.lang.Math

GCF,通用连接框架

[编辑 | 编辑源代码]

在 J2ME 平台中,J2SE IO 被一个更小的通用连接框架 (GCF) 取代。

来自 CLDC1.0 的 javax.microedition.io GCF 类

[编辑 | 编辑源代码]
  • javax.microedition.io.InputConnection
  • javax.microedition.io.Connection
  • javax.microedition.io.StreamConnection
  • javax.microedition.io.OutputConnection
  • javax.microedition.io.DatagramConnection
  • javax.microedition.io.StreamConnectionNotifier
  • javax.microedition.io.ContentConnection
  • javax.microedition.io.HttpConnection

总之,在 CLDC 的 java 语言子集中,我们没有浮点数学,没有双精度,没有类加载器,没有套接字,也没有序列化。使用了一个名为 GCF 的更小的 IO 框架。

虽然 javadoc 在右上角显示 MID Profile,但它们所属的实际配置或概要文件在列出类方法摘要之前被记录为

自 CLDC1.0自 MIDP1.0

注意,并非所有类都基于 JDK1.3

基于 JDK1.1.8 而不是 JDK1.3 的类(CLDC1.0)

[编辑 | 编辑源代码]
  • java.util.Vector
  • java.util.Hashtable


这些类基于 JDK1.1.8 来节省空间。

CLDC1.0 限制

[编辑 | 编辑源代码]
  • Unicode 到 reader/writer 字节的转换和从 reader/writer 字节的转换受到限制
  • 不支持来自 J2SE 的 java.util.Properties,但可以获取以关键字 microedition 开头的 System.getProperty(String key) 的有限内容
  • "cldcapi" (PDF). CLDC API 文档,V1.0.
  • "KVM 白皮书" (PDF). 用于移动设备的 J2ME 构建模块关于 KVM 和连接受限设备配置 (CLDC) 的白皮书.

商标声明

[编辑 | 编辑源代码]

J2ME、Java 和所有基于 Java 的标记是 Sun Microsystems, Inc. 在美国和其他国家/地区的商标或注册商标。

华夏公益教科书