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

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
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 Basisklasse Number für numerische Wrapper-Objekte
    gp 8.2.2 Die Klasse Integer
    gp 8.2.3 Wertebereich eines Typs und Überlaufkontrolle
    gp 8.2.4 Unterschiedliche Ausgabeformate
    gp 8.2.5 Autoboxing: Boxing und Unboxing
    gp 8.2.6 Die Character-Klasse
    gp 8.2.7 Die Boolean-Klasse
  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 Die Utility-Klasse System
    gp 8.4.1 Systemeigenschaften der Java-Umgebung
    gp 8.4.2 line.separator
    gp 8.4.3 Browser-Version abfragen
    gp 8.4.4 Property von der Konsole aus setzen
    gp 8.4.5 Umgebungsvariablen des Betriebssystems
    gp 8.4.6 Einfache Zeitmessung und Profiling
  gp 8.5 Ausführung von externen Programmen
    gp 8.5.1 Arbeiten mit dem ProcessBuilder
    gp 8.5.2 Die Rückgabe Process übernimmt die Prozesskontrolle
    gp 8.5.3 DOS-Programme aufrufen
    gp 8.5.4 Umgebungsvariablen und Startverzeichnis
    gp 8.5.5 Auf das Ende warten
    gp 8.5.6 Die Windows-Registry verwenden
    gp 8.5.7 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 Die wichtigsten 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 getContextClassLoader() vom Thread
    gp 8.6.7 Wie heißt die Klasse mit der Methode main()?
  gp 8.7 Annotationen
    gp 8.7.1 Die eingebauten Annotations-Typen aus java.lang
    gp 8.7.2 @Deprecated
    gp 8.7.3 Annotationen mit zusätzlichen Informationen
    gp 8.7.4 @SuppressWarnings

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, auch 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 ergibt sich in Java seltener, weil sich die Entwickler große Mühe gaben, alle wichtigen Funktionen in wohlgeformten Paketen unterzubringen. 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 166 Pakete, die Java in der Version 5 definiert. Sie beschreiben zusammen mehr als 3 200 Klassen und Schnittstellen. Die Typen enthalten mehr als 1 400 Objektvariablen, über 4 100 statische Variablen, fast 24 400 Objektmethoden und mehr als 3 700 statische Methoden. Die Exemplare der Klassen erzeugen über 4 400 Konstruktoren. (In Java 1.0 verteilten sich 212 Klassen auf 8 Pakete.)

Uns fällt auf, dass die Benennung der Pakete methodisch erfolgte. 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 JDK 5

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 Grafik-ausgabe 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 Zwischen-ablage 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, das automatisch eingebunden ist 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, Klassen und Objekte über sich erzählen zu lassen.
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 für RSA- und DSA-Schlüssel.
java.security.spec Parameter der Schlüssel und Algorithmen für die 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äß den 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 Schreib- routinen.
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-Text-Format (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, sodass heute ein recht großer Anteil mit javax beginnt, aber keine Erweiterungen mehr darstellt, 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
 << zurück




Copyright © Galileo Press GmbH 2005
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, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de