Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 956 Categories, Downloaded 50.131.748 Times

ProGuard 3.9 / 4.0 Beta

  Date Added: March 17, 2010  |  Visits: 1.622

ProGuard 3.9 / 4.0

Report Broken Link
Printer Friendly Version


Product Homepage
Download (108 downloads)



ProGuard is a free Java class file shrinker, optimizer, and obfuscator. ProGuard project can detect and remove unused classes, fields, methods, and attributes. It can then optimize bytecode and remove unused instructions. Finally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer. More compact jar files also means smaller storage requirements, faster transfer of applications across networks, faster loading, and smaller memory footprints. ProGuards 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 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 interface. It also comes with plugins for Ant and for the J2ME Wireless Toolkit. ProGuard is a Java class file shrinker, optimizer, and obfuscator. The shrinking step detects and removes unused classes, fields, methods, and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer. ProGuard can also be used to list unused fields and methods in an application, and to print out the internal structure of class files. ProGuard typically reads the input jars (or wars, ears, zips, or directories). It then shrinks, optimizes, and obfuscates them. It then writes the results to one or more output jars (or wars, ears, zips, or directories). The input jars can optionally contain resource files. ProGuard copies all non-class resource files from the input jars to the output jars. Their names and contents remain unchanged. ProGuard requires the library jars (or wars, ears, zips, or directories) of the input jars to be specified. It can then reconstruct class hierarchies and other class dependencies, which are necessary for proper shrinking, optimization, and obfuscation. 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 final, 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. Any classes or class members of your code that are created or invoked dynamically (that is, by name) have to be specified as entry points too. It is generally impossible to determine these cases automatically, but ProGuard will offer some suggestions if keeping some classes or class members appears necessary. For proper results, you should at least be somewhat familiar with the code that you are processing. ProGuard does handle Class.forName("SomeClass") and SomeClass.class constructs automatically. The referenced classes are preserved in the shrinking phase, and the string arguments are properly replaced in the obfuscation phase. With variable string arguments, it is generally impossible to determine their possible values (they might be read from a configuration file, for instance). However, as mentioned, ProGuard will note constructs like "(SomeClass)Class.forName(variable).newInstance()". These might be an indication that the class or interface SomeClass and/or its implementations may need to be preserved. You can then adapt your configuration accordingly. Whats New in 3.9 Stable Release: - This release fixes a number of bugs. - Notably, ".class" constructs compiled in Java 6 are now handled correctly. - The optimization step now avoids a possible division by 0 and correctly processes local variables with indices larger than 255. - The documentation and examples have been updated. Whats New in 4.0 Beta Development Release: - Added preverifier for Java 6 and Java Micro Edition, with new option -dontpreverify. - Added new option -target to modify java version of processed class files. - Made -keep options more orthogonal and flexible, with option modifiers allowshrinking, allowoptimization, and allowobfuscation. - Added support for configuration by means of annotations. - Improved shrinking of unused annotations. - Added check on modification times of input and output, to avoid unnecessary processing, with new option -forceprocessing. - Added new options -flattenpackagehierarchy and -repackageclasses (replacing -defaultpackage) to control obfuscation of packages names. - Added new options -adaptresourcefilenames and -adaptresourcefilecontents, with file filters, to update resource files corresponding to obfuscated class names. - Now respecting naming rule for nested class names (EnclosingClass$InnerClass) in obfuscation step, if InnerClasses attributes or EnclosingMethod attributes are being kept. - Added new inter-procedural optimizations: method inlining and propagation of constant fields, constant arguments, and constant return values. - Added optimized local variable allocation. - Added over 250 new peephole optimizations. - Improved making classes and class members public or protected. - Now printing notes on suspiciously unkept classes in parameters of specified methods. - Now printing notes for class names that dont seem to be fully qualified. - Added support for uppercase filename extensions. - Rewritten class file I/O code. - Updated documentation and examples.. ProGuard: java shrinker, optimizer, obfuscator, and preverifier

Requirements: No special requirements
Platforms: Linux
Keyword: Added Class Class File Classes Entry Points File Shrinker Jars Java Java Class Java Class File Methods Proguard Someclass
Users rating: 0/10

License: Freeware
USER REVIEWS
More Reviews or Write Review


PROGUARD 3.9 / 4.0 RELATED
Development Tools  -  XML Check 1.0
This class implements methods to check if a URL or file is well-formed XML. If not the class supplies methods to return the error message, line number and column number. If the source is well-formed the class provides methods to return the number...
 
Programming  -  extensions for linux 0.4
extensions is a simple plugin system inspired from setuptools entry points. It allows an application to define and/or use plugins. How to define a plugin A plugin can be any callable object . It has to be registered through...
20.48 KB  
Libraries  -  CAD::Drawing::IO::Split 0.26
CAD::Drawing::IO::Split is a Perl module that allows fast distributed text file methods. Requisite Plug-in Functions See CAD::Drawing::IO for a description of the plug-in architecture. check_type Returns true if $type is "split" or...
39.94 KB  
Programming  -  CGI::AppBuilder::Config 0.12
This class provides methods for reading and parsing configuration files. new (ifn => 'file.cfg', opt => 'hvS:') This is a inherited method from CGI::AppBuilder. See the same method in CGI::AppBuilder for more details.
10.24 KB  
Virus Removers  -  TrustPort Total Protection 2011 11.0.0.4606
TrustPort Total Protection 2011 protects the computer from viruses and spyware at all entry points. All electronic mail and websites are examined in order to detect dangerous or unwanted content. It enables the reliable protection of sensitive...
 
Virus Removers  -  TrustPort Total Protection 2012 12.0.0.4845
TrustPort Total Protection protects the computer from viruses and spyware at all entry points. All electronic mail and websites are examined in order to detect dangerous or unwanted content. TrustPort Total Protection enables the reliable...
 
Scientific and Engineering  -  com.wis.math.alg.Matrix 1.0
Implements the behaviours of the Matrix Class -- provides methods for matrix manipulation. usage:var inst:Matrage:
 
Network & Internet  -  SQL Inject Me 0.4.5
SQL Inject Me is a Firefox extension used to test for SQL Injection vulnerabilities. The tool works by submitting your HTML forms and substituting the form value with strings that are representative of an SQL Injection attack.
133.12 KB  
Dictionaries  -  Bean Bowl 1.0
Bean Bowl is the a fun and useful Java lab, allowing you to play around with Java classes and objects using direct manipulation techniques instead of writing long main() methods. Use it either as an application or as a GUI component framework for...
899.18 KB  
Libraries  -  Class::DispatchToAll 0.11
Class::DispatchToAll Perl module can dispatch a method call to all inherited methods. SYNOPSIS package My::Class; our @ISA=qw(SomeClass SomeOtherClass More::Classes); use Class::DispatchToAll qw(dispatch_to_all); my $self=bless...
5.12 KB  
NEW DOWNLOADS IN PROGRAMMING, CODE MANAGEMENT TOOLS
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  Math::GMPf 0.29
Math::GMPf - perl interface to the GMP library's floating point (mpf) functions.
30.72 KB  
Programming  -  Net::Wire10 1.08
Net::Wire10 is a Pure Perl connector that talks to Sphinx, MySQL and Drizzle servers. Net::Wire10 implements the low-level network protocol, alias the MySQL wire protocol version 10, necessary for talking to one of the aforementioned...
30.72 KB  
Programming  -  logilab-common 0.56.2
a bunch of modules providing low level functionnalities shared among some python projects devel Please note that some of the modules have some extra dependencies. For instance, logilab.common.db will require a db-api 2.0 compliant...
174.08 KB  
Programming  -  OpenSSL for linux 1.0.0a
The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a...
3.83 MB  
Code Management Tools  -  BitNami Review Board Stack 1.6.9-1 (linux)
Review Board is a powerful web-based code review tool that offers developers an easy way to handle code reviews. It scales well from small projects to large companies and offers a variety of tools to take much of the stress and time out of the...
75.97 MB  
Code Management Tools  -  Common Text Transformation Library 2.08
Common Text Transformation Library, CTTL for short, is a set of C++ classes and functions to understand and modify text data. Common Text Transformation Library implementation is based on STL classes and algorithms. Concept of a substring plays...
163.84 KB  
Code Management Tools  -  GMP compiler 1.0.0
GMP compiler tool simplifies the use of GMP, the GNU multiple precision library. It scans a C source file for specially marked GMPS arithmetic expressions and replaces them with plain C. The abbreviation gmpc stands for GMP compiler, or...
276.48 KB  
Code Management Tools  -  phpCodeGenie 3.0.2
phpCodeGenie (PCG) is a code generator for database driven applications. PCG can generate entire working basic database driven applications for you. PCG can generate code from different databases. The database servers it can talk to via ADODB...
1.4 MB  
Code Management Tools  -  idioskopos 0.4.1
idioskopos (Greek: idio- inward, within, private; -skopos look, aim, target) is a C++ library that simplifies (hopefully) the addition of object reflection and introspection. There are numerous libraries that provide object introspection, but...
604.16 KB