Pakete
Die bereits vorhandenen Klassen und Interfaces sind in Paketen (packages) gebündelt. Soll in einem Javaprojekt auf eine vordefinierte Klasse oder ein Interface AnyName zugegriffen werden, so kann entweder dem Java-Compiler durch eine import-Anweisung mitgeteilt werden, in welchem Paket sich AnyName befindet, oder aber AnyName wird explizit in das Projekt eingebunden:
import pname.*; // Alternative 1
import pname.AnyName; // Alternative 2
Nachfolgend sollen nur einige der Pakete kurz beschrieben werden, welche für die Projektbeispiele dieses Tutorials eine Rolle spielen:
java.lang
Die insgesamt 45 Klassen und 13 Interfaces dieses Pakets sind so elementar, dass diese
in jedem Javaprojekt auch ohne import-Anweisung automatisch eingebunden werden. Es handelt
sich beispielsweise um die Klasse Object (die Wurzel der gesamten Klassenhierarchie von Java), die
statischen Klassen Math und
System, die Wrapperklassen und deren Superklasse
Number und das Interface Runnable, welches von jeder Klasse, die einen
Thread beinhaltet, implementiert werden muss.
java.awt
Unter den rund 100 Klassen dieses Paket befindet sich z.B. die abstrakte Klasse Toolkit,
von der jede konkrete Implementierung des
Abstract Window Toolkit abgeleitet ist.
Mit dem
DefaultToolkit lässt sich beispielsweise ein eigenes Icon in der zu
einem Fenster gehörenden Titelzeile einbinden. Weitere Klassen, die auch in
den Projektbeispielen dieses Tutorials benutzt werden, sind
AlphaComposite,
BasicStroke (→ Javaprojekt
FilledRectangle),
BorderLayout,
FlowLayout,
GridLayout (→ Javaprojekt
LayoutPerformer)
AlphaComposite (→ Javaprojekt
MysteriousShapes)
Color (→ Javaprojekt
ColoredButtons),
Font und
Graphics2D.
java.awt.event
Die insgesamt 18 Interfaces und 24 Klassen dieses Pakets sind dazu da, im
Zusammenhang mit AWT-Komponenten eintretende Ereignisse zu registrieren,
bzw. auf diese zu reagieren. Hierzu gehören beispielsweise die Interfaces
ActionListener und
KeyListener sowie die abstrakten Klassen
MouseAdapter, KeyAdapter,
WindowAdapter und die Klassen
MouseEvent, KeyEvent,
WindowEvent.
java.awt.geom
Dieses Paket stellt Klassen zur Verfügung, um 2-dimensionale Objekte definieren und verändern zu können, etwa
Area, Ellipse2D, Line2D, Pint2D,
Rectangle2D, RoundRectangle2D.
javax.swing
Die Klassen dieses Pakets werden für die Erstellung von graphischen Benutzeroberflächen (Graphical
User Interfaces) benötigt, sofern diese mit Hilfe von
Swing-Komponenten
realisiert werden sollen (→ Javaprojekt
SortingAlgorithms):
JFrame, JPanel,
JLabel,
JButton,
JTextField, ...
javax.swing.event
Die Klassen bzw. Interfaces dieses Pakets stellen Methoden und Objekte zur Verfügung, die auf Ereignisse
reagieren, die bei der Verwendung von Swing-Komponenten eintreten können.
Beispielsweise definiert das Interface ChangeListener
ein Objekt, das auf ChangeEvents, also auf Änderungen
von Swing-Komponenten reagieren kann. Mit dem vom Interface
EventListener abgeleiteten Interface DocumentListener
hat man die Möglichkeit, Änderungen in einem Textdokument zu registrieren
(→ Javaprojekt
TextAnalysis).
java.io
Dieses Paket stellt Klassen für Ein- und Ausgabevorgänge zur Verfügung,
beispielsweise BufferedReader oder
InputStreamReader. Ein Objekt vom Typ BufferedReader
ist ein Eingabepuffer, der es gestattet, Eingabedaten beispielsweise von der
Tastatur zeilenweise auszuwerten.
java.util
Dieses Paket enthält vor allem Klassen, die die Arbeit mit speziellen
Datenstrukturen (arrays, lists, queues, deques, sets, maps) ermöglichen
bzw. erleichtern, beispielsweise
Collections (ein
Bestandteil vom Java Collections Framework). Daneben gibt es BitSet
(eine Klasse, bei der es um Vektoren geht, deren Elemente Bits sind),
Random (deren Instanzen Folgen von Zufallszahlen mit einer Periode von 248
generieren können), Scanner (ein Text-Scanner, mit
dem beispielsweise das Parsen von Zeichenketten möglich ist) und viele
andere nützliche Dinge.