ProGuard is a free Java class file shrinker and obfuscator. It can detect and remove unused classes, fields, methods, and attributes. It can then rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are more compact and more difficult to reverse-engineer.

I'm writing all open source code lately so I'm not really interested in the obsfucation, but I'm getting pretty worried about bloat. Especially if I'm going to be using WebStart - People don't want to download 8 megs of .jar files just to run my little crap app. It'd be nice to see how much savings I can get by opening up all the .jar files and running this app to see how small the app can get. I doubt I'm using every class from every jar file I'm using.