本文向大家簡單介紹一下談談J2ME的功能,重點討論一下持久資料和記錄管理系統的使用,MIDP提供在行動裝置上儲存持久資料的支援,並且MID簡表還特意規定相容的行動裝置必須提供至少8KB的非動態記憶體用於資料存放區的用途,實事上,大多數的MIDPJava裝置提供的空間比這要求多得多。
持久資料和記錄管理系統RecordManagementSystem,簡稱RMS)
我在前面的文章中曾經提到過,MIDP提供在行動裝置上儲存持久資料的支援,並且MID簡表還特意規定相容的行動裝置必須提供至少8KB的非動態記憶體用於資料存放區的用途,實事上,大多數的MIDPJava裝置提供的空間比這要求多得多。這就允許一個midlet充份利用應用程式的持久資料。對於有Java2標準版開發經驗的開發人員,應該注意這種資料存放區能力與標準的Java有區別。J2ME記錄管理系統(RMS)允許資料流被儲存並且在一個記錄基礎上訪問資料。由應用程式開發人員把每個記錄解析到欄位水平。RMS程式包內部的介面支援一個應用程式定義的基礎上的比較與檢索功能。
一、javax.microedition.rms程式包
通過javax.microedition.rms包訪問J2ME記錄管理系統,這個包包括一個類,RecordStore,和好幾個有用的介面(在下列表格中描述):
這些介面對於實現自訂搜尋和檢索功能很有用,這些介面中使用的最多的就是RecordEnumeration。這個介面從RecordStore.enumerateRecords()方法調用中返回並且被用於遍曆一組從屬記錄儲存空間中返回的記錄。它包含nextRecord()、previousRecord()、numRecords()和hasNextElement()等方法。
二、使用RecordStore類訪問記錄儲存
RecordStore類是開發人員開發基層RMS的介面,記錄儲存是在一個平台--midlet環境依賴的方式--上建立的。資訊的實際的位置和儲存細節應用程式開發人員其實並不知道,記錄儲存可以使用一種簡單的命名規則來訪問:名稱最多可以到32個Unicode字元長度,區分大小寫和必須在一個midlet套件內唯一。在一個midlet套件內的所有midlet都有讀/寫一個記錄儲存的許可權,只要它們知道正確的名稱。一旦這個midlet套件被從該裝置上刪除,所有與這個套件關聯的記錄儲存也將被刪除。
比如說,為了開啟一個名為TestRecordSet的記錄儲存,你可以調用RecordStore.openRecordStore()方法。這個方法使用兩個參數:一個字串,表示記錄儲存的名稱;一個布爾值,如果為真的話,就會在紀錄儲存不存在時建立一個。我們使下列方法調用建立新的TestRecordSet記錄儲存:
- RecordStorers=null;
-
- rs=RecordStore.openRecordStore("TestRecordSet",true);
-
記錄儲存被建立好後,我們可以通過調用RecordStore.addRecord()方法來向這個記錄儲存添加資料。addRecord()接受三個參數:
一旦成功完成addRecord()調用,這個方法就返回一個整數指定這個記錄在記錄儲存中的標識號。RecordStore還規定另外一個資料編輯方法,包括setRecord()和deleteRecord(),但是我在例子中不會使用它們。
在MID簡表中包含網路功能是有前瞻性的,使J2ME成為未來無線電應用開發的領導。這個功能將是人工智慧技術的基礎,使J2ME成為未來技術的基石(例如,你可以使用HTTPConnection介面和XML分析器構造一個WML瀏覽器)。事實上,象kXML這樣的XML分析器將允許J2ME用戶端支援SOAP、XML-RPC和其他基於XML的分布技術。