proguard

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Development » proguard 
ProGuard Obfuscators
License:GNU General Public License (GPL)
URL:http://proguard.sourceforge.net/
Description:ProGuard is a free Java class file shrinker and obfuscator.
Package NameComment
proguard This package contains the main ProGuard application. ProGuard can read jar files, shrink and obfuscate them, and write out the resulting jar file.
proguard.annotation
proguard.ant This package contains the Ant task for ProGuard.
proguard.classfile This package contains classes to represent the various elements of class files.

A class file is represented by the {@link proguard.classfile.ClassFile ClassFile} interface. This interface currently has two alternative representations:

  • {@link ProgramClassFile ProgramClassFile}: a complete representation that can be read, modified, and written back.
  • {@link LibraryClassFile LibraryClassFile}: an incomplete representation that can be only be read. It is however more compact than ProgramClassFile, and sufficient for analyzing class files from library jars.
proguard.classfile.attribute This package contains classes to represent the attributes inside class files.
proguard.classfile.attribute.annotation This package contains classes to represent the annotation attributes inside class files.
proguard.classfile.attribute.annotation.visitor This package contains visitors for annotation attributes and their components.
proguard.classfile.attribute.preverification
proguard.classfile.attribute.preverification.visitor
proguard.classfile.attribute.visitor This package contains visitors for attributes and their components.
proguard.classfile.constant
proguard.classfile.constant.visitor This package contains visitors for class constants.
proguard.classfile.editor This package contains visitors to edit byte code.
proguard.classfile.instruction This package contains classes to represent Java bytecode instructions.

Not every instruction currently has its own class. Only groups of instructions that refer to the constant pool get their own representations.

While the package is sufficient for the current needs of the ProGuard application, it may very well be reorganised and extended in the future.

proguard.classfile.instruction.visitor This package contains visitors for instructions.
proguard.classfile.io This package contains classes for reading and writing class files.
proguard.classfile.util This package contains utility classes for processing class files.
proguard.classfile.visitor This package contains interfaces and classes for processing class files from the {@link proguard.classfile proguard.classfile} package using the visitor pattern. Cfr., for instance, "Design Patterns, Elements of Reusable OO Software", by Gamma, Helm, Johnson, and Vlissider.

Why the visitor pattern? Class files frequently contain lists of elements of various mixed types: class items, constant pool entries, attributes,... These lists and types are largely fixed; they won't change much in future releases of the Java class file specifications. On the other hand, the kinds of operations that we may wish to perform on the class files may change and expand. We want to separate the objects and the operations performed upon them. This is a good place to use the visitor pattern.

Visitor interfaces avoid having to do series of instanceof tests on the elements of a list, followed by type casts and the proper operations. Every list element is a visitor accepter. When its accept method is called by a visitor, it calls its corresponding visitX method in the visitor, passing itself as an argument. This technique is called double-dispatch.

As already mentioned, the main advantage is avoiding lots of instanceof tests and type casts. Also, implementing a visitor interface ensures you're handling all possible visitor accepter types. Each type has its own method, which you simply have to implement.

A disadvantage is that the visitor methods always get the same names, specified by the visitor interface. These names aren't descriptive at all, making code harder to read. It's the visitor classes that describe the operations now.

Also, the visitor methods always have the same parameters and return values, as specified by the visitor interfaces. Passing additional parameters is done by means of extra fields in the visitor, which is somewhat of a kludge.

Because objects (the visitor accepters) and the operations performed upon them (the visitors) are now separated, it becomes harder to associate some state with the objects. For convenience, we always provide an extra visitor info field in visitor accepters, in which visitors can put any temporary information they want.

proguard.evaluation
proguard.evaluation.value This package contains classes that represent partial evaluation values.
proguard.gui This package contains a GUI for ProGuard and ReTrace.
proguard.gui.splash This package contains a library for creating splash screens and animations with text, graphical elements, and some special effects.
proguard.io This package contains classes to read and write files, optionally wrapped in jars, wars, ears, zips, directories,...
proguard.obfuscate This package contains classes to perform obfuscation of class files.
proguard.optimize This package contains visitors that assist with various optimizations of byte code.
proguard.optimize.evaluation This package contains visitors that perform partial evaluation and subsequent optimizations on byte code.
proguard.optimize.info This package contains classes to collect additional information about classes and class members, which can then be used for optimization.
proguard.optimize.peephole This package contains visitors that perform various peephole optimizations.
proguard.preverify
proguard.retrace This package contains the main ReTrace application. ReTrace can de-obfuscate stack traces of obfuscated programs.
proguard.shrink This package contains classes to perform shrinking of class files.
proguard.util This package contains utility classes for regular expression matching,...
proguard.wtk This package contains the J2ME Wireless Toolkit plug-in for ProGuard.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.