<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-style-type" content="text/css">
<meta name="author" content="Eric Lafortune">
<meta name="description" content="ProGuard: java shrinker, optimizer, obfuscator, and preverifier">
<meta name="keywords" content="java obfuscator, optimizer, shrinker, preverfier">
<link rel="stylesheet" type="text/css" href="style.css">
<title>ProGuard Main</title>
<script type="text/javascript" language="JavaScript">
<!--
if (window.self==window.top)
  window.top.location.replace("index.html#"+window.location.pathname+window.location.hash);
else {
  if (window.top.location.hash!="")
    window.top.location.hash="";
}
//-->
</script>
</head>
<body>

<h2>Main</h2>

<p class="intro">
<b>ProGuard</b> 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.
</p>
Some uses of <b>ProGuard</b> are:
<ul>

<li>Creating more compact code, for smaller code archives, faster transfer
    across networks, faster loading, and smaller memory footprints.</li>

<li>Making programs and libraries harder to reverse-engineer.</li>

<li>Listing dead code, so it can be removed from the source code.</li>

<li>Retargeting and preverifying existing class files for Java 6, to take full
    advantage of Java 6's faster class loading.</li>

</ul>
<p>
<b>ProGuard</b>'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.
The user manual explains all available options and shows examples of this
powerful configuration style.
<p>
<b>ProGuard</b> 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.
<p>
<b>ProGuard</b> is a command-line tool with an optional graphical user
interface. It also comes with plugins for Ant and for the JME Wireless
Toolkit.
<p>
<p class="intro">
<b>ProGuard</b> is being used in various development contexts, ranging from
small Android apps to large Java applications and libraries. Its user base is
continuing to grow at a fast pace. In order to better manage the many
questions and requests, we are now providing professional support at
<a target="_top" href="http://www.saikoa.com/proguard/support">Saikoa</a>.
</p>
The following sections provide more detailed information:
<ul>
<li><a href="main.html">Main</a>: this overview page.</li>
<li><a href="results.html">Results</a>: some results obtained with
    <b>ProGuard</b>, including timings and memory usage.</li>
<li><a href="FAQ.html">FAQ</a>: answers to some Frequently Asked Questions.</li>
<li><a href="manual/index.html">Manual</a>: the complete <b>ProGuard</b> user
    manual, with examples and troubleshooting tips.</li>
<li><a href="quality.html">Quality</a>: a discussion of the (excellent) quality
    of <b>ProGuard</b>'s code.</li>
<li><a href="screenshots.html">Screenshots</a>: some impressions of what            <b>ProGuard</b> looks like.</li>
<li><a href="testimonials.html">Testimonials</a>: what users think of
    <b>ProGuard</b>.</li>
<li><a href="license.html">License</a>: <b>ProGuard</b> is free, under a GPL
    license.</li>
<li><a href="downloads.html">Downloads</a>: download the <b>ProGuard</b>
    package yourself.</li>
<li><a href="feedback.html">Feedback</a>: tell me about your experiences, or
    learn from others on our forums.</li>
<li><a href="acknowledgements.html">Acknowledgements</a>: people who have been
    helpful.</li>
<li><a href="alternatives.html">Alternatives</a>: other Java obfuscators,
    optimizers, and shrinkers.</li>
</ul>

<hr />
<noscript><div><a target="_top" href="index.html" class="button">Show menu</a></div></noscript>
<address>
Copyright &copy; 2002-2011
<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a>.
</address>
</body>
</html>
