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. The resulting jars are more compact and more difficult to reverse-engineer. Advantages of ProGuard compared to other Java shrinkers and obfuscators are compact template-based configuration, memory efficiency, and speed.
The data flow analysis in the optimization step has been refined. Other changes are mostly bugfixes for the optimization step and for the obfuscation step. Notably, the optimization step now avoids increasing the size of methods beyond certain bounds, in order not to upset the HotSpot JIT compiler. The documentation and examples have been updated.