This document tries to catch both requirements and specification together. Since there is only me at the time, there isn't much difference between the two, except for specifications may contain some technical information that requirements would never be controlling.

This document may not be complete. Ideally, when a need to understand, why the code does something, or whether should it do something or not, this document is consulted. If it doesn't provide an answer, a decision should be made, and entered into this document for future reference.

  1. Verificaion is based on the latest Java ™ Virtual Machine specificaion document (currently 2nd edition). It virtually should verify every condition required by the JVM spec.
  2. Exceptions from first requirement can be derived from observing existing implementations of compliant Java ™ Virtual Machines. If there exists a JVM, widely enough used, which contradicts a statement in JVM spec, such condition should not then mark a class being verified as incorrect, but instead be reported as a warning.
  3. When BCV encouters references to other class files, it should verify the the references actually correspond to the information that referenced classes themselves report. (for example, a referenced field or method does not exist).
  4. Given (3), it should be possible that verification is done without checking outiside class files. The difference in behaviour (3) and (4) should be configurable by a runtime flag.