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

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort

Download:
- ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel (8. Auflage)

Java ist auch eine Insel (8. Aufl.)
8., aktual. Auflage, geb., mit DVD
1.475 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1371-4
Pfeil 10 Die Klassenbibliothek
Pfeil 10.1 Die Java-Klassenphilosophie
Pfeil 10.1.1 Übersicht über die Pakete der Standardbibliothek
Pfeil 10.2 Object ist die Mutter aller Klassen
Pfeil 10.2.1 Klassenobjekte
Pfeil 10.2.2 Objektidentifikation mit toString()
Pfeil 10.2.3 Objektgleichheit mit equals() und Identität
Pfeil 10.2.4 Klonen eines Objekts mit clone()
Pfeil 10.2.5 Hashcodes über hashCode() liefern
Pfeil 10.2.6 Aufräumen mit finalize()
Pfeil 10.2.7 Synchronisation
Pfeil 10.3 Die Spezial-Oberklasse Enum
Pfeil 10.3.1 Methoden auf Enum-Objekten
Pfeil 10.3.2 enum mit eigenen Konstruktoren und Methoden
Pfeil 10.4 Klassenlader (Class Loader)
Pfeil 10.4.1 Woher die kleinen Klassen kommen
Pfeil 10.4.2 Setzen des Klassenpfades
Pfeil 10.4.3 Die wichtigsten drei Typen von Klassenladern
Pfeil 10.4.4 Der java.lang.ClassLoader
Pfeil 10.4.5 Hot Deployment mit dem URL-Classloader
Pfeil 10.4.6 Das jre/lib/endorsed-Verzeichnis
Pfeil 10.5 Die Utility-Klasse System und Properties
Pfeil 10.5.1 Systemeigenschaften der Java-Umgebung
Pfeil 10.5.2 line.separator
Pfeil 10.5.3 Property von der Konsole aus setzen
Pfeil 10.5.4 Umgebungsvariablen des Betriebssystems
Pfeil 10.5.5 Einfache Zeitmessung und Profiling
Pfeil 10.6 Ausführen externer Programme und Skripte
Pfeil 10.6.1 ProcessBuilder und Prozesskontrolle mit Process
Pfeil 10.6.2 Einen Browser/E-Mail-Client/Editor aufrufen
Pfeil 10.6.3 Ausführen von Skripten
Pfeil 10.7 Benutzereinstellungen
Pfeil 10.7.1 Benutzereinstellungen speichern
Pfeil 10.7.2 Einträge einfügen, auslesen und löschen
Pfeil 10.7.3 Auslesen der Daten und Schreiben in anderem Format
Pfeil 10.7.4 Auf Ereignisse horchen
Pfeil 10.7.5 Zugriff auf die gesamte Windows-Registry
Pfeil 10.8 Musik abspielen
Pfeil 10.8.1 Die Arbeit mit AudioClip
Pfeil 10.8.2 Java Sound API
Pfeil 10.9 Annotationen
Pfeil 10.9.1 Annotationstypen @Override, @Deprecated, @SuppressWarnings
Pfeil 10.9.2 Annotationen für Web-Services
Pfeil 10.10 Zum Weiterlesen

Was wir brauchen, sind ein paar verrückte Leute; seht euch an, wohin uns die Normalen gebracht haben. – George Bernard Shaw (1856–1950)

10 Die Klassenbibliothek


Galileo Computing - Zum Seitenanfang

10.1 Die Java-Klassenphilosophie Zur nächsten ÜberschriftZur vorigen Überschrift

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 vom Betriebssystem abhängig 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 - Zum Seitenanfang

10.1.1 Übersicht über die Pakete der Standardbibliothek topZur vorigen Überschrift

