流程 |
工具 |
输入 |
输出 |
编译 | javac.exe编译 | 源文件(*.java) | 未混淆的类文件(*.class) |
混淆 | 第三方提供的工具 | 未混淆的类文件(*.class) | 混淆后的类文件(*.class) |
预审 | preverify.exe预审核 | 混淆后的类文件(*.class) | 经过预先审核的类文件(*.class) |
打包 | jar.exe打包 | 经过预先审核的类文件(*.class) | 包文件(*.jar) |
编写描述文件 | 文本编辑工具 | 描述文件(*.jad) | |
安装运行 |
传输工具(IR/BT/数据线/OTA) |
包文件(*.jar)和描述文件(*.jad) |
在仿真器或手机上正式运行 |
下面将会介绍每个步骤。当利用集成开发环境(诸如JBuilder、NetBeans、Sun ONE Studio、Eclipse等)时,这些工具不仅可以很快的帮我们建立起代码的主干,而且可以帮助我们自动的完成上面的大部份工作(关于集成开发环境的利用见后面的章节)。在利用IDE开发之前,开发者有必要了解其中每一步的原理。
编译:
编译就是将我们所编制的*.java 文文件,编译成为二进制的*.class文件(计算机只认识二进制!)。javac.exe是由Sun公司编写的一个编译器,它可以把*.java文件编译成为*.class文件。注意:如果一个*.java文件中定义了三个类,它就将被编译成三个*.class文件。
混淆(可选):
由于class文件格式透明的缘故,java文件很容易被反汇编。因此,如果你不希望别人掌握你的源代码的话,你一定要进行混淆(obfuscate)。所谓混淆,就是利用工具,将方法名、类名改成没有实际意义的特定的字符及代号,增加阅读的难度。这样就充分的保护了我们自己的知识产权。而且混淆还有个意想不到的好处,就是减少程序的大小。这是由于混淆器将我们设定的方法名、类名变成没有意义的短字符或代码,无形中减少了程序的大小。对于手机程序设计来讲尤为重要,每K的减少都意味着可以获得更多的空间。混淆器都是第三方软件开发商提供的,许多都是开源的,可以免费使用。常见的混淆器见下表:
名称 |
地址 |
特点 |
JODE | http://jode.sourceforge.net/ | 开源 |
ProGuard | http://proguard.sourceforge.net/ | 开源 |
RetroGuard | http://www.retrologic.com/ | 开源,中国移动百宝箱强制使用 |
DashO | http://www.preemptive.com/ | 商业软件,一般专业公司使用,昂贵 |
ZKM | http://www.zelix.com/ | 商业软件可试用 |
JBuilder | http://www.borland.com/ | 集成开发环境中内附混淆功能,但JBuilder的价格也不便宜。 |
预审核:
在完成编译后,我们必须要对*.class文件进行预审核,这和传统的Java程序(Applet、Servlet)是不同的。因为class在传输过程中容易损坏或是被篡改,传统的Java程序在运行前,都在本地机器上对.class进行Byte Code的审核。而对于手机这样的资源有限设备而言,在手机上进行大量的此类的审核是极为浪费资源(如占用CPU的时间、消耗电力等)。因此,我们必须先在PC机上使用preverify.exe进行一部份预选审核工作。这样,在手机上进行的审核工作就大量减少了。打包与编写描述文件:
MIDP可执行文件后缀名为jar。利用jar file.class就能将通过预审核的*.class文件,打包成 MIDP认可的可执行文件。后缀名为jad的文件是jar文件的描述文件,jad文件详细介绍见第二节。
在仿真器或手机上安装运行:
有了jar及jad文文件后,我们就可以把它们放到仿真器或手机上运行了。至于如何把它们放到手机上,根据手机的功能不同,有如下方法可以选择:
- 使用数据线,将PC与手机相连,下载文件
- 使用红外线
- 使用蓝牙
- 使用OTA空中下载(利用短信/WAP)