*******************************************************************************
*******************************************************************************

                        PFP Software GmbH
                         Proudly Presents
                              DeJAVA

 
                   Version 1.12 BETA EVALUATION


        Note: This program is currently in BETA TESTING, and is NOT yet of
              release quality. While we have made every effort to produce
              software that is peaceful, you must use it at your own risk.

              Please report bugs to 100435,455@CompuServe.COM. Also, feel
              free to submit ideas for enhancements for inclusion in the
              retail version of this product.

*******************************************************************************
*******************************************************************************


[ --- What is DeJAVA? --- ]

DeJAVA is a utility that allows JAVA developers to disassemble byte code files.
It is a replacement for the JAVAP utility that ships with Suns JDK. Like JAVAP
it is a 32-Bit console application which does not include a graphical user 
interface. It is designed to run under Microsoft Windows 95 or Microsoft 
Windows NT.

Main features include:

  - Full support of debug information including:
    - Java source text in disassembly listing
    - Local variables
  - All references are resolved (no 'mangled' names!)
  - Static initializers
  - Nicely formatted output

DeJAVA was initially developed for internal use at PFP, while we develop our 
upcoming JAVA compiler technology. If you would like more information on that
subject, or if you want licensing information, or if you want to be included 
in our mailing list, please send an eMail to:

        100435,455@CompuServe.COM


[ --- Beta Program Information / License agreement --- ]

1. PFP Software GmbH, Moorenplatz 1, 40225 Duesseldorf, Germany ("PFP") 
grants to you a non-exclusive, non-sublicensable, license to use this 
Beta version of the Java disassembler DeJAVA (the "Software"), 
in binary executable form for evaluation and trial use purposes only.  

THIS SOFTWARE CONTAINS CODE THAT DISABLES MOST OF ITS FEATURES AFTER 
DECEMBER 31, 1996.

2. PFP MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE, FOR 
ANY PURPOSE. THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT EXPRESS OR IMPLIED 
WARRANTIES, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
PARTICULAR PURPOSE OR NONINFRINGEMENT. THIS SOFTWARE IS PROVIDED GRATUITOUSLY 
AND, ACCORDINGLY, PFP SHALL NOT BE LIABLE UNDER ANY THEORY OR ANY DAMAGES 
SUFFERED BY YOU OR ANY USER OF THE SOFTWARE. 

3. While PFP intends to distribute a commercial release of the Software, 
PFP reserves the right at any time not to release a commercial release of 
the Software or, if released, to alter prices, features, specifications, 
capabilities, functions, licensing terms, release dates, general 
availability or other characteristics of the commercial release.

4. Title, ownership rights, and intellectual property rights in and to
the Software shall remain in PFP and/or its suppliers. You agree
to abide by the applicable copyright law and all other applicable laws 
of Germany including, but not limited to, export control laws. You
acknowledge that the Software in source code form remains a
confidential trade secret of PFP and/or its suppliers and therefore 
you agree not to modify the Software or attempt to decipher,
decompile, disassemble or reverse engineer the Software, except to the
extent applicable laws specifically prohibit such restriction.


[ --- How do I use DeJAVA? --- ]

DeJAVA is a commandline utility. You call it with the name of the class to be 
disassembled. Include any other commandline switches BEFORE the class name.
DeJAVA produces all output on the standard output device. You can simply 
redirect DeJAVAs output by using the redirection characters <, >, >>.

Example:
DeJAVA MyClass > MyClass.dis

This places DeJAVAs disassembly of the class 'MyClass' in the file 
MyClass.dis in the current directory.



Supported commandline switches:


-cl ClassPath         [change classpath]

Defines where DeJAVA looks for your JAVA classes. Without that switch DeJAVA
looks in all directories specified in the CLASSPATH environment variable, than
in the current directory. If you set the -cl switch, DeJAVA will ignore the
CLASSPATH environment variable and search the directories specified on the
commandline. Multiple directories must be separated by a semicolon.

Examples:

DeJAVA -cl c:\java\bin\Classes.zip MyClass.class
DeJAVA -cl c:\java\bin\Classes.zip MyClass

Disassemble the class 'MyClass'. Look for classes stored in a single 
zip-file c:\java\bin\Classes.zip and in the current directory.


DeJAVA -cl c:\java\bin java/lang/Object
DeJAVA -cl c:\java\bin \Java\lang\Object.class

Disassemble the class 'java/lang/Object'. Look for classes in all zip-files 
found in the directory c:\java\bin or any subdirectory ***AND*** in additional 
class-files (*.class) found in that directory or any subdirectory. 
Search the current directory as well.



-i                    [info only]

If specified, DeJAVA will not disassemble the byte code found in a class file,
but only display all field and method declarations along with local variable
declarations.

Example:
DeJAVA -cl c:\java\bin -i java/lang/Object


 

-s                    [include super classes]

Includes the disassembly of all super classes along with the disassembly of the
base class.


Example:
DeJAVA -cl c:\java\bin -i -s MyClass.class



The original distribution archive contains some sample files which demonstrate
the usage of DeJAVA:

HelloWorldApp.java	A simple Java source file file
HelloWorldApp.class     A compiled version of HelloWorldApp.java
HelloWorldApp.dis       DeJAVAs disassembly of HelloWorldApp.java (ASCII text)

d.bat			A simple batch file to disassemble HelloWorld.java
c.bat                   A simple batch file to compile HelloWorld.java

For best results, compile your JAVA source files with debug informations (-g) 
and include the source file in the same directory as the byte code file.


[ --- Revision history --- ]

BETA 1.02
    * First public review of DeJAVA.
    * Fixed LOOKUPSWITCH/TABLESWITCH bug.

BETA 1.03
    * Fixed ANEWARRAY/MULTIANEWARRAY bug.

BETA 1.04
    * Fixed bug with type 0 exception handlers

BETA 1.05
    * Fixed bug with RET instructions
    * Fixed bug with long field names

BETA 1.10
    * Major redesign
    * Support of class databases in zip-files (special thanks to D. Hoeffner)
    * Support of multiple directories in classpath
    * Improved error handling

BETA 1.11
    * Improved error handling for zip-files
    * Fixed bug with class files without source file info

BETA 1.12
    * Fixed bugs in class loader
     
[ --- Known Limitations --- ]

None. 


[ --- What if I find a bug? --- ]

The best way to test an application is to give it to a lot of people to try.
Although the program seems to work fine as far as we've tested, there may be
some conditions under which it might fail completely!

Since this program is still in development, we expect that bugs do exists. If
you discover a problem with the application, please report it to:

        100435,455@CompuServe.COM

To assist us in finding the source of your problem, we need information on what
input DeJAVA was not able to handle properly. The best for us to determine what 
happened is for you to send us the smallest possible offending section of code 
(we do NOT want the whole project!!!).

We realize that the portion of code in question may be confidential in nature.
If for this (or another) reason you cannot mail us the offending code section,
please describe what types of constructs you used in your source where the 
error might have happened.


Thanks again for downloading DeJAVA!

Java is a registered trademark of Sun Microsystems, Inc.