Vor der Erläuterung der Programmiersprache Java wird in diesem Teilkapitel zunächst vorgestellt, wie das Java Development Kit aufgebaut ist. Die Kenntnis des Aufbaus ist vonnöten, um das Zusammenspiel der verschiedenen Komponenten des JDKs und damit auch die korrekte Verwendung der verschiedenen Klassen verstehen zu können. Einer der großen Vorteile der objektorientierten Programmierung ist das Konzept der Wiederverwendbarkeit, wodurch Programmierer Zeit, Aufwand und damit auch Kosten sparen können, indem sie Objekte verwenden, die von anderen bereits entwickelt wurden. Typischerweise werden Gruppen von Objekten, die zueinander in Beziehung stehen, in Klassenbibliotheken gebündelt. Diese Objekte können dann leichter wiedergefunden werden und Namenskonflikte können vermieden werden. In Java werden derartige Bibliotheken als Packages bezeichnet. In Java stehen eine Reihe wiederverwendbarer Klassen zur Verfügung. Viele Packages beinhalten Definitionen für Interfaces und Ausnahmebehandlungen. Die Basisklassen, die von der Klasse java abgeleitet sind, sind in Abb. 3-5 dargestellt. Es ist hierbei selbstverständlich, dass die vollständige Klassenhierarchie von Java im Rahmen dieses Kapitels nicht angegeben werden kann, da sie Dutzende von Klassen enthält. Diese sind allerdings ausschließlich von den Basisklassen abgeleitet. Der Leser, der die Aufgaben der Basisklassen verstanden hat, ist daher ohne Schwierigkeiten in der Lage, das Zusammenspiel der Subklassen und deren spezielle Aufgabe einordnen und verstehen zu können. Abb. 3.5: Basisklassen in Java Die Klasse java.applet Das Package java.applet enthält die Applet-Klasse, mit deren Hilfe Java-Programme als Teil von Webseiten ablaufen können. java.applet wird weiterhin dazu verwendet, Klangdateien abzuspielen. Ab Java 2 (JDK 1.2) werden die folgenden Eigenschaften von Klangdateien unterstützt: 8 bit- oder 16 bit-Dateien und Sample-Raten von 8 kHz bis 48 kHz. Die folgenden Dateiformate können hierbei zum Einsatz kommen: AIFF, AU, RMF, WAV und MIDI (Typ 0 und Typ 1). Die Klasse java.awt Das Abstract Windowing Toolkit (AWT), das durch das Package java.awt realisiert wird, wird zur Verarbeitung von Grafikoperationen sowie zur Entwicklung grafischer Benutzeroberflächen verwendet. Hierdurch können neben der Entwicklung geeigneter Primitive (bspw. Fenster, Buttons, Scrollbars und Text) Eingaben entgegengenommen werden und Ausgaben grafisch dargestellt werden. Die Klasse java.beans Das Package java.beans enthält die notwendige Funktionalität zur Erzeugung von wiederverwendbaren Software-Komponenten, den JavaBeans, die ausführlich in Kapitel 9 erläutert werden. Die Klasse java.io Das Package java.io stellt die Funktionalität bereit, mittels Eingabe- und Ausgabeströmen Daten aus Dateien oder anderen Eingabequellen zu lesen bzw. Daten in Dateien oder andere Ausgabequellen zu schreiben. Die Klasse java.lang Das Package java.lang stellt den eigentlichen Kern der Programmiersprache Java dar. Mittels dieser Klasse können bereits eigenständige Java-Applications entwikkelt werden, wenn auch bspw. zur Entwicklung von Applets zusätzlich die Klassen java.applet bzw. java.awt verwendet werden müssen. Die Klasse java.math Das Package java.math wird zur Umsetzung von Zahlen mit unterschiedlichen Präzisionswerten verwendet. java.math spielt daher im Vergleich zu Klassen wie java.lang oder java.awt eine eher untergeordnete Rolle. Die Klasse java.net Das Package java.net beinhaltet verschiedene Netzwerkklassen wie bspw. solche, die URLs oder eine URL-Verwendung repräsentieren, solche, die eine Socket-Verbindung realisieren oder solche, die eine Internet-Adresse repräsentieren. Uniform Resource Locators (URLs) werden verwendet, um eine HTML-Seite auf einem bestimmten Server zu spezifizieren. Sockets verwendet man, um einen Ausgangspunkt für die Übertragung von Daten zu generieren. Die Klasse java.rmi Das Package java.rmi wird zur Entwicklung von verteilt arbeitenden Java-zu-Java-Anwendungen verwendet. Die Verwendung der Remote Method Invocation (RMI) wird gesondert in Kapitel 11 erklärt. Die Klasse java.security Das Package java.security, das seit Java 1.1 zur Verfügung steht, wird zur Implementierung von Zertifikaten und digitalen Signaturen verwendet. Eine genaue Erläuterung dieser Funktionalität findet sich in Kapitel 5.2. Die Klasse java.sql Mittels des Packages java.sql können Anwendungen an Datenbanken angebunden werden und Daten mittels der Structured Query Language (SQL) verarbeitet werden. Java und Datenbanken sind Thema von Kapitel 10. Die Klasse java.text Das Package java.text wird dazu verwendet, aus anderen Objekten Zeichenketten zu generieren bzw. Zeichenketten in andere Objekte zu konvertieren. Die Klasse java.util Das Package java.util stellt eine Sammlung von Hilfsroutinen dar. Hierunter fallen bspw. die Erzeugung von Zufallszahlen, generische Datenstrukturen (Wörterbuch, Stack, Vektor, Hash-Tabelle) oder Routinen zur Verwaltung von Kalenderdaten. Die Klasse java.util enthält auch die Observer-Schnittstelle und die sog. Observable-Klasse, die es Objekten erlaubt, Benachrichtigungen zu versenden, wenn eine Änderung auftritt. Observables wurden bereits in Kapitel 2.3 eingeführt.