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.
|