Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5 (Tiger-Release)
Buch: Java ist auch eine Insel
gp Kapitel 8 Die Funktionsbibliothek
  gp 8.1 Die Java-Klassenphilosophie
    gp 8.1.1 Übersicht über die Pakete der Standardbibliothek
  gp 8.2 Wrapper-Klassen
    gp 8.2.1 Die Character-Klasse
    gp 8.2.2 Die Boolean-Klasse
    gp 8.2.3 Die Basisklasse Number für numerische Wrapper-Objekte
    gp 8.2.4 Die Klasse Integer
    gp 8.2.5 Behandlung von Überlauf
    gp 8.2.6 Unterschiedliche Ausgabeformate
    gp 8.2.7 Autoboxing: Boxing und Unboxing
  gp 8.3 Benutzereinstellungen
    gp 8.3.1 Eine zentrale Registry
    gp 8.3.2 Einträge einfügen, auslesen und löschen
    gp 8.3.3 Auslesen der Daten und schreiben in anderem Format
    gp 8.3.4 Auf Ereignisse horchen
  gp 8.4 Systemeigenschaften der Java-Umgebung
    gp 8.4.1 line.separator
    gp 8.4.2 Browser-Version abfragen
    gp 8.4.3 Property von der Konsole aus setzen
    gp 8.4.4 Umgebungsvariablen des Betriebssystems
  gp 8.5 Ausführung von externen Programmen
    gp 8.5.1 DOS-Programme aufrufen
    gp 8.5.2 Die Windows-Registry verwenden
    gp 8.5.3 Einen HTML-Browser unter Windows aufrufen
  gp 8.6 Klassenlader (Class Loader)
    gp 8.6.1 Woher die kleinen Klassen kommen
    gp 8.6.2 Drei Typen von Klassenladern
    gp 8.6.3 Der java.lang.ClassLoader
    gp 8.6.4 Hot Deployment mit dem URL-ClassLoader
    gp 8.6.5 Das jre/lib/endorsed-Verzeichnis
    gp 8.6.6 Wie heißt die Klasse mit der Methode main()?
  gp 8.7 Zeitmessung und Profiling

Kapitel 8 Die Funktionsbibliothek

Was wir brauchen sind ein paar verrückte Leute; seht euch an,
wohin uns die Normalen gebracht haben.
– Georg Shar (1886-1950)


Galileo Computing

8.1 Die Java-Klassenphilosophidowntop

Eine Programmiersprache besteht nicht nur aus einer Grammatik, sondern, wie im Fall von Java, aus einer Programmierbibliothek. Eine plattformunabhängige Sprache – so wie sich viele C oder C++ vorstellen – ist nicht wirklich plattformunabhängig, wenn auf jedem Rechner andere Funktionen und Programmiermodelle eingesetzt werden. Genau dies ist der Schwachpunkt von C(++). Die Algorithmen, die kaum abhängig vom Betriebssystem sind, lassen sich überall gleich anwenden, doch spätestens bei grafischen Oberflächen ist Schluss. Dieses Problem tritt in Java seltener auf, da sich die Entwickler viel Mühe gegeben haben, alle wichtigen Funktionen in wohlgeformte Pakete zu setzen. Diese decken insbesondere die zentralen Bereiche Datenstrukturen, Ein- und Ausgabe, Grafik- und Netzwerkprogrammierung ab.


Galileo Computing

8.1.1 Übersicht über die Pakete der Standardbibliothek  toptop

Es folgt eine Übersicht über die Pakete, die Java in der Version 1.4 definiert. Sie beschreiben zusammen mehr als 2.700 Klassen und Schnittstellen. Das ergibt zusammen etwa 4.800 Attribute, mehr als 3.700 statische Variablen, mehr als 21.300 Objektmethoden und fast 2.500 statische Methoden. Die Exemplare der Klassen werden mit mehr als 3.500 Konstruktoren erzeugt.

Uns wird auffallen, dass es bei der Benennung der Pakete eine Methodik gibt. Die SPI-Pakete (SPI für Service Provider Implementation) implementieren die abstrakten Klassen und Schnittstellen aus dem Oberpaket.


Tabelle 8.1   Java 2-Plattform-Pakete zum SDK 1.4

