Byte Code Verification (BCV) project is a byte code verification library. This library may be incorporated into larger applications, or it can be wrapped with some simple code to be executed from the command line.
Now, you would need this library if you want to test a class file that you conjured in some way, probably not so much by a regular java compiler. Or, may be you need to test classes produced by your own compiler (and thus testing the compiler), or by something like an obfuscator.
BCV verifies classes, but not to verify conformance to the JVM standard, but to verify a VM will actually be able to run them. Yes, supposedely, there is no difference between the two, but there is. However, BCV still reports the cases where such non-conformance is found, and reports them as warnings.
I really started working on this after yet another somewhat poor experience with BCEL which would try to follow the book, and would fail verification of otherwise acceptable class files. BCEL also has some issues with verifying large but yet simple byte code, where I saw it consumed over 1GB(1) of heap for verifying a MIDP-1.0(!) class that had may be 20 relatively large arrays with compiled initializers.
BCV is also after all possible standartized modifications of byte code and class format constraints, such as CLDC implementation, which disallows 'jsr', 'jsr_w' and 'ret' instructions and requires an additional attribute ("StackMap") to be present in certain cases.
The current stage of BCV is development, it doesn't meet all the requirements I set for it, but it's at somewhat working state. There is a SourceForge project page for BCV.
There is a mailing list dedicated to discussing BCV project, called "bcv-talk", you may join the list at Source Forge mailing list management
BCV is distributed under GNU General Public License
|(C) Copyright 2005, Pawel S. Veselov||This page was accessed times.|