Javassist
Home PageCategories: Compilation - Bytecode manipulation
Author: JBoss
Latest version: 3.6.0.GA
Added 2004-12-23Updated 2008-01-26
Class library for manipulation of Java bytecode.
Javassist (Java Programming Assistant) 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.
Possible uses:
- Aspect Oriented Programming: Javassist can be a good tool for introducing new methods into a class and for inserting before/after/around advice at the both caller and callee sides.
- Reflection: One of the applications of Javassist is runtime reflection; Javassist enables Java programs to use a metaobject that controls method calls on base-level objects. No specialized compiler or virtual machine are needed.
- Remote method invocation: Another application is remote method invocation. Javassist enables applets to call a method on a remote object running on the web server. Unlike the Java RMI, the programmer does not need a stub compiler such as rmic; the stub code is dynamically produced by Javassist.
Built for Java |
Library |
Free or free version available |
Source code provided |