The Byte Code Engineering Library (BCEL) makes it easy to parse and modify low level Java structures in the .class files. This can be useful for doing instrumentation, debugging, altering classes on the fly, or if you just want to learn about the java bytecode.