Classloading
Der Class Loader
- In Java werden die Klassen zur Laufzeit von der VM geladen
- Class Loader erzeugt aus den Bytes auf der Platte (oder anderer Quellen) eine ausführbare Klasse in der VM
- Hierbei kann es zu Fehlern kommen
- Klasse nicht gefunden –
ClassNotFoundException, NoClassDefFoundError - Klasse fehlen Methoden –
AbstractMethodError - Klasse fehlen native Methoden –
UnsatisfiedLinkError - Klassen passen nicht zusammen –
LinkageError - Klasse ist unkorrekt –
VerifyError - Klasse ist defekt –
ClassFormatError
Dynamisches Laden in Java
- Die Klassen werden geladen, wenn sie das erste Mal referenziert werden
- Das Deklarieren einer Variablen von einem Typ führt noch nicht zum Laden des Typs
- Die Schritte beim Laden der Klasse
- Loading – die Bytes werden von der Platte geladen
- Linking – die geladenen Daten werden in eine Klasse umgewandelt und die notwendigen Abhängigkeiten werden aufgelöst
- Binding – native Methoden werden mit der Klasse verbunden
- Initialization – die statischen Initializer werden ausgeführt