J2ME

從 华夏文化百科
於 2014年8月16日 (六) 06:48 由 Test 32(對話 | 貢獻) 所做的修訂 (1個修訂:HDwiki 数据迁移 - 批次 863)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳到: 導覽、 搜尋

J2ME就是Java 2 micro Edition的縮寫,是sun的java 2 的三大成員之一(J2SE,J2EE,J2ME)。專門用於開發消費性電子產品。例如手機,PDA等。


一、J2ME平台體系結構


J2ME並不是一種產品,而是一種技術,J2ME包括兩種類型的組件,即配置(configuration)和簡表(profile)。


配置(configuration)是一系列低层次的API(应用编程接口)和一种为该族设备优化的虚拟机。今天在用的一般配置有两种,连接的设备配置(CDC)和限制连接的设备配置(CLDC)。


CDC提供了一種虛擬機,以及支持像靈敏發報機、尋呼機、個人數字助理(PDA)和電視機頂盒這樣的設備上的Java應用的基類庫。這些設備的典型特徵是具有一個32位的處理器和用來支持虛擬機和類庫的超過2MB存儲容量。CVM虛擬機正好滿足了它們對於Java 2虛擬機特徵集的功能需求。這是在小型平台上全特徵的虛擬機。


CLDC提供一个适合于小型的、资源受限的、连接的设备上使用的标准Java平台。这些设备的典型特征是具有一个16位或者32位的处理器和用来支持虚拟机和类库的160KB到512KB的总内存,它们通常以电池作为电源,并联入某类网络中,联网一般使用带宽时常小于9600bps的无线的、断断续续的连接方式。CLDC的核心是K虚拟机(KVM)。“K”标记反映了它们的大小是以kilobytes(千字节)衡量的这一事实。CLDC的特征也是包含一系列类库。


  CDC的硬件參數:


  ·2M以上內存。  ·具有網絡連接能力,通常為無線網絡。   ·需要實現java虛擬機規範的全部功能。  ·32位或者64位的處理器。


  CLDC的硬件參數:


  ·512 KB 以下內存   ·有限能源供應(通常使用電池)  ·有限或非持續網絡連接   ·簡單的用戶界面  ·16位或者32位的處理器


  從上述的標準中我們不難看出CLDC主要針對那些資源非常受限的設備比如手機、PDA、雙工尋呼機等。而CDC主要面對那些家電產品,比如機頂盒、汽車導航系統等。簡表是以配置為基礎的,例如Mobile Information Devices Profile(MIDP)就是CLDC上層的重要簡表。與配置的縱向特性不同的是,簡表是橫向的。下圖是J2ME體系結構的框圖:


J2ME體系結構框圖


简表(profile)是一种说明,它详细描述了架构在配置之上并使用配置的一系列API。简表的一个例子是创建在CDC之上的基础描述(Foundation Profile),它为以像住宅网关、灵敏电话和双向寻呼机这样的设备为目标的应用提供完整的J2ME运行时环境。另一种简表是移动信息设备描述(MIDP),它构建在CLDC之上,为那些运行在像移动电话和登录级PDA这样的设备上的应用提供完整的J2ME运行时环境。MIDP致力于解决像用户界面、持久存储、联网和应用程序生命周期这样的问题。


二、J2ME 目標設備


使用 CLDC 开发的 J2ME 应用程序的目标设备通常具有以下特征: 


· 可供 Java 平台使用的 160 到 512 千字節的總內存 · 功率有限,常常是電池供電 · 網絡連通性,常常是無線的、不一致的連接並且帶寬有限 · 用戶接口混亂,程度參差不齊;有時根本就沒有接口


一些 CLDC 支持的设备,包括无线电话、寻呼机、主流个人数字助手 (/pda/ PDA),以及小型零售支付终端。 


依照 Sun Microsystems,CDC 的目標設備通常具有以下特徵:


· 使用 32 位处理器  · 2 兆字节或更多可供 Java 平台使用的总内存  · 设备要求的 Java 2 “蓝皮书”虚拟机的全部功能  · 网络连通性,常常是无线的、不一致的连接并且带宽有限  · 用户接口混乱,程度参差不齐;有时根本就没有接口 


一些 CDC 支持的設備,包括常駐網關、智能電話和通訊器、PDA、管理器、家用電器、銷售網點終端以及汽車導航系統。


三、J2ME、J2SE與J2EE之間的比較

下面的圖表描述了支持 J2ME 應用程式的設備,同時說明了 J2ME 適合 Java 平台之處:四、J2ME開發工具


1)、J2MEWTK,這個工具在前文已經提到過,它是最基本的J2ME程序開發工具,免費,體積小,速度較快,完全遵守J2ME的各種規範。具有簡單的IDE界面,易於上手,開發十分方便快捷,可以和 Forte 3.0捆綁。J2MEWTK適用於初學者和已經達到很高水平的開發者。竊以為J2MEWTK+JDK+Editplus/UltraEdit是絕配。


2)、VisualAge Micro Edition 1.4。這是IBM的產品,號稱是J2ME開發領域的TOP 1,但是我用了半天,也沒有看出好在那裏。馬上就刪除了。窗口太複雜,不明所以,開發起來很難適應,速度和J2MEWTK一樣,比較龐大,裝了這個東西,你的C盤就要小心了,多了很多亂七八糟的文件,還註冊了許多COM組件,典型的非綠色軟件。


3)、CodeWarrior for Java 6.0。這是Motolola的產品,功能十分強大,集成度很好,開發,調試,發佈J2ME程序都很方便(還可以做一般的Java Program)。它的IDE和Visual Studio十分相似,很容易上手。CodeWarrior比較適合中等水平的開發者的使用。不過CodeWarrior不是免費軟件,你只能夠免費使用30天。


