Java class loading
In some development environments, the developer must choose whether to use static or dynamic linking. The choice is whether a compiled executable statically contains all its library dependencies within itself, or whether it is dynamically able to locate and load its dependencies at runtime.
With Java, this choice does not exist, as all programs use dynamic linking. The loading process begins when the java
command is invoked, and the application's main class is loaded into the JVM. All classes referenced by the main()
method are then loaded lazily, and made available to the JVM for execution, as references to these classes are encountered.
The bytes that represent a given class usually reside on disk as a file with a .class
extension, called a class file. However, the bytes associated with a class could just as easily be retrieved from across a network.
The job of locating a class's bytes and using them to instantiate a new instance of the java.lang.Class
class falls to...