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.27.0-GA is available (March 19, 2020).
This version is distributed under the triple license of the MPL, the LGPL, and the Apache License. The distribution includes the jar file, the sources, some samples, the API manual, and a tutorial. The binary is also available from the central repo.
Japanese translation of the tutorial for version 3.0 is here.
Old Bug Tracker
Old binaries, etc. (3.18.0-GA and earlier)
Available from sourceforge.net (zip).
- Shigeru Chiba, "Load-time Structural Reflection in Java,"
ECOOP 2000 - Object-Oriented Programming, LNCS 1850, Springer Verlag, page 313-336, 2000.
(The overview of Javassist)
- Shigeru Chiba and Muga Nishizawa, "An Easy-to-Use Toolkit for Efficient Java Bytecode Translators,"
Proc. of 2nd Int'l Conf. on Generative Programming and Component Engineering (GPCE '03),
LNCS 2830, pp.364-376, Springer-Verlag, 2003.
(The performance of Javassist)
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 funding programs of
Japan Science and Technology Agency.