久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

以文本方式查看主題

-  曙海教育集團論壇  (http://www.rfoamep.cn/bbs/index.asp)
--  Linux技術討論區(qū)  (http://www.rfoamep.cn/bbs/list.asp?boardid=7)
----  j2me手機開發(fā)MID格式詳解  (http://www.rfoamep.cn/bbs/dispbbs.asp?boardid=7&id=1329)

--  作者:wangxinxin
--  發(fā)布時間:2010-11-15 9:09:31
--  j2me手機開發(fā)MID格式詳解
在一個J2ME項目中干了半年的CM (Configuration Management)/BM (Build Management),學習到了很多普通開發(fā)人員較少機會接觸, 但是對項目本身又十分重要的知識,寫出來與大家分享。

前言
      手機應用軟件的開發(fā)越來越流行,其中又以J2ME開發(fā)為甚。放眼當前 各品牌手機,大多數(shù)都支持J2ME,而Java中的“一次編寫,到處運行” 的概念也極大的吸引了開發(fā)者。但是,手機開發(fā)平臺與PC比仍然有很大 的差距,J2ME的開放性也造成了各個手機J2ME程序的不兼容性,各大廠商都極力的推自己的特性開發(fā)包,而不注重與其他手機兼容。因此, 我們在開發(fā)J2ME程序的時候,不但要注意程序本身的開發(fā),更要注意為不同品牌、型號的手機進行特定構(gòu)建,特別是開發(fā)人員人數(shù)在10-20的 開發(fā)團隊中。

1. 關于JDK/WTK的選擇
      JDK屬于基礎設施,選擇的版本越新越好。通常,高版本的JDK可以設置 按照低版本的語法進行編譯,可以指定生成低版本的class文件格式。

      WTK也是同樣的道理,高版本的通常具有較好的兼容性,這里給一個提示, 如果你需要將你的程序再多種品牌的手機上運行,你可以同時安裝特定手機品牌放出的J2ME WTK,通過在這類特定的WTK上進行測試,可以較早于真機發(fā)現(xiàn)問題。在J2ME的開發(fā)過程中,JSR包的選擇十分重要,當使用某些 特定JSR時,一定要調(diào)研清楚,所需要支持的手機中是否都支持該JSR包。

2. 編譯腳本的編寫
      如同開發(fā)C/C++程序一樣編譯的時候需要寫Makefile,開發(fā)J2ME程序的時候也需要有類似的腳本來完成整個編譯和構(gòu)建的過程,這里面有一些 選擇,簡單的構(gòu)建過程,Windows平臺上可以考慮編寫bat腳本,基本能夠滿足需求。對于較為負責的構(gòu)建過程,推薦選擇Ant。Ant是一個 用于簡單或復雜Java工程的自動化構(gòu)建、部署工具,它對于那些具有分布式開發(fā)團隊或者相信通過頻繁的構(gòu)建來進行不間斷集成的公司尤 其有用。在J2ME開發(fā)上,同樣可用。同時Ant有豐富的插件,幫助完成 Ant本身無法完成的功能,對于特定的需求,構(gòu)建管理者可以自己編寫 插件,集成到Ant中。

      用Ant來構(gòu)建應用通常是編寫一個build.xml文件,將該文件傳給Ant, Ant根據(jù)build.xml文件中的指示進行編譯和構(gòu)建,在使用Eclipse+EclipseMe 開發(fā)J2ME應用時,可以從Eclipse導出build.xml,不過還是推薦大家自己編寫build.xml文件。編寫build.xml時,也建議進行良好的設計, 越是復雜的構(gòu)建過程,對build.xml要求也越高。                                                                                                                                                                                      

3. Antenna

      Antenna是Ant的擴展包,它是專用來構(gòu)建、編譯、打包、部署J2ME 應用的輔助工具。

Antenna中非常實用的工具就是WtkPreprocess,它給Java開發(fā)添加 了類似C/C++中的宏定義和代碼預處理的功能。Antenna支持的宏定義 包括:

#ifdef
#ifndef
#elifdef
#elifndef
#if
#elif
#else
#endif
#condition
#debug
#mdebug
#enddebug
#define
#undefine
#expand
可以從 http://antenna.sourceforge.net/wtkpreprocess.php 獲得 詳細的說明。

      使用Antenna的過程中,會有一些缺陷。例如,在開發(fā)過程中,我們 通過定義宏來代表某個功能,對于不同的手機,當我們需要支持該功能時,在編譯的過程中,打開這個宏即可,反之則關閉這個宏。如果該功能只與代碼有關系,情況就十分簡單,Antenna的WtkPreprocess 可以完成我們需要的功能。但是如果該功能同時與資源有關系,當 我們選擇不支持該功能時,我們不但想在編譯的過程中,通過預處理,去掉相關的代碼,也希望該功能相關的資源也不被放入JAR包中, 而WtkPreprocess除了處理源代碼,其他都無能為力。因此在構(gòu)建腳本的編寫過程中,需要特別注意這類問題。

4. Proguard
      ProGuard是一款免費的Java類文件壓縮器、優(yōu)化器和混淆器。它能發(fā)現(xiàn)并刪除無用類、字段(field)、方法和屬性值(attribute)。 它也能優(yōu)化字節(jié)碼并刪除無用的指令。最后,它使用簡單無意義的名字來重命名你的類名、字段名和方法名。經(jīng)過以上操作的jar文件 會變得更小,并很難進行逆向工程。

在J2ME開發(fā)中,通常都會使用到該工具,并且該工具是開源的, 很容易獲取。

5. Preverify
      Preverify是WTK帶的一個驗證class文件的工具,通過了Preverify的 class文件,在手機上運行前僅需要做一些二次驗證的工作。

6. Size Control
      編寫J2ME程序的時候,JAR包的大小是個大問題,手機上的存儲空間 和程序運行空間都十分珍貴,因此我們需要盡最大的能力減小 JAR包 的大小。

6.1 kjar/kzip
      在制作JAR包時,有很多方法。JDK本身提供了jar命令,可以制作JAR包, JAR包其實可以理解為標準的ZIP包。

      此處,我們推薦使用一個稱為kjar的工具,可以從 http://supremej2me.bambalam.se/guides/optimization-tools/kjar/ 下載到,他是通過改寫壓縮算法,使制作的JAR包能比普通JAR包減小10% 左右的大小。同時,由于kjar只能運行于Windows平臺,并且通常被病毒 防火墻誤認為病毒,用起來并不方便,因此你可以從 http://advsys.net/ken/utils.htm 下載kzip,包括Windows和Linux版本,能實現(xiàn)同樣的功能。

6.2 BamFS
      BamFS是另一個減少JAR包大小的工具,可以從 http://supremej2me.bambalam.se/guides/optimization-tools/bamfs/ 下載。該工具可以將所有資源文件,包括圖片、文本等,打成一個大 的二進制文件,并且提供了一個java類,方便開發(fā)人員從這個大的二 進制文件中讀取所有資源。通過減少JAR包中文件的數(shù)目(或者文件夾 的層次),同樣也可以減少JAR包的大小。

6.3 mbooster

  mbooster是一個很強的工具,但同時,也是個收費的工具,開發(fā)者 可以向該公司申請trial的license,網(wǎng)址是 http://www.innaworks.com/mBooster.html , mbooster可以減小JAR包的大小,同時也能提高程序的運行速度, 它可以優(yōu)化class文件,PNG文件,普通情況小可以減小30-40%左右的 大小。

7. 自動構(gòu)建工具
      選擇一個自動構(gòu)建的工具,會極大的減少構(gòu)建管理者的工作量, 在這里推薦 CruiseControl ,該工具被廣泛的用于Java項目和 極限開發(fā)之中。CruiseControl內(nèi)建支持各類的版本管理工具, 支持Ant、Maven等多種構(gòu)建工具,支持定時構(gòu)建,支持多種發(fā)布 方式。

      構(gòu)建管理者所需要做的事情就是,將自己制作的構(gòu)建環(huán)境放入 CruiseControl之中,對其進行適當?shù)呐渲茫酉聛淼氖虑榫褪趾唵瘟耍看涡枰獦?gòu)建時,只需要登陸到CruiseControl提供的 Web界面,鼠標點擊某鏈接來trigger構(gòu)建,后臺會自動完成構(gòu)建、發(fā)布,并發(fā)郵件通知相關人員,一旦編譯出錯,也會以郵件的 方式通知大家。

8. 需要遵守的一些原則
      1. 整個Build Environment需要有良好的結(jié)構(gòu),可以參考一些開源 項目的結(jié)構(gòu)。為目標構(gòu)建人員(例如開發(fā)人員、測試人員等) 提供簡單的接口,即通過簡單的設置,就能構(gòu)建出想要得東西。 對于提供的接口,一定要有詳細的文檔描述。

      2. 要求開發(fā)人員盡量使用標準的構(gòu)建環(huán)境進行構(gòu)建。J2ME的開發(fā),通常都會在Eclipse/NetBeans里面完成,但一定要求開發(fā)人員 在提交代碼到版本控制系統(tǒng)中之前,至少需要使用標準構(gòu)建環(huán)境構(gòu)建一次JAR包,并驗證。這樣可以幫助盡早發(fā)現(xiàn)問題,因為IDE 與自訂制的構(gòu)建環(huán)境總是存在差別的。

      3. 建議將所有用到的第三方庫/代碼/程序都放入Build Environment中, 而整個Build Environment是應該放入版本控制系統(tǒng)中的。對于 JDK/WTK/Ant等基礎設施工具,可以要求開發(fā)人員自己安裝,并設置好環(huán)境變量。可以編寫適當?shù)哪_本,對環(huán)境以及版本進行判斷。 每次構(gòu)建之前,先判斷,若不滿足,則不予構(gòu)建。

      9. 結(jié)束語
