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.
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.
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.ref
|
Leben mit dem Garbage-Collector. Spezielle Varianten von Objekt-Referenzen, die vom Garbage-Collector besonders behandelt werden.
|
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 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
|
Schnittstellen für die Entwicklung internationalisierter Programme. Behandlung von Text, Formatierung von Datumswerten und
Zahlen
|
java.util
|
Datenstrukturen, Raum und Zeit sowie Teile der Internationalisierung, Zufallszahlen
|
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.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.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.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
|
Zugriff von Java auf Datenbanken
|
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.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.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.
|
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
|
org.xml.sax
|
Ereignisse, die beim Einlesen eines XML-Dokuments nach dem SAX-Standard auftreten.
|
org.xml.sax.ext
|
Zusätzliche Behandlungsroutinen für SAX-Ereignisse
|
org.xml.sax.helpers
|
Adapterklassen und Standardimplementierungen
|