跳轉到內容

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. 在美國和其他國家/地區的商標或註冊商標。

華夏公益教科書