When a class loader presents the bytecodes of a newly loaded Java platform class to the virtual machine, these bytecodes are first inspected by a verifier. The verifier checks that the instructions cannot perform actions that are obviously damaging. All classes except for system classes are verified. You can, however, deactivate verification with the undocumented -noverify option.
java -noverify Hello
Here are some of the checks that the verifier carries out:
That variables are initialized before they are used
That method calls match the types of object references
That rules for accessing private data and methods are not violated
That local variable accesses fall within the runtime stack
That the runtime stack ...