A Python module for inspecting a Java class file. May eventually be trained to behave like the javap utility shipped with most Java SDKs.
Available at http://code.google.com/p/obriencj/wiki/javaclass
Why examine Java binaries in Python? First, I am often asked why I don't use the introspection API in Java to find the information I want. The answer to this is that those API do not expose nearly the depth of information I am interested in obtaining. Why not write a disassembler for Java in Java? Because I hate programming in Java, that's why. Typical use of this project will always be running outside of a Java virtual machine, thus the choice of language for writing the utilities and modules is very flexible. Python is very easy to develop rapidly in, and I find it to fit with my thinking style and the concept for what I want the modules to do comes together. Python will operate on a wide variety of systems, and it can be hooked easily into a number of other languages if it becomes necessary to do so.
There is no guaranteed API stability for this project until it has a 1.0.0 tagged release. Methods, modules, classes, etc can change at any time, so beware! With that said, I do believe that there should eventually be a stable interface, and once everything is working I will look at what I have wrought and do my damnedest to make it coherent, and then set some if it in stone.
Additionally, I have begun looking into some of the metadata associated with JAR files, and would like the following