摘要:隨著JAVA技術(shù)的不斷更新,J2ME技術(shù)在手機(jī)游戲的應(yīng)用逐漸成為游戲市場(chǎng)的新亮點(diǎn)。文章首先介紹了J2ME技術(shù)的原理和架構(gòu),之后通過(guò)實(shí)例分析了J2ME在手機(jī)游戲中的應(yīng)用,最后分析了J2ME手機(jī)游戲的開(kāi)發(fā)意義。
關(guān)鍵詞:J2ME;MIDP;軟件應(yīng)用;軟件開(kāi)發(fā)
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 24-0188-02
隨著JAVA語(yǔ)言的不斷發(fā)展,已經(jīng)逐漸成長(zhǎng)為一種尖端的程序設(shè)計(jì)語(yǔ)言。這個(gè)最初用來(lái)編寫與硬件不相關(guān)的嵌入式系統(tǒng)的編程語(yǔ)言,現(xiàn)在更是做到了與廠商不相關(guān)、與硬件不相關(guān)的服務(wù)器端技術(shù),在軟件開(kāi)發(fā)應(yīng)用中展示出了強(qiáng)大的生命力和發(fā)展前景。J2ME技術(shù)正是基于JAVA技術(shù)規(guī)范的,高度優(yōu)化的JAVA運(yùn)行環(huán)境,在消費(fèi)電子領(lǐng)域占據(jù)著強(qiáng)有力的位置,尤其是手機(jī)游戲的開(kāi)發(fā)上,更是發(fā)揮的淋漓盡致。當(dāng)前J2ME技術(shù)最流行的應(yīng)用就是在制作手機(jī)游戲方面,JAVA手機(jī)的出現(xiàn)更為這種技術(shù)的發(fā)揮提供了寬闊的平臺(tái)。
1 J2ME技術(shù)及其架構(gòu)
Java2 Micro Edition (J2ME)是Java2技術(shù)微型版,與J2SE、J2EE同樣具有美國(guó)SUN微系統(tǒng)公司提出的JAVA技術(shù)規(guī)范,主要針對(duì)消費(fèi)電子市場(chǎng),為機(jī)頂盒、移動(dòng)電話和PDA之類嵌入式消費(fèi)電子設(shè)備提供的Java語(yǔ)言平臺(tái)。J2ME的運(yùn)行環(huán)境與目標(biāo)更加多樣化,而每一個(gè)產(chǎn)品的用途卻變得更加單一,資源限制也更為嚴(yán)格,其構(gòu)成主要是由概要描述、配置、JAVA虛擬機(jī)和操作系統(tǒng)等部分組成的標(biāo)準(zhǔn)架構(gòu)之上的。這種架構(gòu)下模塊化設(shè)計(jì)很好的適應(yīng)了小型計(jì)算設(shè)備的應(yīng)用限制,通過(guò)J2ME架構(gòu)甚至可以替代小型計(jì)算設(shè)備的操作系統(tǒng)。J2ME的架構(gòu)分為Configuration、Profile和Optional Packages,它們的組合取舍形成了具體的運(yùn)行環(huán)境。第一層Configuration的作用是與原計(jì)算機(jī)設(shè)備所帶有的系統(tǒng)進(jìn)行互換,它里面還存在著一個(gè)配置層,負(fù)責(zé)處理profile和JVM之間的交互;第二層的profile層,主要是設(shè)備的應(yīng)用程序編程用的接口集合,它對(duì)設(shè)備橫向分類,針對(duì)特定領(lǐng)域細(xì)分市場(chǎng),內(nèi)容主要包括特定用途的類庫(kù)和API;第三層的Optional Packages是獨(dú)立于前面兩者提供附加的、模塊化的和更為多樣化的功能,比如多媒體應(yīng)用、藍(lán)牙等。
2 手機(jī)游戲設(shè)計(jì)的需求分析
當(dāng)前已經(jīng)標(biāo)準(zhǔn)化的Profile層有Mobile Information Device Profile(MIDP),它由用戶網(wǎng)絡(luò)連接、永久存儲(chǔ)和用戶界面的java API組成,在游戲設(shè)計(jì)中專門負(fù)責(zé)為互聯(lián)受限設(shè)備配置設(shè)計(jì)的。首先,MIDP為移動(dòng)設(shè)備提供了游戲API,并具有了用戶界面、信息存儲(chǔ)和網(wǎng)絡(luò)功能,它里面的成員類有以下幾個(gè):Game Canvas、Layer、Layer Manager、Sprite、Tiled Layer。在“Pocket Boxing”這款一款格斗游戲中涉及額主要一些類構(gòu)成有Pocket Boxing、Boxer、Enemy、GameCanvas,其中Pocket Boxing類繼承了MIDlet類,用來(lái)進(jìn)行MIDlet的Live Cycle控制;Boxer存儲(chǔ)了玩家的拳擊手的信息,進(jìn)行拳擊手的描繪;Enemy存儲(chǔ)電腦控制的拳擊手的信息,進(jìn)行拳擊手的描繪,它繼承了Boxer類;GameCanvas繼承了Canvas類,進(jìn)行畫(huà)面的描繪與操作,各類都是用與類名稱相同的文件名來(lái)存儲(chǔ)的;Sprite類可以使許多幀連續(xù)的運(yùn)動(dòng),可以使一個(gè)定制的序列以任何方式被放置,另外還可以提供轉(zhuǎn)化于檢測(cè)方法。
3 基于J2ME的手機(jī)游戲開(kāi)發(fā)制作
J2ME現(xiàn)在最流行的就是制作手機(jī)游戲,況且現(xiàn)在無(wú)線游戲編程現(xiàn)在又是一個(gè)很熱門的話題,不但因?yàn)樗哂袠O強(qiáng)的趣味性,更重要的是它給我們帶來(lái)了無(wú)限的商機(jī)。隨著JAVA手機(jī)的誕生,手機(jī)游戲編程的靈活性與輕便性使得JAVA手機(jī)游戲成為游戲市場(chǎng)的又一亮點(diǎn)。
3.1 格斗類手機(jī)游戲?qū)嵗?/p>
手機(jī)游戲有很多種類,其中格斗類游戲憑借著它的趣味性和娛樂(lè)性深受人們的青睞。 “Pocket Boxing”就是一款格斗游戲,玩家所控制的拳擊手將出現(xiàn)在屏幕的左側(cè),電腦所控制的拳擊手則出現(xiàn)在屏幕的右側(cè)。拳擊手可以進(jìn)行上下兩種的攻擊方式,以及上下阻擋防守與后退防守的防衛(wèi),游戲中一共有五個(gè)回合,在全部的回合中取得勝利的話就是冠軍了,在中途如果被打敗,就算是游戲結(jié)束了。這款手機(jī)游戲是一個(gè)簡(jiǎn)單的MIDP應(yīng)用程序,在這里進(jìn)行開(kāi)發(fā)有它需要的開(kāi)發(fā)環(huán)境。MIDPlet的開(kāi)發(fā)環(huán)境需要有java2 SDK1.3版以上與MIDP的類庫(kù)、以及后述的運(yùn)行前驗(yàn)證工具三種。在J2MEWTK中除了包括MIDP的類庫(kù)、運(yùn)行前驗(yàn)證工具之外,還會(huì)把編譯與包裝(JAR文件化)、JAD文件的創(chuàng)建、模擬器的啟動(dòng)等在開(kāi)發(fā)MIDP需要用到的操作加以集成。當(dāng)完成了JDK1.4以及J2MEWTK的安裝以后,就可以開(kāi)始對(duì)游戲項(xiàng)目進(jìn)行創(chuàng)建了。
3.2 設(shè)計(jì)存在的難點(diǎn)
J2ME是獲得美國(guó)大部分移動(dòng)運(yùn)營(yíng)商支持的移動(dòng)應(yīng)用開(kāi)發(fā)平臺(tái),J2ME是一個(gè)解釋語(yǔ)言,運(yùn)行在有虛擬機(jī)的任何操作系統(tǒng)上,通常運(yùn)行速度很慢,而且在優(yōu)化代碼上有許多的困難。
例如,BREW 1.0支持掩蓋的位圖傳送(Masked-Blit),而J2ME MIDP 1.4不支持,而且,一些J2ME手機(jī)不支持聲音,所以你的代碼不應(yīng)該使用掩蓋的位圖傳送支持或者聲音支持。
3.3 解決方案
基于設(shè)計(jì)中的難點(diǎn),在手機(jī)開(kāi)發(fā)過(guò)程中就要有針對(duì)性的提出解決方案。在操作系統(tǒng)不兼容性的問(wèn)題上我們可以在別的開(kāi)發(fā)環(huán)境中使用面向?qū)ο蟮恼Z(yǔ)言,這樣就很能支持J2ME,因?yàn)樗且环N面向?qū)ο蟮恼Z(yǔ)言。在J2ME和其他開(kāi)發(fā)環(huán)境中,任何使用JAVA寫的代碼都可以使用C++編寫,并且可以更快更好。把所有的設(shè)備輸出代碼(聲音、顯示、輸入)從游戲程序邏輯中分離出來(lái)。結(jié)構(gòu)化游戲程序邏輯以便能夠在J2ME和其他環(huán)境之間移植。
4 J2ME手機(jī)游戲的發(fā)展展望
當(dāng)前已經(jīng)有上千萬(wàn)的Java手機(jī)到了消費(fèi)者手中,并極大地提高了移動(dòng)電話支持游戲的能力。J2ME是一種針對(duì)移動(dòng)電話和PDA這樣的小型設(shè)備的Java語(yǔ)言,它比SMS或WAP能更好地控制界面,允許使用圖形動(dòng)畫(huà),可以通過(guò)無(wú)線網(wǎng)絡(luò)連接到遠(yuǎn)程服務(wù)器。J2ME為在小型電子設(shè)備上創(chuàng)建性能卓越的網(wǎng)絡(luò)應(yīng)用提供了一套完整的解決方案。它也使設(shè)備制造商、服務(wù)提供商及應(yīng)用開(kāi)發(fā)人員為他們的用戶發(fā)布新的軟件應(yīng)用成為可能。J2ME的出現(xiàn)使這些廠商有了共同遵循的技術(shù)規(guī)范,而這樣做也完全符合Java“一處編譯,到處運(yùn)行”的基本方針,因?yàn)楝F(xiàn)在市場(chǎng)對(duì)軟件跨平臺(tái)的兼容性和安全性的要求變得日益強(qiáng)烈。而J2ME卻能很好地解決軟件跨平臺(tái)得兼容性與安全性的問(wèn)題。J2ME不是手機(jī)上配置的惟一的解釋語(yǔ)言,但是它是一個(gè)許多廠商新支持的行業(yè)標(biāo)準(zhǔn)。也正是Java將手機(jī)游戲的趣味性大大提高,并且向傳統(tǒng)的電子游戲靠攏,讓手機(jī)游戲的吸引力增強(qiáng),特別是手機(jī)隨身攜帶的特點(diǎn),也讓其成為用戶身邊觸手可及的掌中游戲,而不一定要擁有電腦這樣的平臺(tái)才能進(jìn)行游戲。
參考文獻(xiàn):
[1]林勝利,劉華軍.精通J2ME無(wú)線編程[M].中國(guó)鐵道出版社,2004,11.
[2]James Keogh著,潘穎,王磊譯.J2ME 開(kāi)發(fā)大全[M].清華大學(xué)出版社,2004,2.
計(jì)算機(jī)光盤軟件與應(yīng)用2012年24期