您的位置:首页 > 移动开发

为 SWT Windows桌面程序定制适合分发的 JRE

2005-08-09 19:43 477 查看
[b][b][b]前言:[/b][/b]
11.4M[/b] 虽然还不够理想,偶最初期望可以把 JRE 部分控制在 10M 以内。
勉强凑合吧,这样一个预先集成 JRE 的普通 SWT 桌面应用程序下载大小就不会超过20M。
一般的宽带用户就不会犹豫了。JRE 1.5 的性能又可以保留,另外还有 SWT 的协助。
普通人看不出这是个 Java 程序,除了配置老的机子启动有点慢(一般也能在10秒内启动)

=========================================================================

SWT 有了, J2SE 1.5 有了, Java 桌面程序还需要些什么??

可能对于很多人来说(包括我), Java 的跨平台特性并不是必须的,

很多时候我们只是想做个简单的Windows桌面应用,然后试着把快乐分发给别人,

但是当我试着这么做的时候,才发现 SUN 的虚拟机对你溺爱的程度让你恶心~


怎么办? 既然已经上了这条船,就只能先找找有没有就近的解决方法:

[b]SWT + Java launcher + 一个小巧的JRE[/b]

因为 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息