So, every Java text book talks about how flexible Java is since it can load classes at run time. Just cobble together a string and give it to Class.forName()
, and
I remember creating a class loader to load classes remotely. The application was running on one node while the classes were stored on another node.
And also by customising the class loader you can transform classes as they are loaded. This is used by some ORM frameworks as well as some AOP frameworks.