java
classworlds is a framework for container developers who require complex
manipulation of Java's ClassLoaders. Java's native ClassLoader mechanims
and classes can cause much headache and confusion for certain types of
application developers. Projects which involve dynamic loading of
components or otherwise represent a 'container' can benefit from the
classloading control provided by classworlds.
classworlds provides a richer set of semantics for class loading than
Java's normal mechanisms, while still being able to provide a
ClassLoader interface to integrate seamlessly with the Java environment.
The classworlds model does away with the hierarchy normally associated
with ClassLoaders. Instead, there is a pool of ClassRealms which can
import arbitrary packages from other ClassRealms. Effectively,
classworlds turns the old-style hierarchy into a directed graph.
In a application container environment, the container may have a realm
capable of loading on the container/component contract interfaces and
classes. Another realm is created for each component which imports the
contract classes from the container realm.
This model allows for fine-grained control of which classloader loads
any particular class. This form of partial isolation can reduce the
myriad strange errors that are produced by loading classes from multiple
loaders.