User: Password:
   Keep me logged in.
Register  |  I forgot my password

Login  |  Register

Efficient Java Tools  - Listing Details
Statisticsw
  • Active Links: 58
  • Pending Links: 6
  • Todays Links: 0
  • Active Articles: 6
  • Pending Articles: 0
  • Todays Articles: 0
  • Total Categories: 33
  • Sub Categories: 20

ID:33
Title:ProGuard
Pagerank:5
Short Description:
Listing Thumbnail

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.

Description:

Feature 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 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'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 * extends java.applet.Applet

ProGuard is a command-line tool with an optional graphical user interface. It also comes with plugins for Ant and for the JME Wireless Toolkit. ProGuard is probably the most popular java shrinker, optimizer, and obfuscator world-wide. It is being used by developers at companies and organizations like Sun, IBM, HP, Siemens, Nokia, Google, and NATO. It is the default tool in many development environments like Sun's Wireless Toolkit, Netbeans, EclipseME, and more.

Benefits are:

ProGuard typically reads the input jars (or wars, ears, zips, or directories). It then shrinks, optimizes, obfuscates, and preverifies them. Optionally, multiple optimization passes can be performed, each typically followed by another shrinking step. ProGuard writes the processed results to one or more output jars (or wars, ears, zips, or directories). The input may contain resource files, whose names and contents can optionally be updated to reflect the obfuscated class names. ProGuard requires the library jars (or wars, ears, zips, or directories) of the input jars to be specified. These are essentially the libraries that you would need for compiling the code. ProGuard uses them to reconstruct the class dependencies that are necessary for proper processing. The library jars themselves always remain unchanged. You should still put them in the class path of your final application.

In order to determine which code has to be preserved and which code can be discarded or obfuscated, you have to specify one or more entry points to your code. These entry points are typically classes with main methods, applets, midlets, etc.

  • In the shrinking step, ProGuard starts from these seeds and recursively determines which classes and class members are used. All other classes and class members are discarded.
  • In the optimization step, ProGuard further optimizes the code. Among other optimizations, classes and methods that are not entry points can be made private, static, or final, unused parameters can be removed, and some methods may be inlined.
  • In the obfuscation step, ProGuard renames classes and class members that are not entry points. In this entire process, keeping the entry points ensures that they can still be accessed by their original names.
  • The preverification step is the only step that doesn't have to know the entry points.
Category:Code Obfuscators and Protectors
Link Owner:alex
Date Added:November 08, 2009 08:26:22 PM
Number Hits:11
URL:    http://proguard.sourceforge.net/
Ratings
You must be logged in to leave a rating.
Average rating: (0 votes)
Reviews

No Reviews Yet.


You must be logged in to leave a Comment.
 
Bookmark Me
Latest articles
Java Licensing with Agilis
Agilis provides secure, flexible Java protection solutions to software vendors worldwide. Capabilities include Internet-based product activation on connected and disconnected systems, intranet or Internet-based floating licensing, node-locked licensing, named-user licensing, feature configuration, custom licensing, server licensing, trial licensing, subscription licensing, usage-based licensing, licensing via resellers or OEMs, revocable licensing, license reporting, user compliance management, backoffice integration and more.

FireStorm/DAO: What is DAO Design Pattern?
The Data Access Object (DAO) design pattern provides a technique for separating object persistence and data access logic from any particular persistence mechanism or API. There are clear benefits to this approach from an architectural perspective.

CA Plex: what is it?
Today’s business climate requires organizations to have business applications that help improve customer service, reduce costs, increase profits, get to market faster and respond more rapidly to competitive challenges. CA Plex provides a single, integrated environment that enables both traditional and SOA-based solutions for development. CA Plex uses building blocks known as patterns to help your development teams create and maintain large-scale business applications for multiple platforms — Windows/.NET, Java/J2EE or the IBM Power Systems/IBM i.

JCover Code Coverage: important to understand!
Why is coverage analysis important? Coverage analysis has the following benefits: * We can determine if our test suite is adequate. A test suite that achieves 65% statement coverage is hardly adequate. We cannot be confident of our product's quality with this much coverage. This figure prompts us to enhance the test suite. * We can identify redundant test cases that are not useful either in increasing code coverage or in finding new bugs. Fine tuning a test suite has immense benefits during regression testing. * We can find out if there are regions of code that cannot be exercised at all, and hence can be cleaned up. We sometimes find that an application has code to support a feature that was discontinued in an earlier release of the product! Although test cases are normally generated from the specification, coverage analysis helps us in identifying areas that require further test focus.

Codign CoView: JUnit Test Generation
Unit testing and coding go together like peanut butter and jelly. Each good by themself, but together? Now that's a good sandwich! Now you can benefit by easily creating the right JUnit test the first time. CoView provides a solution that makes sense, is unique and completely understandable. And it only takes 3 steps to have a complete set of JUnit tests for each of your classes.