Es folgt eine Übersicht über die mehr als 200 Pakete, die Java in der Version 6 deklariert. Sie beschreiben zusammen 3.777 Typen, davon 2.457 Klassen, 972 Schnittstellen, 49 Aufzählungen, 473 Ausnahmeklassen und 32 Errorklassen. Insgesamt gibt es 1.482 Objektvariablen, 4.408 statische Variablen/Konstanten, 21.881 Objektmethoden in Klassen und 5.226 aus Schnittstellen, 3.039 Klassenmethoden sowie 4.973 Konstruktoren. (In Java 1.0 verteilten sich 212 Klassen auf 8 Pakete.) Die wichtigen Pakete sind fett hervorgehoben.


Tabelle 10.1 Pakete in Java 6

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 zur 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.



Tabelle 10.1 Pakete in Java 6

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.

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.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

JavaBeans definieren wiederverwendbare Komponenten auf der Client-Seite, die beim Programmieren visuell konfiguriert werden können.

java.beans.beancontext

Beans lassen sich in einem Bean-Kontext zusammenbringen.

java.io

Möglichkeiten zur Ein- und Ausgabe. Dateien werden als Objekte repräsentiert. Datenströme erlauben den 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 [NIO steht ja für New IO. Eine Aktualisierung ist NIO2.]) für performante Ein- und Ausgabe.

java.nio.channels

Datenkanäle für nicht blockierende Ein- und Ausgabe- operationen.

java.nio.charset

Kodierungen für die Übersetzung zwischen Byte und Unicode-Zeichen.

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 Garbage Collector DGC (Distributed Garbage Collection).

java.rmi.registry

Zugriff auf den Namensdienst unter RMI, die Registry.

java.rmi.server

Die Serverseite 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 relationale 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 Thread-Pools.

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.activation

JavaBeans Activation Framework. Findet unter anderem MIME-Typen.

javax.activity

Drei Ausnahmen im Fall von CORBA-Fehlern.

javax.annotation

Zentrale Annotationen, etwa für Injizierung oder Lebenszyklus.

javax.annotation.processing

Schnittstellen für Annotation Processors.

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 zur Verschlüsselung.

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.stream

Unterstützt das Einlesen und Schreiben von Bildern durch die Behandlung der unteren Ebenen.

javax.jws

Annotationen für Web-Services.

javax.jws.soap

Nur Annotation und Aufzählungen für SOAP-Binding.

javax.lang.model

Eine Aufzählung für Java-Versionen.

javax.lang.model.element

Repräsentiert Elemente der Java-Sprache (Methode, Annotation ...).

javax.lang.model.type

Repräsentiert Java-Typen (Fehlertyp, Referenztyp, ...).

javax.lang.model.util

Utility-Klassen für Programmelemente und Typen.

javax.management

Management-API (JMX) mit einigen Unterpaketen.

javax.management.loading

Unterstützt dynamisch geladene Klassen.

javax.management.modelmbean

Beschreibung von Model-MBeans.

javax.management.monitor

Zur Beobachtung von MBeans.

javax.management.openmbean

Definition der Open MBean als spezielle MBean.

javax.management.relation

Verbindet MBeans im MBean-Server.

javax.management.remote

Remote-Zugriff auf einen JMX-MBean Server.

javax.management.remote.rmi

Über RMI Remote-Zugriff auf MBean-Server.

javax.management.timer

Timer MBean meldet nach Zeitablauf Ereignisse.

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.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.rmi.ssl

Mit SSL mehr Sicherheit bei RMI-Verbindungen.

javax.script

Scripting-API zum Einbinden von Skriptsprachen.

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.x500

Für X.509-Zertifikate, X.500 Principal und X500 PrivateCredential.

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.sampled

Schnittstellen zur Ausgabe und Verarbeitung von Audio-Daten.

javax.sql

Datenquellen auf Serverseite.

javax.sql.rowset

Implementierung von RowSet. Mit Unterpaketen.

javax.swing

Einfache 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 ab-strakte Klassen.

javax.swing.plaf.basic

