169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<html>
269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<HEAD>
369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   <TITLE>Read Me First</TITLE>
569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</HEAD>
669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<body>
769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h1>Javassist version 3</h1>
969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>Copyright (C) 1999-2010 by Shigeru Chiba, All rights reserved.</h3>
1169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br></p>
1369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
1469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation
1569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalsimple.  It is a class library for editing bytecodes in Java;
1669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalit enables Java programs to define a new class at runtime and to
1769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalmodify a class file when the JVM loads it.  Unlike other similar
1869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalbytecode editors, Javassist provides two levels of API: source level
1969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaland bytecode level.  If the users use the source-level API, they can
2069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaledit a class file without knowledge of the specifications of the Java
2169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalbytecode.  The whole API is designed with only the vocabulary of the
2269e17611504376e4d4603925f8528dfc890fd2c6Luis SigalJava language.  You can even specify inserted bytecode in the form of
2369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalsource text; Javassist compiles it on the fly.  On the other hand, the
2469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalbytecode-level API allows the users to directly edit a class file as
2569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalother editors.
2669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
2769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
2869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
2969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>Files</h2>
3069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
3169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
3269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<table>
3369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tr>
3469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td><li><tt><a href="License.html">License.html</a></tt></td>
3569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td>License file
3669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal(Also see the <a href="#copyright">copyright notices</a> below)</td>
3769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</tr>
3869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
3969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tr>
4069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td><li><tt><a href="tutorial/tutorial.html">tutorial/tutorial.html</a></tt></td>
4169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td>Tutorial</td>
4269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</tr>
4369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
4469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tr>
4569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td><li><tt>/javassist.jar</tt></td>
4669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td>The Javassist jar file (class files)</td>
4769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</tr>
4869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
4969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tr>
5069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td><li><tt>/src/main</tt></td>
5169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td>The source files</td>
5269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</tr>
5369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
5469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tr>
5569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td><li><tt><a href="html/index.html">html/index.html</a></tt></td>
5669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td>The top page of the Javassist API document.</td>
5769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</tr>
5869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
5969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tr>
6069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td><li><tt>/sample/</tt></td>
6169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<td>Sample programs</td>
6269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</tr>
6369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</table>
6469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
6569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
6669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
6769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
6869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>How to run sample programs</h2>
6969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
7069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>JDK 1.4 or later is needed.
7169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
7269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>0. If you have Apache Ant</h3>
7369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
7469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Run the sample-all task.
7569e17611504376e4d4603925f8528dfc890fd2c6Luis SigalOtherwise, follow the instructions below.
7669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
7769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>1. Move to the directory where this Readme.html file is located.</h3>
7869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
7969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>In the following instructions, we assume that the javassist.jar
8069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalfile is included in the class path.
8169e17611504376e4d4603925f8528dfc890fd2c6Luis SigalFor example, the javac and java commands must receive
8269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalthe following <code>classpath</code> option:
8369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
8469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
8569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal-classpath ".:javassist.jar"
8669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
8769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
8869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>If the operating system is Windows, the path
8969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalseparator must be not <code>:</code> (colon) but
9069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<code>;</code> (semicolon).  The java command can receive
9169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalthe <code>-cp</code> option
9269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalas well as <code>-classpath</code>.
9369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
9469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>If you don't want to use the class-path option, you can make
9569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<code>javassist.jar</code> included in the <code>CLASSPATH</code>
9669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalenvironment:
9769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
9869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
9969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalexport CLASSPATH=.:javassist.jar
10069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
10169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
10269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>or if the operating system is Windows:
10369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
10469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
10569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalset CLASSPATH=.;javassist.jar
10669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
10769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
10869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
10969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Otherwise, you can copy <tt>javassist.jar</tt> to the directory
11069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
11169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>&lt;<i>java-home</i>&gt;<tt>/jre/lib/ext</tt>.</ul>
11269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
11369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>&lt;<i>java-home</i>&gt; depends on the system.  It is usually
11469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tt>/usr/local/java</tt>, <tt>c:\j2sdk1.4\</tt>, etc.
11569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
11669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>2. sample/Test.java</h3>
11769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
11869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   This is a very simple program using Javassist.
11969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
12069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   To run, type the commands:
12169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
12269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
12369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/Test.java
12469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.Test
12569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
12669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
12769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   For more details, see <a type="text/plain" href="sample/Test.java">sample/Test.java</a>
12869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
12969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>3. sample/reflect/*.java</h3>
13069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
13169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   This is the "verbose metaobject" example well known in reflective
13269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   programming.  This program dynamically attaches a metaobject to
13369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   a Person object.  The metaobject prints a message if a method
13469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   is called on the Person object.
13569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
13669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   To run, type the commands:
13769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
13869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
13969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/reflect/*.java
14069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java javassist.tools.reflect.Loader sample.reflect.Main Joe
14169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
14269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
14369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Compare this result with that of the regular execution without reflection:
14469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
14569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>% java sample.reflect.Person Joe</pre></ul>
14669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
14769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   For more details, see <a type="text/plain" href="sample/reflect/Main.java">sample/reflect/Main.java</a>
14869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
14969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   Furthermore, the Person class can be statically modified so that
15069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   all the Person objects become reflective without sample.reflect.Main.
15169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   To do this, type the commands:
15269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
15369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
15469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java javassist.tools.reflect.Compiler sample.reflect.Person -m sample.reflect.VerboseMetaobj
15569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
15669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
15769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   Then,
15869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
15969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.reflect.Person Joe
16069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
16169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
16269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>4. sample/duplicate/*.java</h3>
16369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
16469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   This is another example of reflective programming.
16569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
16669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   To run, type the commands:
16769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
16869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
16969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/duplicate/*.java
17069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.duplicate.Main
17169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
17269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
17369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Compare this result with that of the regular execution without reflection:
17469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
17569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>% java sample.duplicate.Viewer</pre></ul>
17669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
17769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>For more details, see
17869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<a type="text/plain" href="sample/duplicate/Main.java">sample/duplicate/Main.java</a>
17969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
18069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>5. sample/vector/*.java</h3>
18169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
18269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>This example shows the use of Javassit for producing a class representing
18369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigala vector of a given type at compile time.
18469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
18569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   To run, type the commands:
18669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
18769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/vector/*.java
18869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.preproc.Compiler sample/vector/Test.j
18969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/vector/Test.java
19069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.vector.Test
19169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
19269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
19369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Note: <code>javassist.jar</code> is unnecessary to compile and execute
19469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<code>sample/vector/Test.java</code>.
19569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
19669e17611504376e4d4603925f8528dfc890fd2c6Luis SigalFor more details, see
19769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<a type="text/plain" href="sample/vector/Test.j">sample/vector/Test.j</a>
19869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaland <a type="text/plain" href="sample/vector/VectorAssistant.java">sample/vector/VectorAssistant.java</a>
19969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
20069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>6. sample/rmi/*.java</h3>
20169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
20269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   This demonstrates the javassist.rmi package.
20369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
20469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   To run, type the commands:
20569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
20669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/rmi/*.java
20769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.rmi.Counter 5001
20869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
20969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
21069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   The second line starts a web server listening to port 5001.
21169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
21269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   Then, open <a href="sample/rmi/webdemo.html">sample/rmi/webdemo.html</a>
21369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalwith a web browser running
21469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   on the local host.  (<tt>webdemo.html</tt> trys to fetch an applet from
21569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   <tt>http://localhost:5001/</tt>, which is the web server we started above.)
21669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
21769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   Otherwise, run sample.rmi.CountApplet as an application:
21869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
21969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
22069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java javassist.web.Viewer localhost 5001 sample.rmi.CountApplet
22169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
22269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
22369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>7. sample/evolve/*.java</h3>
22469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
22569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   This is a demonstration of the class evolution mechanism implemented
22669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   with Javassist.  This mechanism enables a Java program to reload an
22769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   existing class file under some restriction.
22869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
22969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   To run, type the commands:
23069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
23169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac sample/evolve/*.java
23269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java sample.evolve.DemoLoader 5003
23369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
23469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
23569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   The second line starts a class loader DemoLoader, which runs a web
23669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   server DemoServer listening to port 5003.
23769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
23869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>   Then, open <a href="http://localhost:5003/demo.html">http://localhost:5003/demo.html</a> with a web browser running
23969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   on the local host.
24069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal(Or, see <a href="sample/evolve/start.html">sample/evolve/start.html</a>.)
24169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
24269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h3>8. sample/hotswap/*.java</h3>
24369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
24469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>This shows dynamic class reloading by the JPDA.  It needs JDK 1.4 or later.
24569e17611504376e4d4603925f8528dfc890fd2c6Luis SigalTo run, first type the following commands:
24669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
24769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
24869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% cd sample/hotswap
24969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac *.java
25069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% cd logging
25169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% javac *.java
25269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% cd ..
25369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
25469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
25569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>If your Java is 1.4, then type:
25669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
25769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
25869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 Test
25969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
26069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
26169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>If you are using Java 5, then type:
26269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
26369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
26469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 Test
26569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
26669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
26769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Note that the class path must include <code>JAVA_HOME/lib/tools.jar</code>.
26869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
26969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>Hints</h2>
27069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
27169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>To know the version number, type this command:
27269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
27369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul><pre>
27469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal% java -jar javassist.jar
27569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</pre></ul>
27669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
27769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Javassist provides a class file viewer for debugging.  For more details,
27869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalsee javassist.Dump.
27969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
28069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
28169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
28269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>Changes</h2>
28369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
28469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.14 on October 5, 2010
28569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
28669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
28769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>JIRA JASSIST-121, 123, 128, 129, 130, 131, 132.
28869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
28969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
29069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.13 on July 19, 2010
29169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
29269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
29369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>JIRA JASSIST-118, 119, 122, 124, 125.
29469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
29569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
29669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.12.1 on June 10, 2010
29769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
29869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.12 on April 16, 2010
29969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
30069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.11 on July 3, 2009
30169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
30269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>JIRA JASSIST-67, 68, 74, 75, 76, 77, 81, 83, 84, 85, 86, 87 were fixed.
30369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>Now javassist.bytecode.CodeIterator can insert a gap into
30469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	a large method body more than 32KB.  (JIRA JASSIST-79, 80)
30569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
30669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
30769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.10 on March 5, 2009
30869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
30969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
31069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>JIRA JASSIST-69, 70, 71 were fixed.
31169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
31269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
31369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.9 on October 9, 2008
31469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
31569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>ClassPool.makeClassIfNew(InputStream) was implemented.
31669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>CtNewMethod.wrapped(..) and CtNewConstructor.wrapped(..)
31769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	implicitly append a method like _added_m$0.
31869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	This method now has a synthetic attribute.
31969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>JIRA JASSIST-66 has been fixed.
32069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
32169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
32269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.8.1 on July 17, 2008
32369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
32469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>CtClass.rebuildClassFile() has been added.
32569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>A few bugs of javassist.bytecode.analysis have been fixed.
32669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	3.8.0 could not correctly deal with one letter class name
32769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	such as I and J.
32869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
32969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
33069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.8.0 on June 13, 2008
33169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
33269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>javassist.bytecode.analysis was implemented.
33369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  	<li>JASSIST-45, 47, 51, 54-57, 60, 62 were fixed.
33469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
33569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
33669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.7.1 on March 10, 2008
33769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
33869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>a bug of javassist.util.proxy has been fixed.
33969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
34069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
34169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.7 on January 20, 2008
34269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
34369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>Several minor bugs have been fixed.
34469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
34569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
34669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.6.0 on September 13, 2007
34769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
34869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.6.0.CR1 on July 27, 2007
34969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
35069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
35169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>The stack map table introduced since Java 6 has been supported.
35269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>CtClass#getDeclaredBehaviors() now returns a class initializer
35369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        as well as methods and constructors.
35469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>The default status of automatic pruning was made off.
35569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        Instead of pruning, this version of Javassist compresses
35669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        the data structure of a class file after toBytecode() is called.
35769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        The compressed class file is automatically decompressed when needed.
35869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        This saves memory space better than pruning.
35969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li><a href="http://jira.jboss.com/jira/browse/JASSIST-33">JIRA JASSIST-33</a> has been fixed.
36069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
36169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
36269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.5 on April 29, 2007
36369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
36469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>Various minor updates.
36569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
36669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
36769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.4 on November 17, 2006
36869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
36969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>A bug in CodeConverter#replaceFieldRead() and CodeConverter#replaceFieldWrite()
37069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	was fixed. <a href="http://jira.jboss.com/jira/browse/JBAOP-284">JBAOP-284</a>.
37169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
37269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>A synchronization bug and a performance bug in <code>javassist.util.proxy</code>
37369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    have been fixed
37469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    (<a href="http://jira.jboss.com/jira/browse/JASSIST-28">JASSIST-28</a>).
37569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    Now generated proxy classes are cached.  To turn the caching off,
37669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    set <code>ProxyFactory.useCache</code> to <code>false</code>.
37769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
37869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
37969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.3 on August 17, 2006
38069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
38169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>CtClass#toClass() and ClassPool#toClass() were modified to accept a
38269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <code>ProtectionDomain</code>
38369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    (<a href="http://jira.jboss.com/jira/browse/JASSIST-23">JASSIST-23</a>).
38469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    Now ClassPool#toClass(CtClass, ClassLoader) should not be overridden.  All
38569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    subclasses of ClassPool must override toClass(CtClass, ClassLoader,
38669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    ProtectionDomain).
38769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
38869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>CtClass#getAvailableAnnotations() etc. have been implemented.
38969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
39069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>A bug related to a way of dealing with a bridge method was fixed
39169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    (<a href="http://jira.jboss.com/jira/browse/HIBERNATE-37">HIBERNATE-37</a>).
39269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
39369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>javassist.scopedpool package was added.
39469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
39569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
39669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 3.2 on June 21, 2006
39769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
39869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
39969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	<li>The behavior of CtBehavior#getParameterAnnotations() has been changed.
40069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	It is now compatible to Java Reflection API
40169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	(<a href="http://jira.jboss.com/jira/browse/JASSIST-19">JASSIST-19</a>).
40269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
40369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
40469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.2.0.CR2 on May 9, 2006
40569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
40669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   <li>A bug of replace(String,ExprEditor) in javassist.expr.Expr has been fixed.
40769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Updated ProxyFactory getClassLoader to choose the javassit class loader
40869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   when the proxy superclass has a null class loader (a jdk/endorsed class)
40969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   (<a href='http://jira.jboss.com/jira/browse/JASSIST-18'>JASSIST-18</a>).
41069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Updated the throws clause of the javassist.util.proxy.MethodHandler
41169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   to be Throwable rather than Exception
41269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal   (<a href='http://jira.jboss.com/jira/browse/JASSIST-16'>JASSIST-16</a>).
41369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
41469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
41569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.2.0.CR1 on March 18, 2006
41669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
41769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Annotations enhancements to javassist.bytecode.MethodInfo.
41869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Allow a ClassPool to override the "guess" at the classloader to use.
41969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
42069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
42169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.1 on February 23, 2006
42269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
42369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
42469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>getFields(), getMethods(), and getConstructors() in CtClass
42569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    were changed to return non-private memebers instead of only
42669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    public members.
42769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>getEnclosingClass() in javassist.CtClass was renamed
42869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      to getEnclosingMethod().
42969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>getModifiers() was extended to return Modifier.STATIC if the class
43069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      is a static inner class.
43169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The return type of CtClass.stopPruning() was changed from void
43269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    to boolean.
43369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>toMethod() in javassist.CtConstructor has been implemented.
43469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>It includes new javassist.util.proxy package
43569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      similar to Enhancer of CGLIB.
43669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <p>
43769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The subpackages of Javassist were restructured.
43869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <ul>
43969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>javassist.tool package was renamed to javassist.tools.
44069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>HotSwapper was moved to javassist.util.
44169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>Several subpackages were moved to javassist.tools.
44269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    <li>javassist.preproc package was elminated and the source was
44369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        moved to the sample directory.
44469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  </ul>
44569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
44669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
44769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.1 RC2 on September 7, 2005
44869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
44969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
45069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>RC2 is released mainly for an administrative reason.
45169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>A few bugs have been fixed.
45269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
45369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
45469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.1 RC1 on August 29, 2005
45569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
45669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
45769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Better annotation supports.  See <code>CtClass.getAnnotations()</code>
45869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.tool.HotSwapper was added.
45969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.ClassPool.importPackage() was added.
46069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The compiler now accepts array initializers
46169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    (only one dimensional arrays).
46269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.Dump was moved to javassist.tool.Dump.
46369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Many bugs were fixed.
46469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
46569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
46669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.0 on January 18, 2005
46769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
46869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
46969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The compiler now supports synchronized statements and finally
47069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  clauses.
47169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>You can now remove a method and a field.
47269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
47369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
47469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.0 RC1 on September 13, 2004.
47569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
47669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
47769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.toClass() has been reimplemented.  The behavior has been
47869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      changed.
47969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.NewArray has been implemented.  It enables modifying
48069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      an expression for array creation.
48169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li><code>.class</code> notation has been supported.  The modified class
48269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      file needs javassist.runtime.DotClass at runtime.
48369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>a bug in <code>CtClass.getMethods()</code> has been fixed.
48469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The compiler supports a switch statement.
48569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
48669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
48769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 3.0 beta on May 18th, 2004.
48869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
48969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
49069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The ClassPool framework has been redesigned.
49169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal     <ul>
49269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal     <li>writeFile(), write(), ... in ClassPool have been moved to CtClass.
49369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal     <li>The design of javassist.Translator has been changed.
49469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal     </ul>
49569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
49669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.bytecode.annotation has been added for meta tags.
49769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.makeNestedClass() has been added.
49869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The methods declared in javassist.bytecode.InnerClassesAttribute
49969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      have been renamed a bit.
50069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Now local variables were made available in the source text passed to
50169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  CtBehavior.insertBefore(), MethodCall.replace(), etc.
50269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.main(), which prints the version number, has been added.
50369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>ClassPool.SimpleLoader has been public.
50469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.bytecode.DeprecatedAttribute has been added.
50569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.bytecode.LocalVariableAttribute has been added.
50669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.getURL() and javassist.ClassPath.find() has been added.
50769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtBehavior.insertAt() has been added.
50869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.detach() has been added.
50969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CodeAttribute.computeMaxStack() has been added.
51069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
51169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
51269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.6 in August, 2003.
51369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
51469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
51569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The behavior of CtClass.setSuperclass() was changed.
51669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      To obtain the previous behavior, call CtClass.replaceClassName().
51769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtConstructor.setBody() now works for class initializers.
51869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtNewMethod.delegator() now works for static methods.
51969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.Expr.indexOfBytecode() has been added.
52069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.Loader has been modified so that getPackage() returns
52169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      a package object.
52269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Now, the compiler can correctly compile a try statement and an
52369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      infinite while-loop.
52469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
52569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
52669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.5.1 in May, 2003.
52769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>Simple changes for integration with JBoss AOP
52869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
52969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Made ClassPool.get0 protected so that subclasses of ClassPool can call it.
53069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Moved all access to the class cache (the field ClassPool.classes) to a method called getCached(String classname).  This is so subclasses of ClassPool can override this behavior.
53169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
53269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
53369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.5 in May, 2003.
53469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>From this version, Javassist is part of the JBoss project.
53569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
53669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The license was changed from MPL to MPL/LGPL dual.
53769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>ClassPool.removeClassPath() and ClassPath.close() have been added.
53869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>ClassPool.makeClass(InputStream) has been added.
53969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.makeClassInitializer() has been added.
54069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.Expr has been changed to a public class.
54169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.Handler has been added.
54269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.MethodCall.isSuper() has been added.
54369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtMethod.isEmpty() and CtConstructor.isEmpty() have been added.
54469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>LoaderClassPath has been implemented.
54569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
54669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
54769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.4 in February, 2003.
54869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
54969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The compiler included in Javassist did not correctly work with
55069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	interface methods.  This bug was fixed.
55169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Now javassist.bytecode.Bytecode allows more than 255 local
55269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	variables in the same method.
55369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.Instanceof and Cast have been added.
55469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.{MethodCall,NewExpr,FieldAccess,Instanceof,Cast}.where()
55569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        have been added.  They return the caller-side method surrounding the
55669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	expression.
55769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.expr.{MethodCall,NewExpr,FieldAccess,Instanceof,Cast}.mayThrow()
55869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        have been added.
55969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>$class has been introduced.
56069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The parameters to replaceFieldRead(), replaceFieldWrite(),
56169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      and redirectFieldAccess() in javassist.CodeConverter are changed.
56269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The compiler could not correctly handle a try-catch statement.
56369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal      This bug has been fixed.
56469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
56569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
56669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.3 in December, 2002.
56769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
56869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The tutorial has been revised a bit.
56969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>SerialVersionUID class was donated by Bob Lee.  Thanks.
57069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtMethod.setBody() and CtConstructor.setBody() have been added.
57169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.reflect.ClassMetaobject.useContextClassLoader has been added.
57269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  If true, the reflection package does not use Class.forName() but uses
57369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  a context class loader specified by the user.
57469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>$sig and $type are now available.
57569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Bugs in Bytecode.write() and read() have been fixed.
57669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
57769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
57869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.2 in October, 2002.
57969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
58069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The tutorial has been revised.
58169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>A new package <code>javassist.expr</code> has been added.
58269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal        This is replacement of classic <code>CodeConverter</code>.
58369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.ConstParameter was changed into
58469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	javassist.CtMethod.ConstParameter.
58569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.FieldInitializer was renamed into
58669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	javassist.CtField.Initializer.
58769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>A bug in javassist.bytecode.Bytecode.addInvokeinterface() has been
58869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	fixed.
58969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>In javassist.bytecode.Bytecode, addGetfield(), addGetstatic(),
59069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	addInvokespecial(), addInvokestatic(), addInvokevirtual(),
59169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	and addInvokeinterface()
59269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	have been modified to update the current statck depth.
59369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
59469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
59569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.1 in July, 2002.
59669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
59769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.CtMember and javassist.CtBehavior have been added.
59869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.CtClass.toBytecode() has been added.
59969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.CtClass.toClass() and javassist.ClassPool.writeAsClass()
60069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal	has been added.
60169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.ByteArrayClassPath has been added.
60269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.bytecode.Mnemonic has been added.
60369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Several bugs have been fixed.
60469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
60569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
60669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 2.0 (major update) in November, 2001.
60769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
60869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The javassist.bytecode package has been provided.  It is a
60969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    lower-level API for directly modifying a class file although
61069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    the users must have detailed knowledge of the Java bytecode.
61169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
61269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The mechanism for creating CtClass objects have been changed.
61369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
61469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.tool.Dump moves to the javassist package.
61569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
61669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
61769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>version 1.0 in July, 2001.
61869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
61969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.reflect.Metaobject and ClassMetaobject was changed.
62069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    Now they throw the same exception that they receive from a
62169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    base-level object.
62269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
62369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
62469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.8
62569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
62669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.tool.Dump was added.  It is a class file viewer.
62769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
62869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.FiledInitializer.byNewArray() was added.  It is for
62969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    initializing a field with an array object.
63069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
63169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.CodeConverter.redirectMethodCall() was added.
63269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
63369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.Run was added.
63469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
63569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
63669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.7
63769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
63869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassit.Loader was largely modified.  javassist.UserLoader was
63969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    deleted.  Instead, Codebase was renamed to ClassPath
64069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    and UserClassPath was added.  Now programmers who want to
64169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    customize Loader must write a class implementing UserClassPath
64269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    instead of UserLoader.  This change is for sharing class search paths
64369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    between Loader and CtClass.CtClass(String).
64469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
64569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.addField(), addMethod(), addConstructor(), addWrapper() were
64669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    also largely modified so that it receives CtNewMethod, CtNewConstructor,
64769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    or CtNewField.  The static methods for creating these objects were
64869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    added to the API.
64969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
65069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Constructors are now represented by CtConstructor objects.
65169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    CtConstructor is a subclass of CtMethod.
65269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
65369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>CtClass.getUserAttribute() was removed.  Use CtClass.getAttribute().
65469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
65569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.rmi.RmiLoader was added.
65669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
65769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.reflect.Metalevel._setMetaobject() was added.  Now
65869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    metaobjects can be replaced at runtime.
65969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
66069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
66169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.6
66269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
66369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Javassist was modified to correctly deal with array types appearing
66469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    in signatures.
66569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
66669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>A bug crashed resulting bytecode if a class includes a private static
66769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    filed.  It has been fixed.
66869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
66969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.CtNewInterface was added.
67069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
67169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.Loader.recordClass() was renamed into makeClass().
67269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
67369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>javassist.UserLoader.loadClass() was changed to take the second
67469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    parameter.
67569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
67669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
67769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.5
67869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
67969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>a bug-fix version.
68069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
68169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
68269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.4
68369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
68469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Major update again.  Many classes and methods were changed.
68569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    Most of methods taking java.lang.Class have been changed to
68669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal    take javassist.CtClass.
68769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
68869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
68969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.3
69069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
69169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Major update.  Many classes and methods were changed.
69269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
69369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
69469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>- version 0.2
69569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
69669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>Jar/zip files are supported.
69769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
69869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
69969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>-version 0.1 on April 16, 1999.
70069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<ul>
70169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal  <li>The first release.
70269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</ul>
70369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
70469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
70569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
70669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>Bug reports etc.</h2>
70769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
70869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<dl>
70969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<dt>Bug reports:
71069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<dd>Post your reports at <a href="http://www.jboss.org/jive.jsp">Forums</a>
71169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalor directly send an email to:
71269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>&nbsp;
71369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tt><a href="mailto:chiba@acm.org">chiba@acm.org</a></tt>
71469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalor
71569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<tt><a href="mailto:chiba@is.titech.ac.jp">chiba@is.titech.ac.jp</a></tt>
71669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>
71769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
71869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><dt>The home page of Javassist:
71969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<dd>Visit <a href="http://www.javassist.org"><tt>www.javassist.org</tt></a>
72069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaland <a href="http://www.jboss.org/index.html?module=html&op=userdisplay&id=developers/projects/javassist"><tt>www.jboss.org</tt></a>
72169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
72269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal</dl>
72369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
72469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
72569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
72669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<a name="copyright">
72769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>Copyright notices</h2>
72869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
72969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Javassist, a Java-bytecode translator toolkit.
73069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>Copyright (C) 1999-2010 Shigeru Chiba. All Rights Reserved.
73169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
73269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>The contents of this software, Javassist, are subject to
73369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalthe Mozilla Public License Version 1.1 (the "License");<br>
73469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalyou may not use this software except in compliance 
73569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalwith the License. You may obtain a copy of the License at 
73669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>http://www.mozilla.org/MPL/ 
73769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
73869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Software distributed under the License is distributed on an "AS IS"
73969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalbasis, WITHOUT WARRANTY OF <br>ANY KIND, either express or implied.
74069e17611504376e4d4603925f8528dfc890fd2c6Luis SigalSee the License for the specific language governing rights and
74169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>limitations under the License. 
74269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
74369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>The Original Code is Javassist. 
74469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
74569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>The Initial Developer of the Original Code is Shigeru Chiba. 
74669e17611504376e4d4603925f8528dfc890fd2c6Luis SigalPortions created by the Initial Developer are<br>&nbsp;
74769e17611504376e4d4603925f8528dfc890fd2c6Luis SigalCopyright (C) 1999-2010 Shigeru Chiba. All Rights Reserved. 
74869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Contributor(s): ______________________________________. 
74969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
75069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>Alternatively, the contents of this software may be used under the
75169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalterms of the GNU Lesser General Public License Version 2.1 or later
75269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal(the "LGPL"), in which case the provisions of the LGPL are applicable
75369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalinstead of those above. If you wish to allow use of your version of
75469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalthis software only under the terms of the LGPL, and not to allow others to
75569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaluse your version of this software under the terms of the MPL, indicate
75669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalyour decision by deleting the provisions above and replace them with
75769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalthe notice and other provisions required by the LGPL. If you do not
75869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaldelete the provisions above, a recipient may use your version of this
75969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalsoftware under the terms of either the MPL or the LGPL.
76069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
76169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>If you obtain this software as part of JBoss, the contents of this
76269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalsoftware may be used under only the terms of the LGPL.  To use them
76369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalunder the MPL, you must obtain a separate package including only
76469e17611504376e4d4603925f8528dfc890fd2c6Luis SigalJavassist but not the other part of JBoss.
76569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
76669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>All the contributors to the original source tree must agree to
76769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigalthe original license term described above.
76869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
76969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
77069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
77169e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<h2>Acknowledgments</h2>
77269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
77369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>The development of this software is sponsored in part by the PRESTO
77469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaland CREST programs of <a href="http://www.jst.go.jp/">Japan
77569e17611504376e4d4603925f8528dfc890fd2c6Luis SigalScience and Technology Corporation</a>.
77669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
77769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p>I'd like to thank Michiaki Tatsubori, Johan Cloetens,
77869e17611504376e4d4603925f8528dfc890fd2c6Luis SigalPhilip Tomlinson, Alex Villazon, Pascal Rapicault, Dan HE, Eric Tanter,
77969e17611504376e4d4603925f8528dfc890fd2c6Luis SigalMichael Haupt, Toshiyuki Sasaki, Renaud Pawlak, Luc Bourlier,
78069e17611504376e4d4603925f8528dfc890fd2c6Luis SigalEric Bui, Lewis Stiller, Susumu Yamazaki, Rodrigo Teruo Tomita,
78169e17611504376e4d4603925f8528dfc890fd2c6Luis SigalMarc Segura-Devillechaise, Jan Baudisch, Julien Blass, Yoshiki Sato,
78269e17611504376e4d4603925f8528dfc890fd2c6Luis SigalFabian Crabus, Bo Norregaard Jorgensen, Bob Lee, Bill Burke,
78369e17611504376e4d4603925f8528dfc890fd2c6Luis SigalRemy Sanlaville, Muga Nishizawa, Alexey Loubyansky, Saori Oki,
78469e17611504376e4d4603925f8528dfc890fd2c6Luis SigalAndreas Salathe, Dante Torres estrada, S. Pam, Nuno Santos,
78569e17611504376e4d4603925f8528dfc890fd2c6Luis SigalDenis Taye, Colin Sampaleanu, Robert Bialek, Asato Shimotaki,
78669e17611504376e4d4603925f8528dfc890fd2c6Luis SigalHoward Lewis Ship, Richard Jones, Marjan Sterjev,
78769e17611504376e4d4603925f8528dfc890fd2c6Luis SigalBruce McDonald, Mark Brennan, Vlad Skarzhevskyy,
78869e17611504376e4d4603925f8528dfc890fd2c6Luis SigalBrett Randall, Tsuyoshi Murakami, Nathan Meyers, Yoshiyuki Usui
78969e17611504376e4d4603925f8528dfc890fd2c6Luis SigalYutaka Sunaga, Arjan van der Meer, Bruce Eckel, Guillaume Pothier,
79069e17611504376e4d4603925f8528dfc890fd2c6Luis SigalKumar Matcha, Andreas Salathe, Renat Zubairov, Armin Haaf,
79169e17611504376e4d4603925f8528dfc890fd2c6Luis SigalEmmanuel Bernard
79269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigaland all other contributors for their contributions.
79369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
79469e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><br>
79569e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal
79669e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<hr>
79769e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<a href="http://www.is.titech.ac.jp/~chiba">Shigeru Chiba</a>
79869e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal(Email: <tt>chiba@acm.org</tt>)
79969e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<br>Dept. of Math. and Computing Sciences,
80069e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<a href="http://www.titech.ac.jp">Tokyo Institute of Technology</a>
801