Update: BIT is no longer being distributed or maintained. For up-to-date tools for manipulating Java bytecodes, please refer to ShiftOne JRat, JOEI, The Byte Code Engineering Library (BCEL), or Soot. I highly recommend Soot for any tasks that involve manipulation of class files.
BIT (Bytecode Instrumenting Tool) is a collection of Java classes that
allow one to build customized tools to instrument Java Virtual Machine
(JVM) bytecodes. Because understanding program behavior is an essential
part of developing effective optimization algorithms, researchers and software
developers have built numerous tools that carry out program analysis. Although
there are existing tools that analyze and modify executables on a variety
of operating systems and machine architectures, there currently is no framework
for carrying out the same task for JVM bytecodes.
BIT allows the user to insert calls to analysis methods anywhere in
the bytecode, so that information can be extracted from the user program
while it is being executed.
To learn more about BIT, please check out our USITS paper or my Master's thesis available on my publications page.
Work published using BIT
The following paper used BIT for simulating several techniques for rearranging procedures and reorganizing the data inside Java class files.
Chandra Krintz, Brad Calder, Han Bok Lee, Benjamin G. Zorn,
"Overlapping execution with transfer using non-strict execution for mobile programs",
8th International Conference on Architectural Support for Programming Languages and Operating Systems, San Jose, California, pages 159-169, October 1998.
The following paper describes a package called ProfBuilder built using BIT. ProfBuilder allows rapid construction of different types of profiles for Java programs.
Brian F. Cooper, Han Lee and Benjamin G. Zorn,
"ProfBuilder: A package for rapidly building Java execution profilers",
University of Colorado at Boulder, Department of Computer Science Technical Report CU-CS-853-98, 1998.