Byte Code Engineering with the JavaClass API

Markus Dahm
Institut für Informatik
Freie Universität Berlin

Report B 98-17
November 1998

Extensions and improvements of the programming language Java and its related execution environment (Java Virtual Machine, JVM) are the subject of a large number of research projects and proposals. There are projects, for instance, to add parameterized types to Java, to implement ``Aspect-Oriented Programming'', and to improve the run-time performance. Since Java classes are compiled into portable binary class files (called byte code), it is the most convenient and platform-independent way to implement these improvements not by writing a new compiler or changing the JVM, but by transforming the byte code. These transformations can either be performed after compile-time, or at load-time. Many programmers are doing this by implementing their own specialized byte code manipulation tools, which are, however, restricted in the range of their re-usability. To deal with the necessary class file transformations, we introduce an API that helps developers to conveniently implement their transformations.

Get the report in PDF format.