Java class file shrinker, optimizer, obfuscator, and preverifier
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. Some
uses of ProGuard are: - Creating more compact code, for smaller
code archives, faster transfer across networks, faster loading,
and smaller memory footprints.
- Making programs and libraries harder to reverse-engineer.
- Listing dead code, so it can be removed from the source code.
- Retargeting and preverifying existing class files for Java 6, to
take full advantage of Java 6's faster class loading.
- ProGuard's main advantage compared to other Java obfuscators is
probably its compact template-based configuration. A few
intuitive command line options or a simple configuration file are
usually sufficient. For instance, the following configuration
option preserves all applets in a jar: -keep public class *
The user manual explains all available options and shows more examples
of this powerful configuration style. ProGuard is fast. It only takes
seconds to process programs and libraries of several megabytes. The
results section presents actual figures for a number of applications.
ProGuard is a command-line tool with an optional graphical user