Class loading involves the process of changing the classpath setting to locate a DLL containing a required class. The specifiers in the classpath setting are processed in order until the DLL is found. Class loading is aggressive. When a class residing in a DLL is loaded, all references from that class and all other classes in the DLL will be fully resolved before the initial load is completed.
Understanding the Processing of
a Classpath Specifier
For a moment, let's make the following assumptions:
The .jll extension is added if
the ZIP file has no extension on its filename. In this
example, the file /u/hpj/classes.jll is examined first to
see if it contains the required class. If
/u/hpj/classes.jll does not contain the class, the
/u/hpj/classes directory is searched using the directory
search rules previously described.
The intent of splitting ZIP file specifiers into two
logical specifiers is to provide a flexible mechanism so
that the ZIP file can be compiled into one or more DLLs.
This allows it to be appropriately placed so that the
classpath setting does not need to change.