不像游戏程序,基于知识的应用程序的价值在于数据。由于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