不像游戲程序,基于知識的應用程序的價值在于數據。由于MIDP應用硬件利用的簡單性,如果數據文件被折衷的話,可以很容易就提出一個與之競爭的應用。盡管將數據放在后臺服務器的客戶端-服務器模式可以闡釋這種關系,這樣的模式對大多數無線應用來講被證明是不切實際的。除非等到無線數據傳播費用降低,同時無線連接變得更加可靠和普遍,目前來說將數據文件嵌入MIDP JAR 是唯一的選擇。因此,保護數據文件不受版權侵犯變得勢在必行。
整理數據文件:許多Windows編輯器用/n/r避開了新行。特別是在你從Excel導出數據的情況下。"/r"是多余的,既然"/n"是足夠來顯示新一行的。在換行前消除"/r"和不用的空白可以節省很多字節。 注意不是所有的文本編輯器都可以探測到"/r";UltraEdit是有效的編輯器之一。如果數據文件很大,把它拆成幾個小的文件以便快速的搜尋。但謹記小的文本文件不像大的壓縮得那么高效。 • 壓縮數據文件:壓縮算法的選擇受到J2ME壓縮執行的可用性限制。盡管壓縮API已經與J2ME CDC(其目標是至少有2MB內存的設備)綁定,大部分目前的蜂窩電話設備僅僅支持CLDC和建立在其之上的MIDP標準。CLDC的最小內存要求是128KB。因此,開發者必須尋找第三方的庫或者寫自己的代碼。我發現了三個: o 利用zlib壓縮算法的JCraft壓縮庫。它是開源的,文檔良好,并且有大量跟隨者;但是,庫有點大。 o Java4Ever有一個gzip (GNU zip)執行(3.27 KB)。它在LGPL的許可下,也是開源的。 o 我喜歡TinyLine的GZIPInputStream,因為它擴展了java.io.InputStream并且追隨了同樣的裝飾模式,作為另一個Java流類。它支持skip(), mark(),和其他基本I/O函數。工具的作者對問題的響應很迅速,并且庫的使用方法很直接:
InputStream in = getClass().getResourceAsStream(db); in = new GZIPInputStream (in, 256);
關于作者 Simon Ru 是Ebay的一個高級軟件工程師。他有六年多的開發java和J2EE應用的經驗。在2001年,他開始研究J2ME技術,是基于J2ME的六商業教育軟件項目的創造者。該軟件在Handango上有數千的下載次數。他是伯克利加州大學的研究生,是通過Sun認證的J2EE開發者。
資源 Tools to comPRess data using the gzip algorithm: http://www.gzip.org/ Tools to compress and read data using the zlib algorithm: http://www.jcraft.com/jzlib/ Library to read a gzip file using GZIPInputStream: http://tinyline.com/download.html Java4Ever: http://www.java4ever.com/index.php?section=j2me&project=apime&menu=download&lang= Over The Air User Initiated Provisioning 1.0: http://java.sun.com/prodUCts/midp/OTAProvisioning-1.0.pdf Lightweight crypto APIs for J2ME CDC: http://www.bouncycastle.org/latest_releases.html Optimizing MIDP size: http://www.javaperformancetuning.com/tips/j2me.shtml Security and Trust Services API for J2ME (JSR 177): http://java.sun.com/products/satsa/ Handango: http://www.handango.com/home.jsp?siteId=1