Javassist (Java programming assistant) is a load-time reflective system for Java. 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 before the JVM loads it. Unlike other similar systems, Javassist provides source-level abstraction; programmers can modify a class file without detailed knowledge of the Java bytecode. They do not have to even write an inserted bytecode sequence; Javassist instead can compile a fragment of source text on line (for example, just a single statement). This ease of use is a unique feature of Javassit against other tools.
|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 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 notneed a stub compiler such as |
- Javassist: Java Bytecode Engineering Made Simple
by Shigeru Chiba, Java Developer's Journal, January 2004.
- Java programming dynamics, Part 4: Class transformation with Javassist
by Dennis M. Sosnoski, IBM developerWorks, September 16, 2003
- Java programming dynamics, Part 5: Transforming classes on-the-fly
by Dennis M. Sosnoski, IBM developerWorks, February 3, 2004.
- Java programming dynamics, Part 6: Aspect-oriented changes with Javassist
by Dennis M. Sosnoski, IBM developerWorks, March 2, 2004.
|An Easy-to-Use Toolkit for Efficient Java Bytecode Translators||Shigeru Chiba and Muga Nishizawa |
Proc. of 2nd Int'l Conf. on Generative Programming and Component Engineering (GPCE '03),
LNCS 2830, pp.364-376, Springer-Verlag, 2003.
|A Bytecode Translator for Distributed Execution of "Legacy" Java Software||Michiaki Tatsubori, Toshiyuki Sasaki, Shigeru Chiba and Kozo Itano |
ECOOP 2001 -- Object-Oriented Programming, LNCS 2072, Springer Verlag, pp.236-255, 2001.
|Load-time Structural Reflection in Java||Shigeru Chiba |
ECOOP 2000 -- Object-Oriented Programming, LNCS 1850, Springer Verlag, page 313-336, 2000.
|Javassist --- A Reflection-based Programming Wizard for Java||Shigeru Chiba |
In Proceedings of the ACM OOPSLA'98 Workshop on Reflective Programming in C++ and Java October, 1998.
(An very early sketch of the design of Javassist)
We are developing other reflective systems for C++ and Java.
The development of Javassist is supported in part by Japan Science and Technology Corporation.
Copyright (C) 1999-2011 by Shigeru Chiba.
Java(TM) is a trademark of Sun Microsystems, Inc.