为 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
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
相关文章推荐
- SWT可以胜任大部分windows桌面程序的开发
- Windows 桌面程序隐藏最小化、关闭按钮
- 一个java swt桌面程序开发到打包的总结(2)
- 关于WINDOWS服务程序的编写-------------一个适合我的BLOG专栏
- Windows 2008 R2 远程桌面服务(四)运行RemoteApp程序
- Windows桌面应用程序(1-2-4-4th) 您的第一个Direct2D程序
- 类似windows桌面程序的书签页的界面
- Linux(Ubuntu)下,让Swing和Swt编写的Java桌面程序运行
- (02)C++ builder之WINDOWS系统服务编写与WINDOWS桌面程序调用
- 0x02 译文:Windows桌面应用Win32第一个程序
- 如何解决vista和win7在windows服务中无法与桌面程序交互的问题?
- 第十三篇 一个安装、管理windows服务的桌面程序
- 一个在windows和基于SWT的java程序间拖拽的例子
- windows下PHP调用执行桌面程序的方法
- 定制仿Windows的linux桌面(CentOS6环境)
- windows下打包java程序为带jre的可执行文件
- 小程序:VC++修改Windows桌面背景为黑白灰色(WinXP、Win7 64位)
- Windows桌面应用程序(1-2nd) 学习用C++编写Windows程序
- Windows 桌面程序隐藏最小化、关闭按钮
- 定制仿Windows的linux桌面(CentOS6环境)