java.applet Stellt Klassen für Java-Applets bereit, damit diese auf Web-Seiten ihr Leben führen können.
java.awt Das Paket AWT (Abstract Windowing Toolkit) bietet Klassen zur
Grafikausgabe und Nutzung von grafischen Bedienoberflächen.
java.awt.color Unterstützung von Farbräumen und Farbmodellen
java.awt.datatransfer Informationsaustausch zwischen (Java-)Programmen über die
Zwischenablage des Betriebssystems
java.awt.dnd Drag&Drop, um unter grafischen Oberflächen Informationen zu übertragen oder zu manipulieren
java.awt.event Schnittstellen für die verschiedenen Ereignisse unter grafischen Oberflächen werden definiert.
java.awt.font Klassen, damit Zeichensätze genutzt und modifiziert werden
können
java.awt.geom Paket für die Java 2D API, um ähnlich wie im Grafikmodell von Postscript beziehungsweise PDF affine Transformationen auf beliebige 2D-Objekte anwenden zu können
java.awt.im Klassen für alternative Eingabegeräte
java.awt.im.spi Schnittstellen für Eingabemethoden
java.awt.image Erstellen und Manipulieren von Rastergrafiken
java.awt.image.renderable Klassen und Schnittstellen zum allgemeinen Erstellen von Grafiken
java.awt.print Bietet Zugriff auf Drucker und kann Druckaufträge erzeugen.
java.beans Mit JavaBeans definiert Sun wiederverwendbare Komponenten auf der Client-Seite, die beim Programmieren visuell konfiguriert werden können.
java.beans.beancontext Mehrere zusammenarbeitende Beans sind in einem Kontext miteinander verbunden. Mit diesem Paket lässt sich dieser nutzen.
java.io Definiert Möglichkeiten zur Ein- und Ausgabe. Dateien werden als Objekte repräsentiert. Datenströme erlauben sequenziellen Zugriff auf die Dateiinhalte.
java.lang Ein Paket, welches automatisch geladen wird und unverzichtbare Klassen wie String-, Thread- oder Wrapper-Klassen enthält.
java.lang.annotation Unterstützung für die in Java 5 hinzugekommenen Annotationen
java.lang.instrument Klassen können instrumentalisiert werden
java.lang.management Überwachung der virtuellen Maschine
java.lang.ref Behandelt Referenzen
java.lang.reflect Mit Reflection ist es möglich, dass Klassen und Objekte über sich erzählen.
java.math Beliebig lange Ganzzahlen oder Fließkommazahlen
java.net Kommunikation über Netzwerke. Klassen zum Aufbau von Client- und Serversystemen, die sich über TCP beziehungsweise IP mit dem Internet verbinden lassen.
java.nio Neue IO-Implementierung (daher NIO) für performante Ein- und Ausgabe
java.nio.channels Datenkanäle für nicht blockierende Ein- und Ausgabeoperationen
java.nio.channels.spi Anbieter für die Kanäle
java.nio.charset Definierte Zeichensätze, Decoder und Encoder für die Übersetzung zwischen Bytes und Unicode-Zeichen
java.nio.charset.spi Anbieter für die Zeichensätze aus java.nio.charset
java.rmi Aufruf von Methoden auf entfernten Rechnern
java.rmi.activation Unterstützung für die RMI-Aktivierung, wenn Objekte auf ihren Aufruf warten
java.rmi.dgc Der verteilte Gargabe-Collector DGC (Distributed Garbage-Collection)
java.rmi.registry Zugriff auf den Namensdienst unter RMI, die Registry
java.rmi.server Definition der Server-Seite von RMI
java.security Klassen und Schnittstellen für Sicherheit
java.security.acl Unwichtig, da sie durch Klassen in java.security ersetzt wurden
java.security.cert Analysieren und Verwalten von Zertifikaten, Pfaden und Rückruf (Verfall) von Zertifikaten
java.security.interfaces Schnittstellen zu RSA-Verschlüsselung (Rivest, Shamir Adleman AsymmetricCipher Algorithm) und DSA (Digital Signature Algorithm) Schlüsseln
java.security.spec Definition der Schlüssel und Algorithmen für Verschlüsselung
java.sql Zugriff auf Datenbanken über SQL
java.text Unterstützung für internationalisierte Programme. Behandlung von Text, Formatierung von Datumswerten und Zahlen
java.util Datenstrukturen, Raum und Zeit sowie Teile der Internationalisierung, Zufallszahlen
java.util.concurrent Hilfsklassen für nebenläufiges Programmieren, etwa ThreadPools
java.util.concurrent.atomic Atomare Operationen auf Variablen
java.util.concurrent.locks Lock-Objekte
java.util.jar Möglichkeiten, um auf das eigene Archiv-Format JAR (Java Archive) zuzugreifen
java.util.logging Protokollieren von Daten und Programmabläufen
java.util.prefs Benutzer- und Systemeigenschaften werden über Konfigurationsdateien verwaltet.
java.util.regex Unterstützung von regulären Ausdrücken
java.util.zip Zugriff auf komprimierte Daten mit GZIP und Archive (ZIP)
javax.accessibility Schnittstellen zwischen Eingabegeräten und Benutzerkomponenten
javax.crypto Klassen und Schnittstellen für kryptografische Operationen
javax.crypto.interfaces Schnittstellen für Diffie-Hellman-Schlüssel
javax.crypto.spec Klassen und Schnittstellen für Schlüssel und Parameter der
Verschlüsselungsfunktionen
javax.imageio Schnittstellen zum Lesen und Schreiben von Bilddateien in
verschiedenen Formaten
javax.imageio.event Ereignisse, die während des Ladens und Speicherns bei Grafiken auftauchen
javax.imageio.metadata Unterstützung für beschreibende Metadaten in Bilddateien
javax.imageio.plugins.bmp Klassen, die das Lesen und Schreiben von BMP-Bilddateien unterstützen
javax.imageio.plugins.jpeg Klassen, die das Lesen und Schreiben von JPEG-Bilddateien unterstützen
javax.imageio.spi Einlesen und Schreiben von Bildern in Java gemäß der in
javax.imageio definierten Schnittstellen
javax.imageio.stream Unterstützt das Einlesen und Schreiben von Bildern durch die Behandlung der unteren Ebenen
javax.management Management API (JMX) mit einigen Unterpaketen
javax.naming Zugriff auf Namensdienste
javax.naming.directory Zugriff auf Verzeichnisdienste, erweitert das javax.naming-Paket
javax.naming.event Ereignisse, wenn sich etwas beim Verzeichnisdienst ändert
javax.naming.ldap Unterstützung von LDAPv3-Operationen
javax.naming.spi Definition für Anbieter von Namensdiensten, damit diese JNDI
nutzen können
javax.net Klassen mit einer Socket-Fabrik
javax.net.ssl SSL-Verschlüsselung
javax.print Java Print Service API
javax.print.attribute Attribute (wie Anzahl der Seiten, Ausrichtung) beim Java Print Service
javax.print.attribute.
standard
Standard für einige Drucker-Attribute
javax.print.event Ereignisse beim Drucken
javax.rmi Nutzen von RMI über das CORBA-Protokoll RMI-IIOP
javax.rmi.CORBA Unterstützt Portabilität von RMI-IIOP.
javax.security.auth Framework für Authentifizierung und Autorisierung
javax.security.auth.callback Informationen wie Benutzernamen oder Passwort vom Server beziehen
javax.security.auth.kerberos Unterstützung von Kerberos zur Authentifizierung in Netzwerken
javax.security.auth.login Framework für die Authentifizierungsdienste
javax.security.auth.spi Schnittstelle für Authentifizierungsmodule
javax.security.auth.x500 Für X.509 Zertifikate, X.500 Principal und X500PrivateCredential
javax.security.cert Public-Key-Zertifikate
javax.security.sasl Unterstützung für SASL (Simple Authentication and Security Layer)
javax.sound.midi Ein- und Ausgabe, Synthetisierung von MIDI-Daten
javax.sound.midi.spi Schnittstellen für Anbieter von neuen MIDI-Diensten
javax.sound.sampled Schnittstellen zur Ausgabe und Verarbeitung von Audio-Daten
javax.sound.sampled.spi Schnittstellen für Anbieter von Audio-Konvertern, Lese- und Schreibroutinen
javax.sql Datenquellen auf Serverseite
javax.sql.rowset Implementierung von RowSet. Mit Unterpaketen
javax.swing Definiert die einfachen Swing-Komponenten.
javax.swing.border Grafische Rahmen für die Swing-Komponenten
javax.swing.colorchooser Anzeige vom JColorChooser, einer Komponente für die Farbauswahl
javax.swing.event Ereignisse der Swing-Komponenten
javax.swing.filechooser Dateiauswahldialog unter Swing: JFileChooser
javax.swing.plaf Unterstützt auswechselbares Äußeres bei Swing durch abstrakte Klassen.
javax.swing.plaf.basic Besonders einfach gehaltenes Erscheinungsbild für Swing-
Komponenten
javax.swing.plaf.metal Plattformunabhängiges Standarderscheinungsbild von Swing-
Komponenten
javax.swing.plaf.multi Benutzerschnittstellen, die mehrere Erscheinungsbilder kombinieren
javax.swing.plaf.synth Swing-Look-and-Feel aus XML-Dateien
javax.swing.table Rund um die grafische Tabellenkomponente javax.swing.JTable
javax.swing.text Unterstützung für Textkomponenten
javax.swing.text.html HTMLEditorKit zur Anzeige und Verwaltung eines HTML-Texteditors
javax.swing.text.html.parser Einlesen, visualisieren und strukturieren von HTML-Dateien
javax.swing.text.rtf Editorkomponente für Texte im Rich-Textformat (RTF)
javax.swing.tree Zubehör für die grafische Baumansicht javax.swing.JTree
javax.swing.undo Undo- oder Redo-Operationen, etwa für einen Texteditor
javax.transaction Ausnahmen bei Transaktionen
javax.transaction.xa Beziehung zwischen Transactions-Manager und Resource-Manager für Java Transaction API (JTA), besonders für verteilte Transaktionen (Distributed Transaction Processing: The XA Specification)
javax.xml Konstanten aus der XML-Spezifikation
javax.xml.datatype Schema-Datentypen Dauer und Gregorianischer Kalender
javax.xml.namespace QName für den Namensraum
javax.xml.parsers Einlesen von XML-Dokumenten
javax.xml.transform Allgemeine Schnittstellen zur Transformation von XML-Dokumenten
javax.xml.transform.dom Implementiert Transformationen auf der Basis von XML-Parsern nach dem DOM-Standard.
javax.xml.transform.sax Implementiert Transformationen auf der Basis von XML-Parsern nach dem SAX2-Standard.
javax.xml.transform.stream Transformationen auf der Basis von linearisierten XML-Dokumenten.
javax.xml.validation Validation nach einem Schema
javax.xml.xpath XPath API
org.ietf.jgss Framework für Sicherheitsdienste wie Authentifizierung, Integrität, Vertraulichkeit
org.w3c.dom Klassen für die Baumstruktur eines XML-Dokuments nach DOM-Standard. Mit Unterpaketen bootstrap und ls.
org.xml.sax Ereignisse, die beim Einlesen eines XML-Dokuments nach dem SAX-Standard auftreten.
org.xml.sax.ext Zusätzliche Behandlungsroutinen für SAX2-Ereignisse
org.xml.sax.helpers Adapterklassen und Standardimplementierungen

