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

J2ME開發中的構建治理

編輯:J2ME

在一個J2ME項目中干了半年的CM (Configuration Management)/BM (Build Management),學習到了許多普通開發職員較少機會接觸, 但是對項目本身又十分重要的知識,寫出來與大家分享。

前言

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

1. 關於JDK/WTK的選擇

JDK屬於基礎設施,選擇的版本越新越好。通常,高版本的JDK可以設置 按照低版本的語法進行編譯,可以指定天生低版本的class文件格局。

WTK也是同樣的道理,高版本的通常具有較好的兼容性,這裡給一個提示, 假如你需要將你的程序再多種品牌的手機上運行,你可以同時安裝特定手機品牌放出的J2ME WTK,通過在這類特定的WTK上進行測試,可以較早於真機發明標題。在J2ME的開發過程中,JSR包的選擇十分重要,當應用某些 特定JSR時,必定要調研明白,所需要支撐的手機中是否都支撐該JSR包。

2. 編譯腳本的編寫

如同開發C/C++程序一樣編譯的時候需要寫Makefile,開發J2ME程序的時候也需要有類似的腳本來完成全部編譯和構建的過程,這裡面有一些 選擇,簡略的構建過程,Windows平台上可以考慮編寫bat腳本,基礎能夠滿足需求。對於較為負責的構建過程,推薦選擇Ant。Ant是一個 用於簡略或復雜Java工程的主動化構建、安排工具,它對於那些具有散布式開發團隊或者信任通過頻繁的構建來進行不中斷集成的公司尤 其有用。在J2ME開發上,同樣可用。同時Ant有豐富的插件,幫助完成Ant本身無法完成的功效,對於特定的需求,構建治理者可以自己編寫 插件,集成到Ant中。

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

3. Antenna

Antenna是Ant的擴大包,它是專用來構建、編譯、打包、安排J2ME 利用的幫助工具。

Antenna中非常實用的工具就是WtkPreprocess,它給Java開發添加 了類似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的過程中,會有一些缺點。例如,在開發過程中,我們 通過定義宏來代表某個功效,對於不同的手機,當我們需要支撐該功效時,在編譯的過程中,打開這個宏即可,反之則封閉這個宏。假如該功效只與代碼有關系,情況就十分簡略,Antenna的WtkPreprocess可以完成我們需要的功效。但是假如該功效同時與資源有關系,當 我們選擇不支撐該功效時,我們不但想在編譯的過程中,通過預處理,往掉相干的代碼,也希看該功效相干的資源也不被放進JAR包中, 而WtkPreprocess除了處理源代碼,其他都無能為力。因此在構建腳本的編寫過程中,需要特別留心這類標題。

4. Proguard

ProGuard是一款免費的Java類文件壓縮器、優化器和混雜器。它能發明並刪除無用類、字段(fIEld)、方法和屬性值(attribute)。 它也能優化字節碼並刪除無用的指令。最後,它應用簡略無意義的名字來重命名你的類名、字段名和方法名。經過以上把持的jar文件 會變得更小,並很難進行逆向工程。

J2ME開發中,通常都會應用到該工具,並且該工具是開源的, 很輕易獲取。

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版本,能實現同樣的功效。

6.2 BamFS

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

6.3 mbooster

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

7. 主動構建工具

選擇一個主動構建的工具,會極大的減少構建治理者的工作量, 在這裡推薦 CruiseControl ,該工具被廣泛的用於Java項目和 極限開發之中。CruiseControl內建支撐各類的版本治理工具, 支撐Ant、Maven等多種構建工具,支撐定時構建,支撐多種宣布 方法。

構建治理者所需要做的事情就是,將自己制作的構建環境放進 CruiseControl之中,對其進行適當的配置,接下來的事情就十分簡略了,每次需要構建時,只需要登陸到CruiseControl供給的 Web界面,鼠標點擊某鏈接來trigger構建,後台會主動完成構建、宣布,並發郵件通知相干職員,一旦編譯出錯,也會以郵件的 方法通知大家。

8. 需要遵照的一些原則

1. 全部Build Environment需要有良好的結構,可以參考一些開源 項目標結構。為目標構建職員(例如開發職員、測試職員等) 供給簡略的接口,即通過簡略的設置,就能構建出想要得東西。 對於供給的接口,必定要有具體的文檔描寫。

2. 請求開發職員盡量應用尺度的構建環境進行構建。J2ME的開發,通常都會在Eclipse/NetBeans裡面完成,但必定請求開發職員 在提交代碼到版本把持系統中之前,至少需要應用尺度構建環境構建一次JAR包,並驗證。這樣可以幫助盡早發明標題,由於IDE 與自訂制的構建環境總是存在差別的。

3. 建議將所有用到的第三方庫/代碼/程序都放進Build Environment中, 而全部BuildEnvironment是應當放進版本把持系統中的。對於 JDK/WTK/Ant等基礎設施工具,可以請求開發職員自己安裝,並設置好環境變量。可以編寫適當的腳本,對環境以及版本進行判定。 每次構建之前,先判定,若不滿足,則不予構建。

9. 結束語

J2ME開發看似簡略,裡面還是有許多東西需要留心的,特別是面對 眾多品牌手機的情況下,希看我的經驗也能對你有所幫助。

Enjoy your trip!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved