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

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

Serving Software Downloads in 976 Categories, Downloaded 29.542.334 Times

ProGuard 3.9 / 4.0 Beta

  Date Added: March 17, 2010  |  Visits: 1.178

ProGuard 3.9 / 4.0

Report Broken Link
Printer Friendly Version

Product Homepage
Download (90 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
More Reviews or Write Review

Libraries  -  java data object persistence in file 3.1.0b1
Make java data object persistent in file system whithout database. Between serialization in file and database. Cache your data model in file. Manage more objects than memory can contains
1.17 MB  
Libraries  -  Osalp 0.7.3
Osalp is a project designed to implement a world class set of classes in C++ that will handle all of the audio functions one would like. It is designed to be multi-platform with UNIX based platforms as the base. This project is still in the beta...
1024 KB  
Libraries  -  DBIx::Class::Schema::Loader::RelBuilder 0.03007
DBIx::Class::Schema::Loader::RelBuilder is a Perl module that builds relationships for DBIx::Class::Schema::Loader. This class builds relationships for DBIx::Class::Schema::Loader. This is module is not (yet) for external use. METHODS new...
32.77 KB  
Libraries  -  Template::Plugin::Java 0.4
Template::Plugin::Java is a Perl module that can generate Java Classes from XML description files and templates. SYNOPSIS From an xml file such as: value2 10<...
18.43 KB  
Development Tools  -  XSL template for JDBC Code generation 1.0
Supply an Xml file with the details of the table, and the Java Class to generate for dealing with that table. An XSL processor, is used to read the template and xml files, and output a Java source file.There are many ways to arrange tables to...
Libraries  -  Exception::Class 1.23
Exception::Class is a Perl module that allows you to declare real exception classes in Perl. SYNOPSIS use Exception::Class ( MyException, AnotherException => { isa => MyException }, YetAnotherException => { isa => AnotherException,...
16.38 KB  
Libraries  -  File::AnySpec 0.06
File::AnySpec is a Perl module to perform operations on foreign (remote) file names. SYNOPSIS # Subroutine Interface # use File::AnySpec qw(fspec2fspec pm2fspec os2fspec fspec2os fspec_glob fspec2pm); $file = fspec2fspec($from_fspec,...
44.03 KB  
Development Tools  -  Connecting to Interactive Brokers via ActiveX API 1.0
A collection of classes that shows how to wrap IB API inside a class and use event handlers.For more details see
10 KB  
Libraries  -  DBIx::Class::FormTools 0.000004
DBIx::Class::FormTools is a utility module for building forms with multiple related DBIx::Class objects. SYNOPSIS In the examples I use 3 objects, a Film, an Actor and a Role. Role is a many to many relation between Film and Actor. package...
9.22 KB  
Libraries  -  Class::DBI::AutoIncrement 0.05
Class::DBI::AutoIncrement is a Perl module to emulate auto-incrementing columns on Class::DBI subclasses. SYNOPSIS Lets assume you have a project making use of Class::DBI. You have implemented a subclass of Class::DBI called MyProject::DBI...
8.19 KB  
Programming  -  FLEX-db Digital Asset Manager 3.0.9
FLEX-db - an enterprise Digital Asset Manager (DAM). It ingests and links metadata with files, creates thumbnails, and processes files using business rules. FLEX-db has a JSP client, Java app server for file input and output and an EJB metadata...
21.57 MB  
Programming  -  Libicom 0.9.0
The libicom library is a character based dynamicly linked library for Linux. It is used to remotely control the Icom IC-R8500 wide band receiver via an RS232 link. All call and return parameters to the control functions are character string based....
20.48 KB  
Programming  -  dotdesktop 0.3
Dotdesktop library provides ability to parse desktop entry file and access the information in a convenient way. Desktop entry file format is defined by, it is used to describe information about an application such as the name and...
327.68 KB  
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  -  libyasl 0.2
Libyasl is a C++ class library to easily realize TCP/UDP/Multicast clientsand servers in IPv4 and IPv6 environments under GNU/Linux systems.
143.36 KB  
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