The Java Language Environment 5.1 Dynamic Loading and Binding The Java language's portable and interpreted nature produces a highly dynamic and dynamically-extensible system. The Java language was designed to adapt to evolving environments. Classes are linked in as required and can be downloaded from across networks.
Incoming code is verified before being passed to the interpreter for execution.
This defect is known as the fragile superclass problem . Any time you add a new method or a new instance variable to a class, any and all classes that reference that class will require a recompilation, or they'll break. The Java language solves the fragile superclass problem in several stages. The Java interpreter performs final name resolution once, when classes are being linked. Once the name is resolved, the reference is rewritten as a numeric offset, enabling the Java interpreter to run at full speed.