1<!doctype html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 2<html> 3<head> 4<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 5<meta http-equiv="content-style-type" content="text/css"> 6<meta name="author" content="Eric Lafortune"> 7<meta name="description" content="ProGuard: java shrinker, optimizer, obfuscator, and preverifier"> 8<meta name="keywords" content="java obfuscator, optimizer, shrinker, preverfier"> 9<link rel="stylesheet" type="text/css" href="style.css"> 10<title>ProGuard Main</title> 11</head> 12<body> 13 14<h2>Main</h2> 15 16<p class="intro"> 17<b>ProGuard</b> is a free Java class file shrinker, optimizer, obfuscator, and 18preverifier. It detects and removes unused classes, fields, methods, and 19attributes. It optimizes bytecode and removes unused instructions. It renames 20the remaining classes, fields, and methods using short meaningless names. 21Finally, it preverifies the processed code for Java 6 or for Java Micro 22Edition. 23</p> 24Some uses of <b>ProGuard</b> are: 25<ul> 26 27<li>Creating more compact code, for smaller code archives, faster transfer 28 across networks, faster loading, and smaller memory footprints. 29 30<li>Making programs and libraries harder to reverse-engineer. 31 32<li>Listing dead code, so it can be removed from the source code. 33 34<li>Retargeting and preverifying existing class files for Java 6, to take full 35 advantage of Java 6's faster class loading. 36 37</ul> 38<p> 39<b>ProGuard</b>'s main advantage compared to other Java obfuscators is 40probably its compact template-based configuration. A few intuitive command 41line options or a simple configuration file are usually sufficient. For 42instance, the following configuration option preserves all applets in a jar: 43<pre> 44 -keep public class * extends java.applet.Applet 45</pre> 46The user manual explains all available options and shows more examples of this 47powerful configuration style. 48<p> 49<b>ProGuard</b> is fast. It only takes seconds to process programs and 50libraries of several megabytes. The results section presents actual figures 51for a number of applications. 52<p> 53<b>ProGuard</b> is a command-line tool with an optional graphical user 54interface. It also comes with plugins for Ant and for the JME Wireless 55Toolkit. 56<p> 57<p class="intro"> 58Version 4.0 introduced preverification and more bytecode optimizations. Please 59report any problems, so they can be fixed soon. 60</p> 61The following sections provide more detailed information: 62<ul> 63<li><a href="main.html">Main</a>: this overview page. 64<li><a href="results.html">Results</a>: some results obtained with 65 <b>ProGuard</b>, including timings and memory usage. 66<li><a href="FAQ.html">FAQ</a>: answers to some Frequently Asked Questions. 67<li><a href="manual/index.html">Manual</a>: the complete <b>ProGuard</b> user 68 manual, with examples and troubleshooting tips. 69<li><a href="quality.html">Quality</a>: a discussion of the (excellent) quality 70 of <b>ProGuard</b>'s code. 71<li><a href="screenshots.html">Screenshots</a>: some impressions of what <b>ProGuard</b> looks like. 72<li><a href="testimonials.html">Testimonials</a>: what users think of 73 <b>ProGuard</b>. 74<li><a href="license.html">License</a>: <b>ProGuard</b> is free, under a GPL 75 license. 76<li><a href="downloads.html">Downloads</a>: download the <b>ProGuard</b> 77 package yourself. 78<li><a href="feedback.html">Feedback</a>: tell me about your experiences, or 79 learn from others on our forums. 80<li><a href="acknowledgements.html">Acknowledgements</a>: people who have been 81 helpful. 82<li><a href="alternatives.html">Alternatives</a>: other Java obfuscators, 83 optimizers, and shrinkers. 84</ul> 85 86<hr> 87<address> 88Copyright © 2002-2009 89<a href="http://www.graphics.cornell.edu/~eric/">Eric Lafortune</a>. 90</address> 91</body> 92</html> 93