减少jar文件大小?

时间:2011-10-18 16:54:29

标签: java jar compression

是否有一个很好的应用程序可以通过消除冗余来减少jar文件的大小 类/方法/常量池元素? (即无法从固定的 一组入口点,假设没有反射)

当我刚从他们那里使用一些方法时,我已经厌倦了拉臃肿的图书馆。

(我不是在谈论小的“本地”优化,比如缩小名称。我正在考虑更多的东西进行全局分析,以确定使用哪些类/方法/变量,给定一组入口点(包括反射入口点),并删除未使用的所有内容。

我的webapp就像是45MB,主要是由于30多个库,而且我很确定我只使用了每个库的一小部分。

3 个答案:

答案 0 :(得分:11)

是的,有一个 - Proguard

  

ProGuard是一个免费的Java类文件收缩器,优化器,混淆器,   和预验证。它检测并删除未使用的类,字段,   方法和属性。它优化字节码并删除未使用的   说明。它重命名剩余的类,字段和方法   使用简短无意义的名字。最后,它预先验证了已处理的   Java 6或Java Micro Edition的代码。

答案 1 :(得分:4)

混淆通常会减少jar文件的大小。

您可能需要尝试Proguard(开源)等类似工具。

您可以在此页面中看到一些缩小尺寸的示例:

答案 2 :(得分:0)

另一个不错的技巧,通常使用未命名的包,即删除名称(< default>将出现),也会减少jar大小。

在我的情况下,我的jar从24,243字节变为23,946字节。是的,这不是什么大不了的事,但我认为还是一个很酷的技巧。

从高效的MIDP编程:

“使用'未命名的包' - 将所有MIDlet类放在同一个命名包中只会增加MIDlet的JAR文件的大小;保留库的包语句” http://carfield.com.hk/document/java/articles/Efficient_MIDP_Programming.pdf