Class loaders are a powerful mechanism for dynamically loading softwar
e components on the Java platform. They are unusual in supporting all
of the following features: laziness, type-safe linkage, user-defined e
xtensibility, and multiple communicating namespaces. We present the no
tion of class loaders and demonstrate some of their interesting uses.
In addition, we discuss how to maintain type safety in the presence of
user-defined dynamic class loading.