Reducing jar file size? [duplicate]

╄→гoц情女王★ 提交于 2019-11-30 23:15:12

问题


Is there a good app to reduce jar file size by eliminating redundant classes/methods/constant pool elements? (i.e. not reachable from a fixed set of entry points, assuming no reflection)

I'm tired of pulling in bloated libraries when I'm just using a couple of methods from them.

(I'm not talking about small "local" optimizations like making names smaller. I'm thinking more of something that does global analysis to figure out which classes/methods/variables are used, given a set of entry points (including reflective entry points), and removes everything that is not used.

My webapp is like, 45MB, mostly due to 30-odd libraries, and I'm pretty sure I'm using only a small fraction of each library.


回答1:


Yes, there is one - Proguard.

ProGuard is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.




回答2:


Obfuscation typically reduces jar file size by a respectable factor.

You may want to try tools like Proguard (open source) and similar.

You can see some examples of size reduction in this page:

  • http://proguard.sourceforge.net/index.html#/results.html



回答3:


Just another nice trick, usually using the unnamed package, which is deleting the name (< default> will appear), also decreases the jar size.

In my case my jar went from 24,243 bytes to 23,946. Yeah not a big deal but still a cool trick i think.

From efficient MIDP programming:

"Use the 'unnamed package' – placing your MIDlet classes all in the same named package only increases the size of your MIDlet’s JAR file; reserve the package statement for libraries" http://carfield.com.hk/document/java/articles/Efficient_MIDP_Programming.pdf



来源:https://stackoverflow.com/questions/7810896/reducing-jar-file-size

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!