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.