Daneben definieren die Pakete org.omg eine Reihe von CORBA-Diensten, die für unsere Betrachtung jedoch zu speziell sind.

Standard Extension API

Einige der Java-Pakete beginnen mit javax. Dies sind Erweiterungspakete (eXtentions), die die Kern-Klassen ergänzen. Im Laufe der Zeit sind jedoch viele der früher zusätzlich einzubindenden Pakete in die Standard-Distribution gewandert, so dass heute ein recht großer Anteil mit javax beginnt, aber keine Erweiterungen mehr darstellen, die zusätzlich installiert werden müssen. Sun wollte die Pakete nicht umbenennen, um so eine Migration nicht zu erschweren. Fällt heute im Quellcode ein Paketname mit javax auf, so ist es daher nicht mehr so einfach zu entscheiden, ob eine externe Quelle mit eingebunden werden muss, beziehungsweise ab welcher Java-Version das Paket Teil der Distribution ist.

Echte externe Pakete von Sun sind unter anderem:

gp  Enterprise/Server API mit den Java Enterprise Bean, Servlets und JavaServer Faces
gp  JDO zum Ablegen von Objekten in Datenbanken
gp  JavaSpaces für gemeinsamen Speicher unterschiedlicher Laufzeitumgebungen
gp  JXTA erlaubt das Aufbauen von P2P-Netzwerken
gp  3D-API
gp  Java Telephony API





1   NIO steht ja für New IO. Dumm, wenn es auch wieder überholt ist. Erwartet uns dann NNIO?





Copyright © Galileo Press GmbH 2004
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.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de