Byte Code Verification
First one checks that .class file has correct format
Checks all that can be done without looking at byte codes
- this includes superclass checking, verification of constant pool, and legal names and types for field and method references, final classes cannot be subclassed or overwritten
Then one looks at the byte code and checks that as executed it will give finite size stacks, correct typing for registers, fields and methods
One does not download the byte codes of required classes. However one does check that the class is used consistently with its definition
Some steps are for run time efficiency such as checking for some run time exceptions can be done at verification stage and removed in running code.