知识大全 如何制作最小的RCP程序压缩包
Posted 文件
篇首语:智慧并不产生于学历,而是来自对于知识的终生不懈的追求。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何制作最小的RCP程序压缩包相关的知识,希望对你有一定的参考价值。
如何制作最小的RCP程序压缩包 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
如果开发完了一个RCP应用程序 要安装到客户端 那么这个安装文件会有多大呢 我们当然希望是越小越好
我们先算一下普通方式下的文件大小
jre 安装程序 M
rcp runtime M
rcp应用程序(包含用到的第三方的lib) 此处假设 - M
那么将这些文件打成包后的大小将为 M左右 一个普通的rcp安装程序居然会有这么大 这实在有点令人难以接受
难道就不能再小一点吗?我们多么希望有一个小巧的RCP安装程序啊 答案是肯定的 我们完全可以将RCP安装程序控制在 M以内 甚至更小
此处只介绍如何压制一个最小的RCP压缩包 至于如何制作安装程序 已经超出了讨论的范畴 只要有了最小的压缩包 不论用何种安装程序 都可以制作出 M以下的RCP安装程序
第一步 jre 减肥
jre 安装程序有 M 这可是一个大东西 客户想要运行RCP程序 首先就要安装JRE 这也是很多客户反感的 jre里面包含了太多的东西 很多是rcp程序根本用不到的 比如swing库 如果全是用swt开发 swing包就多此一举了 而且JRE的安装程序也不见的那么健壮 笔者就曾经两次遇到在不同的机器上不能成功安装jre的情况 而且通过添加删除程序也删不掉 非常烦人 其实完全没有必要安装JRE 只需要在rcp安装目录下建一个jre目录 里面包含jre用到的文件就可以了 rcp程序启动时 会首先查找当前目录下有没有jre目录 如果有 就用里面的jre 如果没有才去注册表查找jre 接下来 我们看看这个jre目录里面都有哪些东西 一些不要的统统删掉 至于删掉哪些 要根据情况而定 这个需要反复实验才能确定哪些有用 哪些没用 最后bin目录笔者保留了必须的dll和exe文件 llib目录里面 只保留了rt jar和charsets jar这两个库 但是rt jar还是太大了 M 既然要减肥 那就彻底减到底吧 用winrar或者其他解压缩工具打开rt jar 看看哪些包里面的class不需要 就统统删掉 例如 客户端不需要swing javax swing包干掉 客户端不需要rmi javax rmi包干掉 删来删去 最后rt jar变成了 多M charsets jar这个包也挺大 M 里面包含了不同的字符集编码 其实很多字符集都用不到 根据情况挑选你所用的吧
到了这一步 jre已经瘦了一圈了 但还是不能达到我们的目的 如果用普通的压缩工具压缩jre目录后 基本可以达到 到 多M 这离我们的目标还差好大一快呢 jre还的减肥 这次狠一点 拿出我们的杀手武器pack pack 是java 自带的(在jre\\bin\\目录下)一个针对class文件进行压缩的工具 由于专门针对class文件进行了优化 压缩比高的惊人(当然速度也比普通压缩软件慢多了)pack 的用法请自行参考相关文档 先用pack 把rt jar 和charsets jar压缩一下 然后用其他压缩软件对jre整个目录压缩一下 压缩后的大小让你吃惊 如果用rar 压缩出来的是 M zip高一些 M 可能是笔者删的东西太多了 所以会这么小 但这里还包含一个 M的charsets jar文件 笔者试过 如果不包括charset jar 用rar压缩后大小为 M 这实在太惊人了 有谁能想象一个只有 M的JRE 遗憾的是charset jar是必须的 你可以删掉里面一些不要的字符集这样能压出来的jre也再 M M之间 必须注意的是 解压缩的时候 还要用pack 解开压缩后的jar文件 整个步骤就是压缩两遍 第一遍用pack 压缩所有的jar文件 第二遍再用一个其他压缩软件压缩jre目录 这样就能得到一个很小的jre压缩包
看到这里 有人开始怀疑 这个 M多的JRE能用吗?笔者就曾将这个jre放到eclipse目录下 eclipse启动一切正常 进去后可以继续写我的java代码 还可以编译java文件(其实eclispe本身不需要tools jar 它自己就带了一个很强的java编译器) 从cvs下载文件也不成问题 试了一圈 没发现有什么出错的地方 当然 包不齐 少了那个class文件 就会出错了 所以删除class文件的时候 尽量不要多删 如果你很熟悉每个class文件的用途 就可以放心的去删了 如果SUN能出一个 MINI JRE 那就更好了
第二步 RCP插件减肥
记不清从eclipse 起的那个版本 已经开始支持将插件打包成一个jar文件 甚至这个插件里面包含着其他的jar文件 这在 以前只能创建一个插件目录 既然插件可以打包成jar文件 那么pack 就派上用场了 同压缩jre一样 此处就不在叙述了
值的注意的问题是 有的插件jar文件里面包含一个目录lib lib里面又包含了其他的jar文件 那么用pack 对这个插件jar压缩的时候 lib里面的jar文件是不会压缩的 这个也不是什么问题 只要写个小程序 对lib里面的jar文件压缩一下就行了
笔者实验的所做的RCP的插件压缩后的大小为 M多 这里面包括rcp runtime 必须的插件 以及自己开发的rcp程序 用到的第三方库 以及eclipse的一些插件emf gef jface databinding等 这些加起来压缩后总共 M多 如果你用的插件不是那么多 压缩后的肯定更小 这样加上jre 整个程序控制在了 M以内
cha138/Article/program/Java/JSP/201311/19715相关参考