程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> J2ME平台構件及開發應用程序示例

J2ME平台構件及開發應用程序示例

編輯:JAVA編程入門知識
  Java 2 平台袖珍版(Java 2 Platform, Micro Edition(J2ME))為開發者提供了偉大的工具,它把 Java 平台的以網絡為中心和平台不可知論的特性移植到有限存儲器和有限處理器的設備。Soma Ghosh 解釋了 J2ME 領域的基礎知識,向您展示了該平台的構件並演示了一個樣本應用程序。
  
  在我們今天的生活中,個性化的智能信息用品已經是必需品。這些用品包括移動電話、雙向尋呼機、智能卡、個人電腦記事本(personal organizer)和掌上電腦(palmtop)。它們的趨勢是成為目的特定的、資源有限的網絡連接設備,而不是我們迄今已知的通用台式機。為專門滿足這一巨大的消費空間,Java 2 平台袖珍版(J2ME)提供了極多的創新 Java 技術。
  
  Java VM 的變遷:從台式機到微型設備
  作為 J2ME 目標的微型設備具有 16 位或 32 位處理器和總量不少於大約 128 KB 的存儲器。這些設備都符合連接限制設備配置(Connected Limited Device Configuration(CLDC)),同時也保留了 Java 的傳統特性,即任何時間、任何地點的代碼可移植性、部署靈活性、安全的網絡傳送以及代碼穩定性。J2ME CLDC 的先決條件是一個緊縮的 JVM,稱為 K 虛擬機(K Virtual Machine(KVM))。KVM 是為小存儲器、資源受限的網絡連接設備設計的。
  
  另一個 J2ME 配置是連接設備配置(Connected Device Configuration(CDC))。它的目標是高檔的消費類電子產品和嵌入設備,例如智能通信器、高級“智能”尋呼機、智能個人數字助理(PDA)以及交互式數字電視機頂盒。典型地,這些設備運行一個 32 位的微處理器/控制器,而且有總量大於 2 MB 的用於虛擬機和庫的存儲的存儲器。CDC 包含有 C 虛擬機(C Virtual Machine(CVM))。在本篇文章中,我們將把注重力放在 CLDC 和 KVM 體系結構上。
  
  為適應占用資源很小的(small-footprint)設備的特性,KVM 已經按以下方式修改:
  1.VM 的大小和類庫已減小為 50 到 80 KB 目標代碼的標准
  2.存儲器占用已經減小為幾十千字節的標准
  3.在具有 16 位和 32 位處理器的設備上,性能有效
  4.體系結構是高可移植的,特定於機器和/或平台的代碼的總量很少
  5.多線程和垃圾回收是獨立於系統的
  6.可以對虛擬機的組件進行配置,以適合於特定設備,從而增強了靈活性
  
  J2ME 體系結構和配置
  J2ME體系結構是基於設備的系列和類別的。一個類別定義了一個特定種類的設備:移動電話、簡單尋呼機和電腦記事本都是單獨的類別。對存儲器和處理能力有相近需求的若干類別的設備構成設備的一個系列。移動電話、簡單尋呼機和簡單個人電腦記事本一起就是占用資源很小的設備的一個系列。圖 1 定義了在 J2ME 上下文環境中設備的系列和類別之間的關系。
  
 

  
圖 1. 設備的系列(family)和類別(category)

  
  
  為了支持資源受限設備系列所要求的那種靈活性和可定制部署,人們將 J2ME 體系結構設計成模塊化的和可伸縮的。J2ME 技術在一個完整的應用程序運行時模型中定義了這種模塊性和可伸縮性,在該模型中的四個軟件層都構建在設備的主機操作系統上。圖 2 顯示了 J2ME 體系結構。
  
 

  
圖 2. J2ME 體系結構

  
  1.Java 虛擬機層(Java Virtual Machine Layer):這一層是 Java 虛擬機的一個實現,它是為特定設備的主機操作系統定制的,而且支持一個特定的 J2ME 配置(configuration)。
  2.配置層(Configuration Layer):配置層定義了 Java 虛擬機功能的和特定類別設備上可用的 Java 類庫的最小集。從某種程度上說,一個配置定義了 Java 平台功能部件和庫的共同性,開發者可以假設這些功能部件和庫在屬於某一特定類別的所有設備上都是可用的。用戶不太會見到這一層,但它對框架(profile)實現者非常重要。
  3.框架層(Profile Layer):框架層定義了特定系列設備上可用的應用程序編程接口(API)的最小集。框架在一個特定的配置上面實現。應用程序是針對特定的框架編寫的,因此可以移植到支持該框架的任何設備上。一個設備可以支持多個框架。用戶和應用程序供給商看到最多的就是這一層。
  4.MIDP 層:移動信息設備框架(Mobile Information Device Profile(MIDP))是一個 Java API 集合,它處理諸如用戶界面、持久存儲和聯網這樣的問題。
  
  Java 虛擬機層(Java Virtual Machine Layer)、配置層(Configuration Layer)和框架層(Profile Layer)一起構成了連接限制設備配置(Connected Limited Device Configuration(CLDC))。MID 框架(MID Profile)和 CLDC 提供了一個標准的運行時環境,這個環境答應把新的應用程序和服務動態地部署在終端用戶設備上。
  
  
