J2ME(Java 2 micro Edition)是一種高度優(yōu)化的Java運(yùn)行環(huán)境,針對(duì)市面上的大量消費(fèi)類電子設(shè)備,例如Papers、cellularphones(蜂窩電話), screen-phones(可視電話?)、digital set-top boxes(數(shù)字機(jī)頂盒)、car navigation systems(汽車導(dǎo)航系統(tǒng))等等。 J2ME技術(shù)在1999年的JavaOne Developer Conference大會(huì)上推出。J2ME技術(shù)將Java語(yǔ)言的與平臺(tái)無(wú)關(guān)的特性移植到小型電子設(shè)備上,允許移動(dòng)無(wú)線設(shè)備之間共享應(yīng)用程序。
J2ME就是Java 2 micro Edition的縮寫,是sun的java 2 的三大成員之一(J2SE,J2EE,J2ME)。專門用于開發(fā)消費(fèi)性電子產(chǎn)品。例如手機(jī),PDA等。
一、J2ME平臺(tái)體系結(jié)構(gòu)
J2ME并不是一種產(chǎn)品,而是一種技術(shù),J2ME包括兩種類型的組件,即配置(configuration)和簡(jiǎn)表(profile)。
配置(configuration)是一系列低層次的API(應(yīng)用編程接口)和一種為該族設(shè)備優(yōu)化的虛擬機(jī)。今天在用的一般配置有兩種,連接的設(shè)備配置(CDC)和限制連接的設(shè)備配置(CLDC)。
CDC提供了一種虛擬機(jī),以及支持像靈敏發(fā)報(bào)機(jī)、尋呼機(jī)、個(gè)人數(shù)字助理(PDA)和電視機(jī)頂盒這樣的設(shè)備上的Java應(yīng)用的基類庫(kù)。這些設(shè)備的典型特征是具有一個(gè)32位的處理器和用來(lái)支持虛擬機(jī)和類庫(kù)的超過(guò)2MB存儲(chǔ)容量。CVM虛擬機(jī)正好滿足了它們對(duì)于Java 2虛擬機(jī)特征集的功能需求。這是在小型平臺(tái)上全特征的虛擬機(jī)。
CLDC提供一個(gè)適合于小型的、資源受限的、連接的設(shè)備上使用的標(biāo)準(zhǔn)Java平臺(tái)。這些設(shè)備的典型特征是具有一個(gè)16位或者32位的處理器和用來(lái)支持虛擬機(jī)和類庫(kù)的160KB到512KB的總內(nèi)存,它們通常以電池作為電源,并聯(lián)入某類網(wǎng)絡(luò)中,聯(lián)網(wǎng)一般使用帶寬時(shí)常小于9600bps的無(wú)線的、斷斷續(xù)續(xù)的連接方式。CLDC的核心是K虛擬機(jī)(KVM)。“K”標(biāo)記反映了它們的大小是以kilobytes(千字節(jié))衡量的這一事實(shí)。CLDC的特征也是包含一系列類庫(kù)。
CDC的硬件參數(shù):
?2M以上內(nèi)存。
?具有網(wǎng)絡(luò)連接能力,通常為無(wú)線網(wǎng)絡(luò)。
?需要實(shí)現(xiàn)java虛擬機(jī)規(guī)范的全部功能。
?32位或者64位的處理器。
CLDC的硬件參數(shù):
?512 KB 以下內(nèi)存
?有限能源供應(yīng)(通常使用電池)
?有限或非持續(xù)網(wǎng)絡(luò)連接
?簡(jiǎn)單的用戶界面
?16位或者32位的處理器
從上述的標(biāo)準(zhǔn)中我們不難看出CLDC主要針對(duì)那些資源非常受限的設(shè)備比如手機(jī)、PDA、雙工尋呼機(jī)等。而CDC主要面對(duì)那些家電產(chǎn)品,比如機(jī)頂盒、汽車導(dǎo)航系統(tǒng)等。簡(jiǎn)表是以配置為基礎(chǔ)的,例如Mobile Information Devices Profile(MIDP)就是CLDC上層的重要簡(jiǎn)表。與配置的縱向特性不同的是,簡(jiǎn)表是橫向的。下圖是J2ME體系結(jié)構(gòu)的框圖:
J2ME體系結(jié)構(gòu)框圖
簡(jiǎn)表(profile)是一種說(shuō)明,它詳細(xì)描述了架構(gòu)在配置之上并使用配置的一系列API。簡(jiǎn)表的一個(gè)例子是創(chuàng)建在CDC之上的基礎(chǔ)描述(Foundation Profile),它為以像住宅網(wǎng)關(guān)、靈敏電話和雙向?qū)ず魴C(jī)這樣的設(shè)備為目標(biāo)的應(yīng)用提供完整的J2ME運(yùn)行時(shí)環(huán)境。另一種簡(jiǎn)表是移動(dòng)信息設(shè)備描述(MIDP),它構(gòu)建在CLDC之上,為那些運(yùn)行在像移動(dòng)電話和登錄級(jí)PDA這樣的設(shè)備上的應(yīng)用提供完整的J2ME運(yùn)行時(shí)環(huán)境。MIDP致力于解決像用戶界面、持久存儲(chǔ)、聯(lián)網(wǎng)和應(yīng)用程序生命周期這樣的問(wèn)題。
二、J2ME 目標(biāo)設(shè)備
使用 CLDC 開發(fā)的 J2ME 應(yīng)用程序的目標(biāo)設(shè)備通常具有以下特征:
? 可供 Java 平臺(tái)使用的 160 到 512 千字節(jié)的總內(nèi)存
? 功率有限,常常是電池供電
? 網(wǎng)絡(luò)連通性,常常是無(wú)線的、不一致的連接并且?guī)捰邢?br> ? 用戶接口混亂,程度參差不齊;有時(shí)根本就沒有接口
一些 CLDC 支持的設(shè)備,包括無(wú)線電話、尋呼機(jī)、主流個(gè)人數(shù)字助手 (/pda/ PDA),以及小型零售支付終端。
依照 Sun Microsystems,CDC 的目標(biāo)設(shè)備通常具有以下特征:
? 使用 32 位處理器
? 2 兆字節(jié)或更多可供 Java 平臺(tái)使用的總內(nèi)存
? 設(shè)備要求的 Java 2 “藍(lán)皮書”虛擬機(jī)的全部功能
? 網(wǎng)絡(luò)連通性,常常是無(wú)線的、不一致的連接并且?guī)捰邢?br> ? 用戶接口混亂,程度參差不齊;有時(shí)根本就沒有接口
一些 CDC 支持的設(shè)備,包括常駐網(wǎng)關(guān)、智能電話和通訊器、PDA、管理器、家用電器、銷售網(wǎng)點(diǎn)終端以及汽車導(dǎo)航系統(tǒng)。
三、J2ME、J2SE與J2EE之間的比較
下面的圖表描述了支持 J2ME 應(yīng)用程序的設(shè)備,同時(shí)說(shuō)明了 J2ME 適合 Java 平臺(tái)之處:
四、J2ME開發(fā)工具
1)、J2MEWTK,這個(gè)工具在前文已經(jīng)提到過(guò),它是最基本的J2ME程序開發(fā)工具,免費(fèi),體積小,速度較快,完全遵守J2ME的各種規(guī)范。具有簡(jiǎn)單的IDE界面,易于上手,開發(fā)十分方便快捷,可以和 Forte 3.0捆綁。J2MEWTK適用于初學(xué)者和已經(jīng)達(dá)到很高水平的開發(fā)者。竊以為J2MEWTK+JDK+Editplus/UltraEdit是絕配。
2)、VisualAge Micro Edition 1.4。這是IBM的產(chǎn)品,號(hào)稱是J2ME開發(fā)領(lǐng)域的TOP 1,但是我用了半天,也沒有看出好在那里。馬上就刪除了。窗口太復(fù)雜,不明所以,開發(fā)起來(lái)很難適應(yīng),速度和J2MEWTK一樣,比較龐大,裝了這個(gè)東西,你的C盤就要小心了,多了很多亂七八糟的文件,還注冊(cè)了許多COM組件,典型的非綠色軟件。

