Das ist auch sprachlich ein solches Meisterwerk, dass ich es euch nicht vorenthalten will:
Das ist so, weil in Java nichts jemals simpel ist. Java Code ist unstrukturierter trockener Staub von Codefragmenten in Klassendateien, die inert in keiner Weise miteinander interagieren. Erst mit den passenden Factories, Delegates, Generators und ClassLoaders werden sie instanziiert und zusammengesetzt. Der entstehende Haufen an Querverweisen führt dann nur zufällig irgendwann einmal tatsächlich wirksamen Code aus.
Drauf aufmerksam wurde ich bei Fefe, der noch ergänzt:
Besonders witzig bei Kris’ Ausführungen finde ich, dass er für seine jahrzehntelage Arbeit in der PHP-Community bekannt ist, und dieses verkackte Classloader-Konzept, zur Laufzeit Code nachladen zu wollen, ist auch eine glorreiche PHP-Innovation, die dort allerdings Autoloader heißt.
Dass das möglicherweise grundsätzlich eine völlig verkackte Idee ist, zur Laufzeit Code nachzuladen, ist nicht nur den Founding Fathers von Java nicht gekommen.
Auch in C und C++ gibt es ein API, mit dem man Shared Library nachladen kann, heißt dlopen oder LoadLibrary, und wird für Plugins verwendet. Und auch da haben viele Leute noch nicht verstanden, dass das Plugin dann dieselben Zugriffsrechte hat wie das Programm, in dessen Kontext es ausgeführt wird.