J2ME 编程/连接有限设备配置
许多人混淆了 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.)
- java.lang.*
- java.io.*
- java.util.*
因此,我们有定义用于 java 语言子集属性的类。如何使用 java 语言子集定义进行输入/输出。此外,还对来自完整 java 语言的 java.util.* 的子集进行了语言定义。
- java.lang.Long
- java.lang.Short
- java.lang.Integer
请注意,与 J2SE 数学相比,我们没有浮点数(Float 类)和双精度(Double 类)。
- java.lang.Math
- java.util.Random
- java.lang.System
- java.lang.Object
- java.lang.Runtime
- java.lang.Thread
- java.lang.Throwable
- java.lang.String
- java.lang.StringBuffer
- java.lang.Boolean
- java.lang.Byte
- java.lang.Character
- java.util.Enumeration
- java.util.Hashtable(请参阅结论中的注释,来自 jdk1.1.8,而不是 jse1.3)
- java.util.Stack
- java.util.Vector(请参阅结论中的注释,来自 jdk1.1.8,而不是 jse1.3)
- java.util.Calendar
- java.util.Date
- java.util.TimeZone
- 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
- java.util.EmptyStackException
- java.util.NoSuchElementException
- java.io.EOFException
- java.io.IOException
- java.io.InterruptedException
- java.io.UnsupportedEncodingException
- java.io.UTFDataFormatException
- java.lang.Error
- java.lang.VirtualMachineError
- java.lang.OutOfMemoryError
其他类与 MIDP 在 javadoc 中混合,因此我将在 javax.microedition.io.* 包下列出 CLDC 类的完整列表。类是包末尾点后的右边的首字母大写的名称。
- 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 语言属性。
- java.lang.Float
- java.lang.Double
- java.lang.Math
在 J2ME 平台中,J2SE 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
- java.util.Vector
- java.util.Hashtable
这些类基于 JDK1.1.8 来节省空间。
- Unicode 到 reader/writer 字节的转换和从 reader/writer 字节的转换受到限制
- 不支持来自 J2SE 的 java.util.Properties,但可以获取以关键字 microedition 开头的 System.getProperty(String key) 的有限内容
J2ME、Java 和所有基于 Java 的标记是 Sun Microsystems, Inc. 在美国和其他国家/地区的商标或注册商标。