减小jar文件大小?

11

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

当我只使用其中几个方法时,我很烦恼地引入了臃肿的库。

(我说的不是像缩小名称这样的小型“本地”优化。我更想让它全局分析,找出在给定一组入口点(包括反射入口点)下使用哪些类/方法/变量,并删除未使用的所有内容。

我的Web应用程序大约有45MB,主要是由于30多个库,我确信我只使用了每个库的一小部分。


@hairraisin 我认为这不会有任何影响(但我可能错了),因为jars已经是zip归档文件(带有一些附加信息)。 - om-nom-nom
@hairraisin 哦,没明白 ;) - om-nom-nom
3个回答

14

有一个可以用的工具——Proguard

ProGuard是一款免费的Java类文件缩小器、优化器、混淆器和预处理器。它可以检测并删除未使用的类、字段、方法和属性;优化字节码并删除未使用的指令;使用简短且无意义的名称重命名剩余的类、字段和方法。最后,它会为Java 6或Java Micro Edition预处理代码。


谢谢!哦,有没有类似的东西可以直接在war文件上工作? - user1001630
@user1001630你的意思是不解压缩吗?否则的话,解决方案还是使用Proguard - om-nom-nom
2
我从未成功使用Proguard做任何事情。无论我尝试使用哪个jar文件,它都总是失败的。 - Tomáš Zato

6

-1

又是一个不错的技巧,通常使用未命名的包,删除名称(<default>将出现),还可以减小jar文件的大小。

在我的情况下,我的jar从24,243字节减少到23,946字节。虽然不是很大的变化,但我认为这仍然是一个很酷的技巧。

来自高效的MIDP编程:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接