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><<i>java-home</i>><tt>/jre/lib/ext</tt>.</ul> 11269e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal 11369e17611504376e4d4603925f8528dfc890fd2c6Luis Sigal<p><<i>java-home</i>> 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> 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> 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