减少jar文件大小?

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

当我只是使用他们的几种方法时,我已经厌倦了拉臃肿的库。

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

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

是的,有一个 – Proguard 。

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

混淆通常会将jar文件大小减少一个可观的因素。

您可能想尝试像Proguard (开源)和类似的工具。

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

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

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

从高效的MIDP编程:

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