前言:
11.4M 虽然还不够理想,偶最初期望可以把 JRE 部分控制在 10M 以内。
勉强凑合吧,这样一个预先集成 JRE 的普通 SWT 桌面应用程序下载大小就不会超过20M。
一般的宽带用户就不会犹豫了。JRE 1.5 的性能又可以保留,另外还有 SWT 的协助。
普通人看不出这是个 java 程序,除了配置老的机子启动有点慢(一般也能在10秒内启动)
=========================================================================
SWT 有了, J2SE 1.5 有了, Java 桌面程序还需要些什么??
可能对于很多人来说(包括我), Java 的跨平台特性并不是必须的,
很多时候我们只是想做个简单的Windows桌面应用,然后试着把快乐分发给别人,
但是当我试着这么做的时候,才发现 SUN 的虚拟机对你溺爱的程度让你恶心~
怎么办? 既然已经上了这条船,就只能先找找有没有就近的解决方法:
SWT + Java launcher + 一个小巧的JRE
因为 GCJ 还不很完美,目前我就是用上面的方法做 Java Windows 桌面应用的。
唯一遗憾的是 JRE 1.5 太大,压缩后也有 20M 左右不利于程序分发。
(这里,首先我们不希望客户自己下载安装JRE,涉及到 JRE的版本兼容等问题)
虽然可以对 SUN JRE 进行大规模精简,但这样做显然是不合规范的,
JRE 的授权信息里似乎有类似“可以随意分发,但必须保证完整性”说法。
况且我也没有找到全面的精简 SUN JRE 的技术文章。
JRE 目录下的 readme 有关于去掉可选内容的说明,
但即便是完全删除可选内容,减掉的肥肉也是有限的。
有侠士提供了这篇文章:Understand JRE download size
大意是想说明“JRE 其实并不大,你可以下载它的 offline 安装版本。”
这个离线安装版本将不会下载部分可选的内容,而且安装的时候可以定制安装组件。
测试后发现真的不错,比普通 offline 版本安装后体积小了 20M 。
可惜的是本来可以更小一点,但为了兼容中文,必须安装语言相关的组件。
然后,以这个相对轻便的 JRE 为基础,剔除 Applet、AWT、Swing 相关内容。
因为我们使用 SWT !(说实话,我讨厌 Swing
)方法是用 WinRAR 解压 jre\lib\rt.jar 包,搜索 applet 、awt 、swing 目录
全部删除后,再用 WinRAR 以 zip 存储模式(注重)后改名成 rt.jar,替换原文件
jre\bin\awt.dll 可以删除。 删除 jre\ 目录下所有文件,除了bin\目录 与lib\目录
(应该还有其他可以精简的,比如jre readme 里说的一些,但偶没多试,只抓了大头)
完成后就开始打包压缩了,慢着,不是用 WinRAR! 而是 NISI
这里有中文文档:http://Foobar.nease.net/nsis/
它试一个安装制作程序,很棒,用 NISI 的 LZMA 压缩算法效果绝对出乎你的意料。
不会用 NISI 可以像我这样先把整个东西打包成ZIP,然后用 NISI 的 Zip2Exe 工具转换
完成后结果就出来了,我的 J2SE 1.5 Updata4 最终大小是 11.4M
NISI 不但是个压缩工具,同时它更加是个安装程序制作工具,非常棒!
你顺便就可以用它做安装程序(带着JRE 和 业务程序本身)
========================================================================
下面是一些相关内容:
SWT:Eclipse 图形组件
Java launcher:一个加载java程序的小工具,
我发现用它启动Java还可以一直保持鼠标的沙漏状态
关于 SWT + Java launcher ,可以看这篇文章(强烈推荐
):http://www.cnblogs.com/glchengang/archive/2005/06/12/173070.Html