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

原创 2005年08月09日 19:43:00

前言:
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 [bad]

方法是用 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 不但是个压缩工具,同时它更加是个安装程序制作工具,非常棒![good]

你顺便就可以用它做安装程序(带着JRE 和 业务程序本身)[:E]

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

下面是一些相关内容:

SWT:Eclipse 图形组件 

Java launcher:一个加载java程序的小工具,

我发现用它启动Java还可以一直保持鼠标的沙漏状态

关于 SWT + Java launcher ,可以看这篇文章(强烈推荐[:S]):
http://www.cnblogs.com/glchengang/archive/2005/06/12/173070.html

用WindowBuilder编写SWT 桌面应用程序

WindowBuilder是一款基于Eclipse平台的双向Java的GUI设计插件式的软件。它具备SWT/JFACE开发、Swing开发及GWT 开发三大功能,是一款不可多得的Java体系中的WYS...
  • sahusoft
  • sahusoft
  • 2016年07月10日 12:07
  • 5461

Java桌面应用程序

java桌面应用印象因为桌面程序运行在宿主机器上, 所以比如你运行java桌面程序,必然要安装java虚拟机, 也就是相当于在操作系统上再加一层抽象, 这与直接调用api的桌面程序效率相比,或多...
  • oneqinglong
  • oneqinglong
  • 2017年04月13日 15:27
  • 4686

Linux(Ubuntu)下,让Swing和Swt编写的Java桌面程序运行

本文以ubuntu 9.04为例 前提:先安装带jre的jdk(下面链接中的文中介绍) http://www.programfan.com/club/showtxt.asp?id=263906...
  • cds9527
  • cds9527
  • 2016年12月22日 10:25
  • 1070

SWT/JFace项目打包与发行

第7章  项目打包与发行        当项目完成后接下来的就是打包发行了,应用程序(Application)项目和Eclipse插件项目(plugin)的打包是不同的,本章将分别介绍两者的打包方法...
  • yellowd1
  • yellowd1
  • 2015年05月12日 22:15
  • 667

坐井观天谈Windows桌面应用程序开发中的MVC架构(一)之个人开发之路

刚刚毕业的时候从第二份工作开始就进入了Windows桌面程序开发中,从此一如侯门深似海,多次徘徊在进入服务器端开发的门口,却始终没能迈进去。刚开是写基于MFC的UI写到崩溃,经常是一个很简单的界面效果...
  • whuavon
  • whuavon
  • 2015年09月12日 14:17
  • 1900

win7下配置jdk环境,认清jdk与jre的区别

配置环境前,我们先来区别一下jdk与jre的关系: jdk与jre的区别 很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。 JDK就是Java Developme...
  • sjz4860402
  • sjz4860402
  • 2014年04月20日 15:34
  • 1268

如何创建一个最简单的Windows桌面应用程序 (C++)

如何创建一个最简单的Windows桌面应用程序 (C++)      最近刚开始学习C/C++开发Windows应用程序,这里将会以零基础的视角把学习过程完全记录下来。如果你也刚刚起步,那本文一定...
  • u011583927
  • u011583927
  • 2017年02月07日 13:23
  • 12074

用HTML开发Windows桌面应用程序

转载自:http://blog.csdn.net/xiaoaiai/article/details/46043077  如果要说明这个题目上的问题,就先要说一下,软件开发的种种方式,从最初的...
  • ytlcainiao
  • ytlcainiao
  • 2015年05月29日 14:09
  • 6130

C# 编写Windows服务并设置为“允许服务与桌面交互”

本文信息来源于网络,本人只是汇总。VS创建项目,项目类型选择Window服务为服务创建安装程序1.. 返回到 Service1 的“设计”视图。 2.. 单击设计器的背景以选择服务本身,而不是它...
  • qq752923276
  • qq752923276
  • 2015年07月10日 10:16
  • 3209

电脑桌面直播的各种应用场景(这里都齐全了)

连通宝的屏幕直播技术从10多年前出现在应用市场上的时候并没有引起多大的重视,直到今天,互联网的普及让电脑桌面直播可以大大方便我们各类远程或现场的沟通,展示,彻底增加了远程沟通互动的直观度。.这里笔者就...
  • sophia_2016
  • sophia_2016
  • 2016年04月28日 22:11
  • 1783
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为 SWT Windows桌面程序定制适合分发的 JRE
举报原因:
原因补充:

(最多只允许输入30个字)