Rheinwerk Computing < openbook >


 
Inhaltsverzeichnis
Materialien zum Buch
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichen und Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Schnittstellen, Aufzählungen, versiegelte Klassen, Records
9 Ausnahmen müssen sein
10 Geschachtelte Typen
11 Besondere Typen der Java SE
12 Generics<T>
13 Lambda-Ausdrücke und funktionale Programmierung
14 Architektur, Design und angewandte Objektorientierung
15 Java Platform Module System
16 Die Klassenbibliothek
17 Einführung in die nebenläufige Programmierung
18 Einführung in Datenstrukturen und Algorithmen
19 Einführung in grafische Oberflächen
20 Einführung in Dateien und Datenströme
21 Einführung ins Datenbankmanagement mit JDBC
22 Bits und Bytes, Mathematisches und Geld
23 Testen mit JUnit
24 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 16 Die Klassenbibliothek
Pfeil 16.1 Die Java-Klassenphilosophie
Pfeil 16.1.1 Modul, Paket, Typ
Pfeil 16.1.2 Übersicht über die Pakete der Standardbibliothek
Pfeil 16.2 Einfache Zeitmessung und Profiling *
Pfeil 16.3 Die Klasse Class
Pfeil 16.3.1 An ein Class-Objekt kommen
Pfeil 16.3.2 Eine Class ist ein Type
Pfeil 16.4 Klassenlader
Pfeil 16.4.1 Die Klasse java.lang.ClassLoader
Pfeil 16.5 Die Utility-Klassen System und Properties
Pfeil 16.5.1 Speicher der JVM
Pfeil 16.5.2 Anzahl der CPUs bzw. Kerne
Pfeil 16.5.3 Systemeigenschaften der Java-Umgebung
Pfeil 16.5.4 Eigene Properties von der Konsole aus setzen *
Pfeil 16.5.5 Zeilenumbruchzeichen, line.separator
Pfeil 16.5.6 Umgebungsvariablen des Betriebssystems
Pfeil 16.6 Sprachen der Länder
Pfeil 16.6.1 Sprachen in Regionen über Locale-Objekte
Pfeil 16.7 Wichtige Datum-Klassen im Überblick
Pfeil 16.7.1 Der 1.1.1970
Pfeil 16.7.2 System.currentTimeMillis()
Pfeil 16.7.3 Einfache Zeitumrechnungen durch TimeUnit
Pfeil 16.8 Date-Time-API
Pfeil 16.8.1 Menschenzeit und Maschinenzeit
Pfeil 16.8.2 Die Datumsklasse LocalDate
Pfeil 16.9 Logging mit Java
Pfeil 16.9.1 Logging-APIs
Pfeil 16.9.2 Logging mit java.util.logging
Pfeil 16.10 Maven: Build-Management und Abhängigkeiten auflösen
Pfeil 16.10.1 Beispielprojekt in Eclipse mit Maven
Pfeil 16.10.2 Properties hinzunehmen
Pfeil 16.10.3 Dependency hinzunehmen
Pfeil 16.10.4 Lokales und das Remote-Repository
Pfeil 16.10.5 Lebenszylus, Phasen und Maven-Plugins
Pfeil 16.10.6 Archetypes
Pfeil 16.11 Zum Weiterlesen
 

Zum Seitenanfang

16.4    Klassenlader Zur vorigen ÜberschriftZur nächsten Überschrift

In Java ist eine Kaskade von unterschiedlichen Klassenladern für das Laden von Klassen verantwortlich. Bei Java arbeiten mehrere Klassenlader in einer Kette zusammen:

  • An erster Stelle steht der Klassenlader für alle »Kern«-Klassen, der Bootstrap-Klassenlader. Er lädt zentrale Typen wie Object und String aus der Laufzeitbibliothek. Findet er eine gewünschte Klasse nicht, geht die Anfrage weiter.

  • Der Plattform-Klassenlader (vor Java 8 »extension class loader« genannt) lädt weitere Klassen aus der Distribution, die keine Kernklassen sind.

  • Applikations-Klassenlader (auch System-Klassenlader): Wenn eine Klasse auch vom Plattform-Klassenlader nicht gefunden wurde, folgt die Suche über den benutzerdefinierten Klassen- bzw. Modulpfad.

Aus Sicherheitsgründen beginnt der Klassenlader bei einer neuen Klasse immer mit dem Bootstrap-Klassenlader und reicht dann die Anfrage weiter, wenn er selbst die Klasse nicht laden konnte. Dazu sind die Klassenlader miteinander verbunden. Jeder Klassenlader L hat dazu einen Vater-Klassenlader V. Erst darf der Vater versuchen, die Klassen zu laden. Kann er es nicht, gibt er die Arbeit an L ab.

Hinter dem letzten Klassenlader können wir einen eigenen benutzerdefinierten Klassenlader installieren. Auch dieser wird einen Vater haben, den üblicherweise der Applikations-Klassenlader verkörpert.

Abfragen des Klassenpfades

Ob der eigene Klassenpfad überhaupt gesetzt ist, ermittelt ein einfaches echo %CLASSPATH% (Windows) bzw. echo $CLASSPATH (Unix).

Zur Laufzeit steht der normale Klassenpfad in der System-Property java.class.path.

Eigenschaft

Beispielbelegung

java.class.path

C:\Users\Christian\Insel\programme\2_17_Reflection_Annotationen

Tabelle 16.4     Mögliche Ausgabe von System.out.println(System.getProperty("java.class.path"))

[»]  Hinweis

Wird die JVM über java -jar aufgerufen, beachtet sie nur Klassen in dem genannten JAR und ignoriert den Klassenpfad.

 

Zum Seitenanfang

16.4.1    Die Klasse java.lang.ClassLoader Zur vorigen ÜberschriftZur nächsten Überschrift

Jeder Klassenlader in Java ist vom Typ java.lang.ClassLoader. Die Methode loadClass(…) erwartet einen sogenannten binären Namen, der an den voll qualifizierten Klassennamen erinnert.

abstract class java.lang.ClassLoader
  • protected Class<?> loadClass(String name, boolean resolve)

    Lädt die Klasse und bindet sie mit resolveClass(…) ein, wenn resolve gleich true ist.

  • Class<?> loadClass(String name)

    Die öffentliche Methode ruft loadClass(name, false) auf, was bedeutet, dass die Klasse nicht standardmäßig angemeldet (gelinkt) wird. Beide Methoden können eine ClassNotFoundException auslösen.

Die geschützte Methode führt anschließend drei Schritte durch:

  1. Wird loadClass(…) auf einer Klasse aufgerufen, die dieser Klassenlader schon eingelesen hat, so kehrt die Methode mit dieser gecachten Klasse zurück.

  2. Ist die Klasse nicht gespeichert, darf zuerst der Vater (Parent Class Loader) versuchen, die Klasse zu laden.

  3. Findet der Vater die Klasse nicht, so darf jetzt der Klassenlader selbst mit findClass(…) versuchen, die Klasse zu beziehen.

Eigene Klassenlader überschreiben in der Regel die Methode findClass(…), um nach einem bestimmten Schema zu suchen, etwa nach Klassen aus der Datenbank. In diesen Stufen ist es auch möglich, höher stehende Klassenlader zu umgehen, was beispielsweise bei Servlets Anwendung findet.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Spring Boot 3 und Spring Framework 6

Spring Boot 3 und Spring Framework 6




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2024

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern