Linking, which is actually the process of loading new classes by the Class Loader , is a more incremental and lightweight process. The concomitant speedup in your development cycle means that your development process can be much more rapid and exploratory, and because of the robust nature of the Java language and run-time system, you will catch bugs at a much earlier phase of the cycle. 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.