Javassist (Java Programming Assistant) makes Java bytecode manipulation simple. It is a class library for editing bytecodes in Java; it enables Java programs to define a new class at runtime and to modify a class file when the JVM loads it. Unlike other similar bytecode editors, Javassist provides two levels of API: source level and bytecode level. If the users use the source-level API, they can edit a class file without knowledge of the specifications of the Java bytecode. The whole API is designed with only the vocabulary of the Java language. You can even specify inserted bytecode in the form of source text; Javassist compiles it on the fly. On the other hand, the bytecode-level API allows the users to directly edit a class file as other editors.
Javassist version 3.19.0-GA is available (Jan. 6, 2015).
This version is distributed under the triple license of the MPL, the LGPL, and the Apache License. Jar file, sources, samples, API manual, and tutorial (3.18.2-GA and later). The binary is also available from the central repo.
Japanese translation of the tutorial for version 3.0 is here.
Old binaries, etc. (3.18.0-GA and earlier)
Available from sourceforge.net (zip).
Here is the information you might need to export your commercial software including Javassist.
Country of origin: Japan
Is there US Content in there?: No
Is the software designed or modified to use cryptography: No
The development of Javassist was supported in part by the PRESTO and CREST programs of Japan Science and Technology Agency.