Basisimplementierung vom Erscheinungsbild der 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

Typen 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.tools

Ansprachen von Java-Tool; im Moment nur der Compiler.

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.bind

JAXB-Typen zum Binden von XML-Strukturen an Objekte.

javax.xml.bind.annotation

Im Wesentlichen JAXB 2.0-Annotationen.

javax.xml.bind.annotation.adapters

Zur Behandlung von beliebigen Java-Klassen, die JAXB auf XML-Strukturen abbilden.

javax.xml.bind.attachment

Attachements von JAXB.

javax.xml.bind.util

Utility-Klassen für JAXB.

javax.xml.crypto

Klassen für XML-Signaturen oder zur Verschlüsselung von XML-Daten.

javax.xml.datatype

Schema-Datentypen für Dauer und gregorianischen Kalender.

javax.xml.namespace

QName für den Namensraum.

javax.xml.parsers

Einlesen von XML-Dokumenten.

javax.xml.soap

Aufbau von SOAP-Nachrichten.

javax.xml.stream

StAX-API für XML Pull-Parser.

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.ws

JAX-WS API.

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.

org.w3c.dom.events

DOM-Events.

org.w3c.dom.ls

Laden und Speichern von XML-Strukturen.

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 deklariert das Paket org.omg eine Reihe von Unterpaketen mit CORBA-Diensten, die für unsere Betrachtung jedoch zu speziell sind. SPI-Pakete (SPI steht für Service Provider Implementation) definieren Verhalten für Anbieter bestimmter Funktionalitäten und sind ebenfalls nicht genannt.

Standard Extension API

Einige der Java-Pakete beginnen mit javax. Dies sind Erweiterungspakete (extensions), 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, 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:

  • Enterprise/Server API mit den Enterprise JavaBeans, Servlets und JavaServer Faces
  • Java Persistence API (JPA) zum Abbilden von Objekten auf relationale Datenbanken
  • Java Communications API für serielle und parallele Schnittstelle
  • Java Telephony API
  • Sprachein-/ausgabe mit der Java Speech API
  • JavaSpaces für gemeinsamen Speicher unterschiedlicher Laufzeitumgebungen
  • JXTA zum Aufbauen von P2P-Netzwerken

Hinweis Die Laufzeitumgebung von Sun liefert noch über 3.000 Klassendateien in den Paketen sun und sunw aus. Diese internen Klassen sind nicht offiziell dokumentiert [Das Buch »Java Secrets« von Elliotte Rusty Harold geht den Klassen nach, ist aber schon älter.], aber zum Teil sehr leistungsfähig und erlauben selbst direkten Speicherzugriff oder können Objekte ohne Standard-Konstruktor erzeugen:

Listing 10.1 com/tutego/insel/sun/UnsafeInstance.java, Ausschnitt

Field field = Unsafe.class.getDeclaredField( "theUnsafe" ); 
field.setAccessible( true ); 
sun.misc.Unsafe unsafe = (sun.misc.Unsafe) field.get( null ); 
File f = (File) unsafe.allocateInstance( File.class ); 
System.out.println( f.getPath() );                          // null

File hat keinen Standard-Konstruktor, nicht einmal einen privaten. Diese Art der Objekterzeugung kann bei der Deserialisierung (siehe dazu Kapitel 14, »Dateien und Datenströme«) hilfreich sein.




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Java ist auch eine Insel





Java ist auch eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Tipp
Zum Katalog: Coding for Fun





 Coding for Fun


 Buchempfehlungen
Zum Katalog: Objektorientierte Programmierung





 Objektorientierte
 Programmierung


Zum Katalog: Einstieg in Eclipse 3.4






 Einstieg in
 Eclipse 3.4


Zum Katalog: Java 6 lernen mit Eclipse






 Java 6 lernen
 mit Eclipse


Zum Katalog: NetBeans Platform 6






 NetBeans
 Platform 6


Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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