J2ME開發(fā)看似簡單,里面還是有很多東西需要注意的,特別是面對 眾多品牌手機的情況下,希望我的經(jīng)驗也能對你有所幫助。


久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
久久久久天天天天| 国产高清精品久久久久| 国产精品美女久久久久av爽李琼| 欧美亚洲国产免费| 欧美一区二区三区四区在线观看地址 | 亚洲精品欧美激情| 国产人成一区二区三区影院| 国产人妖乱国产精品人妖| 国产午夜精品理论片a级大结局| 久久综合九色综合97婷婷| 久久久精品蜜桃| 亚洲欧美激情小说另类| 亚洲成年人影院| 黄色精品一二区| 不卡的av电影| 欧美日韩在线一区二区三区| 色视频一区二区| 欧美大片免费久久精品三p| 久久嫩草精品久久久精品| 亚洲人成精品久久久久久| 婷婷中文字幕一区三区| 狠狠狠色丁香婷婷综合激情| 97久久精品午夜一区二区| 免费99视频| 欧美日韩在线电影| 国产色产综合色产在线视频| 亚洲福利一区二区| 国产成人精品综合在线观看| 精品久久中出| 欧美无砖专区一中文字| 久久青草欧美一区二区三区| 亚洲小说春色综合另类电影| 粉嫩av亚洲一区二区图片| 久久99精品国产99久久| 欧美日本在线视频| 亚洲国产成人在线| 男女男精品视频| 97在线中文字幕| 欧美午夜宅男影院| 国产精品乱子久久久久| 精品亚洲成a人| 国产在线精品日韩| 欧美肥妇毛茸茸| 亚洲特级片在线| 风间由美一区二区三区在线观看 | 毛片av一区二区三区| 99久久国产综合精品女不卡| 亚洲 日韩 国产第一区| 久久久不卡影院| 麻豆久久一区二区| 久久av二区| 日韩写真欧美这视频| 亚洲一区二区三区不卡国产欧美| 成人污视频在线观看| 亚洲三区在线观看| 欧美极品少妇xxxxⅹ高跟鞋 | 91超碰rencao97精品| 一本大道久久a久久综合婷婷 | 日产欧产美韩系列久久99| 国产精品jizz视频| 制服丝袜亚洲精品中文字幕| 亚洲图片自拍偷拍| 成人蜜桃视频| 欧美videofree性高清杂交| 日韩中文字幕一区二区三区| 国产乱码精品一区二区三区卡| 制服丝袜在线91| 丝袜亚洲精品中文字幕一区| 久久国产一区| 国产欧美日韩另类一区| 成人午夜短视频| 欧美日产国产精品| 日韩精彩视频在线观看| 日本一区不卡| 综合婷婷亚洲小说| 99免费在线观看视频| 日韩亚洲电影在线| 国产一区在线视频| 日本电影欧美片| 午夜久久久影院| 欧美日韩一区二区视频在线| 国产精品污污网站在线观看| 91玉足脚交白嫩脚丫在线播放| 欧美三级中文字幕在线观看| 日本成人中文字幕在线视频| 亚洲午夜精品久久久中文影院av| 亚洲欧美视频在线观看视频| 国产欧美日韩在线播放| 日本一区免费视频| 91麻豆蜜桃| 国产女人aaa级久久久级 | 91色在线porny| 精品国产一区二区三区不卡| 国产一区 二区| 欧美丰满一区二区免费视频| 国产精品系列在线播放| 欧美嫩在线观看| 国产一区二区视频在线播放| 欧美美女黄视频| 国产一区二区看久久| 欧美一区二区观看视频| 国产精品小仙女| 日韩一级大片在线| 不卡av在线免费观看| 久久精品视频在线看| 91在线播放视频| 亚洲欧美另类小说| 欧美资源一区| 亚洲国产精品久久不卡毛片| 色综合久久综合网97色综合| 青青青爽久久午夜综合久久午夜| 欧美性猛交xxxxxx富婆| 国产福利一区二区三区| 日韩精品一区二区三区四区 | 午夜久久电影网| 欧美性一级生活| 国产成人免费9x9x人网站视频| 日韩欧美国产综合在线一区二区三区| 成人自拍视频在线观看| 精品1区2区在线观看| 99精品国产高清一区二区| 亚洲天堂免费看| 亚洲欧洲一区二区福利| 国内精品自线一区二区三区视频| 日韩精品一区二区三区四区视频| 99高清视频有精品视频| ...av二区三区久久精品| 五月天亚洲综合| 国内精品免费**视频| 久久网站最新地址| 麻豆视频成人| 奇米色777欧美一区二区| 日韩免费一区二区三区在线播放| 国产精品一区二区免费| 亚洲成人动漫在线观看| 欧美日韩国产综合草草| 91美女在线观看| 亚洲国产日韩av| 在线观看91精品国产麻豆| 92国产精品观看| 夜夜精品浪潮av一区二区三区| 欧美日韩亚洲综合在线| 国产精品一区在线观看| 日本视频免费一区| 久久综合视频网| 日韩av一级大片| 国产精品91一区二区| 中文字幕免费观看一区| 色噜噜夜夜夜综合网| 成人福利视频在线看| 日韩理论片网站| 欧美日韩一区二区三区在线看| 俄罗斯精品一区二区三区| 免费久久精品视频| 久久精品一区二区| 在线视频一区观看| 972aa.com艺术欧美| 丝袜亚洲另类欧美| 国产亚洲欧美一级| 色综合天天综合网国产成人综合天| 成人毛片视频在线观看| 一级特黄大欧美久久久| 日韩精品在线一区二区| 视频一区二区三区免费观看| 91亚洲精品乱码久久久久久蜜桃| 丝袜美腿亚洲一区| 国产日本欧美一区二区| 欧美日韩综合在线免费观看| 久久人人九九| 丁香六月综合激情| 午夜欧美一区二区三区在线播放| 日韩美女天天操| 色综合久久九月婷婷色综合| 国产成人精品一区二区三区福利| 精品综合免费视频观看| 亚洲少妇屁股交4| 2023国产精品| 欧美在线免费播放| 免费久久久一本精品久久区| 成人性生交大片免费看中文网站| 午夜精品久久久久久久久| 国产精品久久久久久久久久免费看| 欧美一区二区久久| 91国产视频在线观看| 久久涩涩网站| 成人免费观看网站| 粉嫩av一区二区三区粉嫩| 老司机午夜精品99久久| 一区二区三区资源| 亚洲国产成人一区二区三区| 日韩欧美中文字幕一区| 欧美熟乱第一页| 正在播放精油久久| 日本一区网站| 久久资源av| 久久99精品国产99久久| 97超级在线观看免费高清完整版电视剧| 国内精品视频666| 蜜桃av一区二区三区电影| 亚洲图片有声小说|