4)、Borland Jbuilder 5.0的Nokia Bobile版。


五、J2ME開發步驟


1. 系統要求 v Pentium 100以上CPU v 64MB 內存 v Windows NT Workstation 4.0(Service Pack 3)或Windows 98 v 6 MB自由硬盤空間 v Java 2 SDK, Standard Version, 版本1.2.2或者更高 2. 安裝Java 2 SDK 在使用Motorola SDK之前必須安裝JDK,Standard Edition。 請從 http://java.sun.com/products/jdk 下載JDK,並按照Sun的指導安裝到PC中。 3. 安裝Motorola SDK 安裝之前請先卸載以前版本的Motorola SDK: 1. 選擇"開始à設置à控制板" 2. 選擇"添加/刪除程序" 3. 查找到"Motorola SDK Components for the J2ME Platform"


'六、'一個樣本應用程式:電話日曆


J2ME 的著名特色之一是它在受限環境中的日期處理功能。J2ME 提供的 DateField UI 元素是一個可編輯的組件,該組件用於表示日曆信息(即日期和時間)。在這一部分中,我們將使用 DateField 和 Date 函數來開發一個 J2ME 應用程式,這個應用程式用於在流動電話 UI 上顯示一個滾動日曆。


一個電話日曆應用程式


// Import of API classesimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.util.*;


//A first MIDlet with simple text and a few commands.public class PhoneCalendar extends MIDletimplements CommandListener, ItemStateListener {


//The commandsprivate Command exitCommand;


//The display for this MIDletprivate Display display;


// Display items e.g Form and DateFieldForm displayForm;DateField date;


public PhoneCalendar() { display = Display.getDisplay(this);exitCommand = new Command("Exit", Command.SCREEN, 1); date = new DateField("Select to date", DateField.DATE);


}


// Start the MIDlet by creating the Form and // associating the exit command and listener.public void startApp() {displayForm = new Form("Quick Calendar"); displayForm.append(date); displayForm.addCommand(exitCommand);displayForm.setCommandListener(this);displayForm.setItemStateListener(this);display.setCurrent(displayForm);}


public void itemStateChanged(Item item){// Get the values from changed item}


// Pause is a no-op when there is no background// activities or record stores to be closed.public void pauseApp() { }


// Destroy must cleanup everything not handled // by the garbage collector.public void destroyApp (boolean unconditional) { }


// Respond to commands. Here we are only implementing// the exit command. In the exit command, cleanup and// notify that the MIDlet has been destroyed.public void commandAction (Command c, Displayable s) {if (c == exitCommand) {destroyApp(false); notifyDestroyed();}}


}


如上定義的 PhoneCalendar MIDlet 繼承了 ItemListener 和 CommandListener。它使 MIDlet 具備了跟蹤螢幕上的條目變化和對用戶命令作出響應的功能。由此應用程式創建的用戶界面從為電話螢幕定義一個顯示並附加上一個 Form 開始。該 Form 充當容器使用,可以保持一些用戶界面項。commandAction() 函數在 J2ME 中執行命令處理程序,並且定義某個命令應執行的動作。


部署 J2ME您可以從 Sun 下載一個仿真器,該仿真器允許您在台式機系統上測試 J2ME 應用程式。如果您寧願避免所有的圖形開銷,則您也可以在命令行上部署 J2ME。


在仿真環境中進行部署在仿真環境中部署和運行 J2ME 應用程式,要涉及到仿真器的安裝和配置。J2ME Wireless Toolkit 提供了一個仿真環境,該環境用於在資源受限的設備上對 Java 應用程式進行的開發和部署。這裏教您如何自己運行它:


安裝SUN-JAVA- Wireless Toolkit(請參閱參考資料)。安裝程序中將會用必要的說明指導您進行安裝。為運行這些示例,請選擇獨立(standalone)模式。如果您想將它集成到 IDE,請選擇集成(integrated)模式。


通過 KToolbar 的用戶界面創建一個新工程。指定一個類名。


將第 2 步指定的類名放到 C:【J2ME Installation directory】apps【Project Name】src 目錄。


編譯這個工程。


從 J2ME Wireless Toolkit - Default Device Selection 選擇 DefaultGrayPhone 作為缺省設備。


運行這個工程。該工具箱還提供有一個選項,用於把工程打包成一個 jar 文件和一個 jad 文件。雙擊 jad 文件將會部署 jar 文件所指定的應用程式。


在命令行上進行部署這裏也有一些可用的命令行選項。


1. 創建類文件:


C:J2MEappsPhoneCalendarjavac _ tmpclasses _ootclasspath C:J2MElibmidpapi.zip -classpath tmpclasses;classes src*.java


2. 創建清單文件 manifest.mf:


MIDlet-1: PhoneCalendar,PhoneCalendar.png,PhoneCalendarMIDlet-Name: Phone CalendarMIDlet-Vendor: Sun MicrosystemsMIDlet-Version: 1.0MicroEdition-Configuration: CLDC-1.0MicroEdition-Profile: MIDP-1.0


3. 創建 jar 文件:


C:J2MEappsPhoneCalendarjar cfm .binPhoneCalendar.jar manifest.mf -C classes . _ res .


4. 創建 jad 文件:


MIDlet-1: PhoneCalendar, PhoneCalendar.png, PhoneCalendarMIDlet-Jar-Size: 4490MIDlet-Jar-URL:F:J2MEappsPhoneCalendarbinPhoneCalendar.jarMIDlet-Name: PhoneCalendarMIDlet-Vendor: Sun MicrosystemsMIDlet-Version: 1.0


5. 運行 jad 文件:


C:J2MEbin emulator -Xdescriptor:C:J2MEappsPhoneCalendarbinPhoneCalendar.jad