This question already has an answer here:
- Minimizing jar dependency sizes 3 answers
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.
Yes, there is one - Proguard.
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:
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