3)、CodeWarrior for Java 6.0。這是Motolola的產(chǎn)品,功能十分強(qiáng)大,集成度很好,開發(fā),調(diào)試,發(fā)布J2ME程序都很方便(還可以做一般的Java Program)。它的IDE和Visual Studio十分相似,很容易上手。CodeWarrior比較適合中等水平的開發(fā)者的使用。不過(guò)CodeWarrior不是免費(fèi)軟件,你只能夠免費(fèi)使用30天。
4)、Borland Jbuilder 5.0的Nokia Bobile版。
五、J2ME開發(fā)步驟
1. 系統(tǒng)要求
v Pentium 100以上CPU
v 64MB 內(nèi)存
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。
請(qǐng)從 http://java.sun.com/products/jdk 下載JDK,并按照Sun的指導(dǎo)安裝到PC中。
3. 安裝Motorola SDK
安裝之前請(qǐng)先卸載以前版本的Motorola SDK:
1. 選擇"開始à設(shè)置à控制板"
2. 選擇"添加/刪除程序"
3. 查找到"Motorola SDK Components for the J2ME Platform"
六、一個(gè)樣本應(yīng)用程序:電話日歷
J2ME 的著名特色之一是它在受限環(huán)境中的日期處理功能。J2ME 提供的 DateField UI 元素是一個(gè)可編輯的組件,該組件用于表示日歷信息(即日期和時(shí)間)。在這一部分中,我們將使用 DateField 和 Date 函數(shù)來(lái)開發(fā)一個(gè) J2ME 應(yīng)用程序,這個(gè)應(yīng)用程序用于在移動(dòng)電話 UI 上顯示一個(gè)滾動(dòng)日歷。
一個(gè)電話日歷應(yīng)用程序
// 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.
publicclassPhoneCalendar extends MIDlet
implements CommandListener, ItemStateListener {
//The commands
private Command exitCommand;
//The display for this MIDlet
private Display display;
// Display items e.g Form and DateField
Form 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 具備了跟蹤屏幕上的條目變化和對(duì)用戶命令作出響應(yīng)的功能。由此應(yīng)用程序創(chuàng)建的用戶界面從為電話屏幕定義一個(gè)顯示并附加上一個(gè) Form 開始。該 Form 充當(dāng)容器使用,可以保持一些用戶界面項(xiàng)。commandAction() 函數(shù)在 J2ME 中執(zhí)行命令處理程序,并且定義某個(gè)命令應(yīng)執(zhí)行的動(dòng)作。
部署 J2ME
您可以從 Sun 下載一個(gè)仿真器,該仿真器允許您在臺(tái)式機(jī)系統(tǒng)上測(cè)試 J2ME 應(yīng)用程序。如果您寧愿避免所有的圖形開銷,則您也可以在命令行上部署 J2ME。
在仿真環(huán)境中進(jìn)行部署
在仿真環(huán)境中部署和運(yùn)行 J2ME 應(yīng)用程序,要涉及到仿真器的安裝和配置。J2ME Wireless Toolkit提供了一個(gè)仿真環(huán)境,該環(huán)境用于在資源受限的設(shè)備上對(duì) Java 應(yīng)用程序進(jìn)行的開發(fā)和部署。這里教您如何自己運(yùn)行它:
安裝SUN-JAVA- Wireless Toolkit(請(qǐng)參閱參考資料)。安裝程序中將會(huì)用必要的說(shuō)明指導(dǎo)您進(jìn)行安裝。為運(yùn)行這些示例,請(qǐng)選擇獨(dú)立(standalone)模式。如果您想將它集成到 IDE,請(qǐng)選擇集成(integrated)模式。
通過(guò) KToolbar 的用戶界面創(chuàng)建一個(gè)新工程。指定一個(gè)類名。
將第 2 步指定的類名放到 C:【J2ME Installation directory】apps【Project Name】src 目錄。
編譯這個(gè)工程。
從 J2ME Wireless Toolkit -> Default Device Selection 選擇 DefaultGrayPhone 作為缺省設(shè)備。
運(yùn)行這個(gè)工程。
該工具箱還提供有一個(gè)選項(xiàng),用于把工程打包成一個(gè) jar 文件和一個(gè) jad 文件。雙擊 jad 文件將會(huì)部署 jar 文件所指定的應(yīng)用程序。
在命令行上進(jìn)行部署
這里也有一些可用的命令行選項(xiàng)。
1. 創(chuàng)建類文件:
C:J2MEappsPhoneCalendar>
javac _ tmpclasses _ootclasspath
C:J2MElibmidpapi.zip -classpath tmpclasses;
classes src*.java
2. 創(chuàng)建清單文件 manifest.mf:
MIDlet-1: PhoneCalendar,
PhoneCalendar.png,
PhoneCalendar
MIDlet-Name: Phone Calendar
MIDlet-Vendor: Sun Microsystems
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
3. 創(chuàng)建 jar 文件:
C:J2MEappsPhoneCalendar>jar cfm .bin
PhoneCalendar.jar
manifest.mf -C classes . _ res .
4. 創(chuàng)建 jad 文件:
MIDlet-1: PhoneCalendar,
PhoneCalendar.png,
PhoneCalendar
MIDlet-Jar-Size: 4490
MIDlet-Jar-URL:
F:J2MEappsPhoneCalendarbin
PhoneCalendar.jar
MIDlet-Name: PhoneCalendar
MIDlet-Vendor: Sun Microsystems
MIDlet-Version: 1.0
5. 運(yùn)行 jad 文件:
C:J2MEbin> emulator -Xdescriptor:
C:J2MEappsPhoneCalendar
binPhoneCalendar.jad
愛華網(wǎng)本文地址 » http://www.klfzs.com/a/8103320103/57240.html
愛華網(wǎng)