用 MIDP API 進行 J2ME 編程:構件

  CLDC 和 MIDP 組合起來為創建移動電話和簡單雙向尋呼機上的應用程序提供了完整的環境。MID 框架的核心是一個 MIDlet 應用程序。這個應用程序繼續了 MIDlet 類,以答應應用程序治理軟件對 MIDlet 進行控制、從應用程序描述符檢索屬性以及對狀態變化進行通知和請求。所有 MIDlet 都繼續 MIDlet 類 — 運行時環境(應用程序治理器)和 MIDlet 應用程序代碼之間的接口。MIDlet 類提供了用於調用、暫停、重新啟動和終止 MIDlet 應用程序的 API。 應用程序治理軟件可以在運行時環境內治理多個 MIDlet 的活動。此外,MIDlet 可以自己發起一些狀態變化,並把這些變化通知給應用程序治理軟件。 MIDP API 類的完整集合可以分為兩個類別:
  一、用於用戶界面的 MIDP API:設計這些 API 是為了能以一系列屏幕顯示為基礎與用戶進行交互操作,每一屏幕顯示把適量的數據顯示給用戶。命令以每屏幕為基礎提供給用戶。這些 API 答應應用程序決定下一屏顯示什麼、執行什麼計算和使用網絡服務的何種請求。
  二、用於處理數據庫的 MIDP API:這些 API 負責組織和操作設備數據庫,這個數據庫由在 MIDlet 的多個調用之間跨越時保持持久的信息組成。
  
  底層的 CLDC API 用於處理字符串、對象和整數。還提供了 Java 2 API 的一個子集,用於處理 I/O 和網絡通信。圖 3 顯示了 J2ME 的構件。
  
 

  
圖 3. J2ME 的構件

  
  標准(Standard)版和袖珍(Micro)版 Java API 之間的關系如圖 4 所示。
  
 

  
圖 4. J2ME 和 J2SE API 之間的關系

  
  J2ME 中的事件處理
  J2ME 中的事件處理是以一系列屏幕顯示為基礎的,這與 Java 平台的台式機版本的事件處理有很大不同。每一屏顯示特定的少量數據。命令以每屏幕為基礎提供給用戶。Command 對象封裝了與動作的語義相關的名稱和信息。這個對象主要用於為用戶提供動作選擇。所產生的命令行為定義在與屏幕顯示相關聯的 CommandListener 中。每一個 Command 包含三塊信息:一個 label(標號)、一個 type(類型)和一個 priority(優先級)。label 用於命令的可視表示;type 和 priority 由系統使用,系統用它們來決定 Command 如何映射到具體用戶界面。圖 5 顯示了 J2ME 中的事件處理機制。
  

  
圖 5. 在 J2ME 中處理用戶事件

  
  設計用戶界面
  MIDP API 盡管維護的是一個受限的框架,但它還是提供了 UI 元素的完整集合。以下是最重要的 UI 元素中的一些:
  1.Alert 用於在屏幕上向用戶顯示關於異常情況或錯誤的信息。
  2.Choice 用於實現從既定數量的選項中進行選擇。
  3.ChoiceGroup 提供一組相關選項。
  4.Form 作為其它 UI 元素的容器。
  5.List 提供一個選項列表。
  6.StringItem 充當只顯(display-only)字符串之用。
  7.TextBox 是答應用戶輸入和編輯文本的屏幕顯示。
  8.TextField 答應用戶輸入和編輯文本。多個 TextField 可放到一個 Form 中。
  9.DateField 是一個可編輯的組件,用於表示日期和時間信息。DateField 可以放到 Form 中。
  10.Ticker 用於文本的可滾動顯示。
  
  治理設備數據庫
  MIDP 提供了一組用於組織和操作設備數據庫的類和接口:RecordStore、RecordComparator 和 RecordFilter。RecordStore 由大量的記錄組成,這些記錄在 MIDlet 的多個調用之間跨越時保持持久。對 RecordStore 中的記錄進行比較,或者從 RecordStore 中抽取若干組記錄,都是 RecordComparator 和 RecordFilter 接口提供的功能。
  
  開發 J2ME 應用程序
  前面的部分已經對 J2ME 作了一個概覽。在這一部分中,我們將通過開發一個現實的電話界面應用程序來熟悉這個平台的實踐細節。一個樣本應用程序:電話日歷。J2ME 的聞名特色之一是它在受限環境中的日期處理功能。J2ME 提供的 DateField UI 元素是一個可編輯的組件,該組件用於表示日歷信息(即日期和時間)。在這一部分中,我們將使用 DateField 和 Date 函數來開發一個 J2ME 應用程序,這個應用程序用於在移動電話 UI 上顯示一個滾動日歷。
  
  // Import of API classes
  import javax.microedition.midlet.*;
  import javax.microedition.lcdui.*;
  import java.util.*;
  
  //A first MIDlet with simple text and a few commands.
  public class Pho
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved