|
|
|
|
Java
Programmierhandbuch und Referenz
Stefan Middendorf, Reiner Singer, Jörn Heid
dpunkt.verlag
EAN: 9783898641579 (ISBN: 3-89864-157-0)
1128 Seiten, kartoniert, 17 x 25cm, 2003, 3. Auflage mit CD-ROM
EUR 50,00 alle Angaben ohne Gewähr
|
|
Umschlagtext
Java ist eine von Sun entwickelte objektorientierte Programmiersprache, die mit Eigenschaften wie Portabilität, Sicherheit, Robustheit und Multithreading eine weite Verbreitung gefunden hat. Durch eine schnelle Weiterentwicklung verfügt die Java-2-Plattform heute über eine sehr umfangreiche Standardbibliothek.
Das Buch wendet sich an Leser, die über grundlegende Programmierkenntnisse verfügen und sich Java aneignen wollen. Es bietet eine fundierte Einführung in die Konzepte und die Programmierung von Java auf Basis der Java-2-Plattform, Standard Edition (J2SE). Alle wesentlichen Bereiche des Java-API werden sehr detailliert dargestellt und durch zahlreiche ausprogrammierte Beispiele illustriert. Durch den ausführlichen Referenzteil auf der CD-ROM, in dem alle Klassenbestandteile einzeln beschrieben werden, eignet sich das Buch auch als Nachschlagewerk für den erfahrenen Programmierer.
In der dritten Auflage wurde das Buch komplett überarbeitet und auf den Stand der Java-2-Plattform, Standard Edition in der Version 1.4 (J2SDK 1.4) aktualisiert. Zur besseren Orientierung ist bei allen neuen Features stets angemerkt, in welcher Version sie hinzugekommen sind. Um Raum für neue Kapitel zu schaffen, wurde der Umfang der abgedruckten Referenz eingeschränkt. Auf der CD befindet sich die komplette Referenz im HTML-Format.
Auf der beiliegenden CD befindet sich eine HTML-Version des gesamten Buchs, in die zahlreiche Applets zur Demonstration der jeweils dargestellten Inhalte integriert sind. Darüber hinaus enthält die CD eine komplette Referenz der J2SE, die Quelltexte aller Beispielprogramme sowie das J2SDK 1.4.
Inhaltsverzeichnis
Teil I Die Sprache Java
1.1 Java
1.2 Eigenschaften von Java
1.2.1 Portabel
1.2.2 Objektorientiert
1.2.3 Multithreaded
1.2.4 Verteilt
1.2.5 Robust
1.2.6 Sicher
1.2.7 Unterschiede zu C++
1.3 Die Geschichte der Java-Plattform
2 Die Sprachelemente von Java
2.1 Der Unicode-Zeichensatz
2.1.1 Die UTF-8-Kodierung
2.1.2 Plattformspezifische Zeichenkodierungen
2.2 Quelltexte
2.3 Blöcke
2.3.1 Deklarationen in Blöcken
2.4 Namensräume
2.4.1 Die Hierarchie der Namensräume
2.5 Anweisungen
2.5.1 if
2.5.2 switch
2.5.3 while
2.5.4 do
2.5.5 for
2.5.6 break
2.5.7 continue
2.5.8 return
2.5.9 Bedingter Ausdruck
2.6 Kommentare
2.7 Reservierte Wörter
2.8 Bezeichner und Namenskonventionen
2.9 Konstanten
2.9.1 Globale Konstanten
2.10 Einfache Datentypen
2.10.1 Der Typ boolean
2.10.2 Die Ganzzahltypen
2.10.3 Die Gleitpunkttypen
2.10.4 Der Typ char
2.11 Verweistypen
2.12 Initialisierung
2.13 Verpackt: Die Klassen der Standardtypen
2.14 Strings
2.14.1 Erzeugen von Strings
2.14.2 String-Literale
2.14.3 Verkettung
2.14.4 Kopieren von Strings
2.14.5 Konvertierung von Strings
2.14.6 Methoden der Klasse String
2.14.7 Methoden der Klasse StringBuffer
2.15 Arrays
2.15.1 Arrays vs. Objekte
2.15.2 Struktur von Arrays
2.15.3 Deklaration von Arrays
2.15.4 Initialisierung von Arrays
2.15.5 Zugriff auf Arrays
2.15.6 Kopieren von Arrays
2.16 Arithmetik in Java
2.16.1 Ganzzahl-Nulldivision
2.16.2 Gleitpunkt-Nulldivision
2.16.3 Eine Zahl, die keine ist: NaN
2.16.4 Numerische Konvertierungen
2.16.5 Erweiterte Gleitpunktdarstellungen
2.16.6 Mathematische Funktionen
2.16.7 Rechnen mit beliebiger Genauigkeit
2.17 Der Garbage Collector
3 Objektorientierte Programmierung
3.1 Hintergrund
3.2 Das Konzept
3.2.1 Botschaften
3.2.2 Kapselung
3.2.3 Klassen und Exemplare
3.2.4 Methoden
3.2.5 Vererbung und Polymorphismus
3.2.6 Überladen
3.3 Gegenüberstellung
4 Objektorientierte Programmierung mit Java
4.1 Klassendefinition
4.2 Verweise und Erzeugung von Exemplaren
4.2.1 Der new-Operator
4.3 Konstruktoren
4.3.1 Definition von Konstruktoren
4.3.2 Der Verweisoperator this
4.3.3 Statische Initialisierungen
4.3.4 Exemplar-Initialisierungen
4.4 Entfernen von Objekten
4.4.1 Finalisierung von Objekten
4.4.2 Verketten von Finalisierern
4.5 Vererbung
4.5.1 Die Klasse Object
4.5.2 Verketten von Konstruktoren
4.5.3 Überschreiben von Methoden
4.5.4 super in überschriebenen Methoden
4.5.5 Modifier für Klassen
4.6 Datenelemente
4.6.1 Modifier für Datenelemente
4.7 Methoden
4.7.1 Deklaration von Methoden
4.7.2 Lokale Variablen
4.7.3 Aufruf von Methoden
4.7.4 Überladen von Methoden
4.7.5 Modifier für Methoden
4.8 Pakete
4.8.1 Pakete und Zugriffsrechte
4.8.2 Zuordnung zu Paketen
4.8.3 Benennung von Paketen
4.8.4 Importieren von Paketen und Klassen
4.8.5 Die Auflösung von Paketnamen
4.8.6 Pakete in Applets
4.8.7 Paketversionierung
4.9 Archive
4.9.1 Archivierung von Paketen
4.9.2 Archivdateien bei Applets
4.10 Kapselung
4.10.1 Zugriffsklassen für Datenelemente und Methoden
4.10.2 Zugriffsklassen für Klassen
4.10.3 Ändern der Zugriffsklasse beim Überschreiben
4.10.4 Kapselung von Konstruktoren
4.11 Verweise im Detail
4.11.1 Verweise, Verweistypen und Exemplare
4.11.2 Kopieren von Objekten
4.11.3 Zuweisungskompatibilität
4.11.4 Cast-Konstrukte mit Verweistypen
4.11.5 Der instanceof-Operator
4.11.6 Referenzklassen
4.12 Interfaces
4.12.1 Definition von Interfaces
4.12.2 Interfaces vs. abstrakte Klassen
4.12.3 Interfaces vs. Mehrfachvererbung
4.12.4 Implementierung eines Interface
4.12.5 Klassenvererbung und Implementierung
4.12.6 Verwendung eines Interface
4.12.7 Vererbung bei Interfaces
4.13 Geschachtelte Klassen
4.13.1 Geschachtelte Top-Level-Klassen
4.13.2 Aufzählungstypen mit geschachtelten Klassen
4.13.3 Interne Realisierung innerer Klassen
4.13.4 Elementklassen
4.13.5 Lokale Klassen
4.13.6 Anonyme Klassen
4.14 Die Meta-Klasse Class
4.15 Laden von Klassen
4.15.1 Ablauf
4.15.2 Die Klasse ClassLoader
4.16 Das Reflection-API
4.16.1 Aufruf von Konstruktoren
4.16.2 Aufruf von Methoden
4.16.3 Zugriff auf Datenelemente
4.16.4 Arrays
4.16.5 Dynamische Proxies
5 Exceptions
5.1 Das Konzept
5.2 Exceptions vs. Errors
5.3 Exceptions sind Objekte
5.4 Der Ablauf einer Exception
5.5 Behandlung von Exceptions
5.6 Abfangen einer Exception
5.6.1 try
5.6.2 catch
5.6.3 finally
5.7 Auslösen einer Exception
5.8 Exceptions und Methodendeklarationen
5.9 Die throws-Klausel
5.10 Vererbung und throws
5.11 Benutzerdefinierte Exceptions
5.12 Umsetzen von Exceptions
5.13 Verkettung von Exceptions
6 Zusicherungen (Assertions)
6.1 Das Konzept
6.2 Verwendung von Zusicherungen
6.3 Aktivierung von Zusicherungen
6.3.1 Aktivierung auf der Kommandozeile von java
6.3.2 Aktivierung im Programm
Teil II Programmieren mit Java
7 Applets und Applikationen
7.1 Applikationen
7.2 Applets
7.2.1 Einbinden von Applets
7.2.2 Java-Plug-in
7.2.3 Lebenszyklus eines Applets
7.2.4 Einlesen von Parametern
7.2.5 Kommunikation zwischen Browser und Applet
7.3 Sound und Grafiken
7.3.1 Applets
7.3.2 Applikationen
7.4 Applets mit Applikationen vereinigt
8 Oberflächenprogrammierung
8.1 Einführendes Beispiel
8.2 Swing-Komponenten
8.2.1 Lightweight- und Heavyweight-Komponenten
8.3 Top-Level-Container
8.3.1 JFrame
8.3.2 JDialog
8.3.3 JWindow
8.3.4 JApplet
8.4 Allgemeine Container
8.4.1 JPanel
8.4.2 JScrollPane
8.4.3 JSplitPane
8.4.4 JTabbedPane
8.4.5 JLayeredPane
8.4.6 JDesktopPane
8.4.7 JInternalFrame
8.4.8 JToolBar
8.4.9 JPopupMenu
8.4.10 Popup
8.5 Einfache Komponenten
8.5.1 AbstractButton
8.5.2 JButton
8.5.3 JToggleButton
8.5.4 JCheckBox
8.5.5 JRadioButton
8.5.6 Menüs
8.5.7 JSeparator
8.5.8 JLabel
8.5.9 JFileChooser
8.5.10 JColorChooser
8.5.11 JOptionPane
8.5.12 JToolTip
8.6 Komplexe Elemente
8.6.1 Model-View-Controller
8.6.2 JComboBox
8.6.3 JList
8.6.4 JProgressBar
8.6.5 ProgressMonitor
8.6.6 ProgressMonitorInputStream
8.6.7 JSlider
8.6.8 JSpinner
8.6.9 JTable
8.6.10 JTree
8.6.11 javax.swing.text.JTextComponent
8.6.12 JTextField
8.6.13 JPasswordField
8.6.14 JFormattedTextField
8.6.15 JTextArea
8.6.16 JEditorPane
8.6.17 JTextPane
8.7 Nützliches bei Swing
8.7.1 Cursor
8.7.2 Action
8.7.3 Timer
8.7.4 SwingUtilities
8.7.5 Copy-and-Paste
8.7.6 Drag-and-Drop
8.7.7 Accessibility
8.8 Die Layout-Manager
8.8.1 Sinn und Zweck der Layout-Manager
8.8.2 Anwendung von Layout-Managern
8.8.3 Das FlowLayout
8.8.4 Das BorderLayout
8.8.5 Das CardLayout
8.8.6 Das GridLayout
8.8.7 Das GridBagLayout
8.8.8 Das BoxLayout
8.8.9 SpringLayout
8.8.10 Selbstdefinierte Layout-Manager
8.8.11 Positionierung ohne Layout-Manager
8.9 Das Implementierungskonzept
8.9.1 Das Peer-Konzept des AWT
8.9.2 Das Implementierungskonzept von Swing
9 Ereignisbehandlung
9.1 Möglichkeiten der Event-Verarbeitung
9.2 Ereignisse ab dem JDK 1.1
9.2.1 Ereignisse als Objekte
9.2.2 Die vordefinierten Ereignisse
9.2.3 Delegieren statt kaskadieren
9.2.4 Event-Listener
9.2.5 Registrierung
9.2.6 Event-Adapter
9.2.7 Anonyme Klasse
9.2.8 Die Ereignisse im Einzelnen
9.3 Ereignisse in Komponenten
9.3.1 Aktivieren von Ereignissen
9.3.2 Verarbeitung eines Ereignisses
9.3.3 Ein Beispiel: Erzeugen grafischer Buttons
9.4 Erzeugen eigener Ereignisse
10 Streams
10.1 Elementare Ein- und Ausgabe
10.2 Streams seit JDK 1.1
10.3 Unicode statt Bytes
10.3.1 Benutzung der Adapterklassen
10.3.2 Zeichenkodierung
10.4 Byte-, Character- und andere Streams
10.4.1 Abgeleitete Streams
10.4.2 Weitere Streams
10.5 Dateien
10.5.1 Elementare Dateiein- und -ausgabe
10.5.2 Abfragen der Dateiattribute
10.5.3 Temporäre Dateien
10.5.4 RandomAccessFile
10.6 Komprimierung
10.6.1 Komprimierung im GZIP-Format
10.6.2 Komprimierung im Zip-Format
10.6.3 Komprimierung im Deflate-Format
10.7 Das neue I/O-Konzept
11 Multithreading
11.1 Einleitung
11.2 Threads in Java
11.3 Zustände von Threads
11.3.1 Erzeugen und Starten von Threads
11.3.2 Anhalten von Threads
11.4 Prioritäten und Scheduling
11.5 Daemon-Threads
11.6 Lokale Variablen
11.7 Synchronisation von Threads
11.7.1 Synchronisation mit Monitoren
11.7.2 Sperren
11.7.3 Klassenbezogene Sperren
11.7.4 Synchronisation mit Ereignissen
11.7.5 Synchronisation auf das Ende von Threads
11.8 Zeitgesteuerte Ausführung von Threads
11.9 Thread-Groups
11.10 Threads und Exceptions
11.10.1 Abfangen von Exceptions
11.10.2 Auslösen von Exceptions
11.11 Umsetzung von Java-Threads im Betriebssystem
12 Grafikprogrammierung
12.1 Zeichnen von Objekten
12.1.1 Zeichnen mit Java 2D
12.2 Einbinden von Bildern
12.2.1 Fliesenleger: Transparente Applets
12.3 Animation
12.3.1 Laufschrift
12.3.2 Videoplayer
12.4 Offscreen-Images
12.5 Fonts und Fontmetriken
12.5.1 Fonts
12.5.2 Fontmetriken
12.6 Farben und Farbmodelle
12.7 Bildbearbeitung
12.8 PixelGrabber und MemoryImageSource
12.9 Verwendung von Filtern
12.9.1 Farbfilter
12.9.2 Weitere Filter
12.9.3 Mehrfache Filterung
12.10 Image-I/O-API
12.10.1 Lesen und Schreiben von Bildern
12.10.2 Die Klassen im Detail
12.10.3 Lesen von Bildauschnitten
12.10.4 Vorschaubilder
13 Netzwerkprogrammierung
13.1 URL-Verbindungen
13.1.1 URLs
13.1.2 Die URLs des Applets
13.1.3 URL
13.1.4 URLConnection
13.1.5 HttpURLConnection
13.1.6 URL und MIME-Typen
13.2 Socket-Programmierung
13.2.1 Grundlagen
13.2.2 Streamsockets
13.2.3 Datagramm-Sockets
13.2.4 Client/Server-Anwendung
13.2.5 Erweiterbare Sockets
13.2.6 Das Implementierungskonzept
13.3 Verbindungen über SOCKS
14 Die Umgebung eines Java-Programms
14.1 Die Runtime-Umgebung
14.2 Properties
14.2.1 Allgemeine Properties
14.2.2 Properties mit erweitertem Zugriff
14.2.3 Applet-spezifische Properties
14.2.4 Eigene Properties
14.3 Beenden eines Programms
14.3.1 Normale Terminierung
14.4 Preferences
14.4.1 Allgemeines
14.4.2 Speichern und Laden von Einstellungen
14.4.3 Einstellungen im Betriebssystem
14.4.4 Austausch von Einstellungen
14.4.5 Beispiel: Preference-Browser
14.5 Protokollierung (Logging)
14.5.1 Beispiel: Protokollierung im Preference-Browser
14.5.2 Architektur
14.5.3 Benutzerdefiniertes Logging: Syslog
15 Sicherheit
15.1 Sicherheitsmechanismen der Laufzeitumgebung
15.1.1 Bytecode-Verifier und SecurityManager
15.1.2 Sicherheit in Applets
15.1.3 Historische Entwicklung der Sicherheitsmodelle
15.1.4 Konzepte für erweiterte Applet-Zugriffsrechte
15.1.5 Sicherheit in Applikationen
15.1.6 Das Java-2-Sicherheitsmodell
15.1.7 Signieren von JAR-Dateien
15.2 Sicherheit auf Anwendungsebene
15.2.1 Architektur des JCE
15.2.2 Hashing
15.2.3 Symmetrische Verschlüsselung
15.2.4 Java Authentication and Authorization Service
16 Datenstrukturen
16.1 Datenstrukturen bis JDK 1.1
16.1.1 Hashtable und Dictionary
16.1.2 Vector
16.1.3 Stack
16.1.4 Benutzerdefinierte Datenstrukturen
16.1.5 Enumeration
16.2 Java Collection-Framework
16.2.1 Grundlagen
16.2.2 Collection Interfaces
16.2.3 Implementierungen
16.2.4 Anonyme Implementierungen
16.2.5 Algorithmen
16.2.6 Ein Beispiel: Wörter zählen
17 Java Naming and Directory Interface (JNDI)
17.1 Programmierung mit einem Namensdienst
17.2 Programmierung mit einem Verzeichnisdienst
18 Java Database Connectivity
18.1 Grundlagen
18.1.1 Merkmale
18.1.2 Architektur
18.1.3 Treiber-Typen
18.1.4 JDBC-Versionen
18.2 Programmierung mit JDBC
18.2.1 Klassen-Übersicht
18.2.2 Schritte bei der Programmierung
18.2.3 Registrierung des Treibers
18.2.4 Verbindungsaufbau
18.2.5 Ausführen von SQL
18.2.6 SQL-Varianten
18.2.7 Fehlerbehandlung
18.2.8 SQL-Warnungen
18.3 SQL-Typen vs. Java-Typen
18.3.1 Standard-Typen
18.3.2 NULL-Werte
18.3.3 Datum und Zeit
18.4 Verbindungen zum Datenbanksystem
18.4.1 Laden des Treibers
18.4.2 Verbindungs-URL
18.4.3 Verbindungsaufbau
18.4.4 Datenquellen
18.5 Dynamisches SQL
18.5.1 Grundlagen
18.5.2 Interaktion mit dem Datenbanksystem
18.5.3 Parameter
18.5.4 Einsatzgebiete
18.6 Ergebnismengen
18.6.1 Grundlagen
18.6.2 Abfrage von Werten
18.6.3 Anzahl der Zeilen in der Ergebnismenge
18.7 Vorbereitetes SQL
18.7.1 Grundlagen
18.7.2 Interaktion mit dem Datenbanksystem
18.7.3 Verwendung von Parametern
18.8 Stored Procedures/Functions
18.8.1 Grundlagen
18.8.2 Aufrufdefinition und Parameter
18.8.3 Rückgabewerte
18.9 Large Objects (LOBs)
18.9.1 Zugriff auf LONG und LONG RAW
18.9.2 Zugriff auf BLOB und CLOB
18.10 Optimierungstechniken
18.10.1 Row Prefetching
18.10.2 Stapelaktualisierung
18.10.3 Connection Pooling
18.11 Transaktionen
18.11.1 Durchführung von Transaktionen
18.11.2 Steuerung von Transaktionen mit JDBC
18.11.3 Isolations-Ebenen
18.12 JDBC und Portabilität
19 Remote Method Invocation
19.1 Grundlagen
19.1.1 Broker-Implementierungen
19.1.2 Kommunikation
19.1.3 Anwendungsentwicklung am Beispiel RMI
19.1.4 Granularität der Server-Methoden
19.1.5 Dienste
19.1.6 IIOP (Internet Inter ORB Protocol)
19.2 Remote Method Invocation
19.2.1 Parameter und Rückgabewerte
19.2.2 Beispiel: Kaufhaus-Anwendung
19.2.3 Beispiel: Chat-Server
19.2.4 RMI und CORBA
20 XML
20.1 Einleitung
20.2 Einsatzgebiete für XML und Java
20.2.1 XML als Strukturierungsmittel
20.2.2 XML als neutrale Auszeichnungssprache
20.2.3 XML als Datenaustauschformat
20.2.4 XML zur Strukturbeschreibung
20.3 Analogien zwischen XML und Java
20.4 Extensible Markup Language (XML)
20.4.1 Die Entwicklung von SGML zu XML
20.4.2 Extensible Markup Language (XML)
20.5 Wesentliche Sprachkonstrukte von XML
20.5.1 Elemente
20.5.2 Attribute
20.5.3 System- und Public-IDs
20.5.4 Entities
20.5.5 CDATA-Abschnitte
20.5.6 Processing Instructions
20.5.7 Kommentare
20.5.8 Aufbau eines Dokuments
20.5.9 Bedingte Abschnitte
20.6 Namensräume
20.6.1 Definition von Namensräumen
20.6.2 Verwendung von Namensräumen
20.7 Einbettung von Binärdaten in XML-Dokumenten
20.7.1 Feste Zuordnung zu Elementen
20.7.2 Kennzeichnung mit speziellen Attributen
20.8 Erstellung und Verarbeitung eines XML-Dokuments
20.8.1 Entwicklung der DTD
20.8.2 Erstellung eines Exemplars
20.8.3 Parsen des Dokuments
20.8.4 Verarbeitung in der XML-Applikation
20.9 Java-APIs für XML-Verarbeitung
20.10 SAX (Simple API for XML)
20.10.1 Beispiel
20.11 Austausch der Parser-Implementierung
20.12 DOM (Document Object Model)
20.12.1 Die Bestandteile von DOM
20.12.2 Die wichtigsten DOM-Interfaces
20.12.3 Beispiele
20.12.4 DOM-Alternativen
20.13 XSLT-Transformationen
20.13.1 XSLT
20.13.2 Das Transformer-API
20.13.3 Austausch der Implementierung
20.13.4 Stylesheet-Parameter
20.13.5 Hilfsklassen
21 Deployment
21.1 Deployment von Applets
21.1.1 Der Classpath
21.1.2 Der JAR-Index
21.1.3 Applet-Caching
21.1.4 Extensions
21.2 Java Web Start
21.2.1 Beispiel
21.2.2 Die JNLP-Datei
21.2.3 Ablauf beim Starten einer Applikation
21.2.4 JNLP-Dienste
21.2.5 Inkrementelles Update
21.2.6 Developer Pack
Teil III Referenz
22 Überblick
22.1 Aufbau
23 Das Paket java.lang
24 Das Paket java.lang.ref
25 Das Paket java.lang.reflect
A Neuerungen
A.1 Neuerungen in Java 1.1
A.1.1 Allgemeines
A.1.2 Neue APIs und Pakete
A.2 Neuerungen in Java 1.2
A.2.1 Allgemeines
A.2.2 Neue APIs und Pakete
A.3 Neuerungen in Java 1.3
A.3.1 Allgemeines
A.3.2 Neue APIs und Pakete
A.4 Neuerungen in Java 1.4
A.4.1 Allgemeines
A.4.2 Neue APIs und Pakete
B Tools
B.1 Basis-Tools
B.1.1 appletviewer
B.1.2 jar
B.1.3 java
B.1.4 javac
B.1.5 javadoc
B.1.6 javap
B.1.7 jdb
B.1.8 extcheck
B.2 Internationalisierungs-Tools
B.2.1 native2ascii
B.3 RMI-Tools
B.3.1 rmic
B.3.2 rmiregistry
B.3.3 rmid
B.3.4 serialver
B.4 Sicherheits-Tools
B.4.1 keytool
B.4.2 Jarsigner
B.4.3 policytool
B.5 CORBA-Tools
B.5.1 tnameserv
B.5.2 idlj
B.5.3 orbd
B.5.4 servertool
B.6 Kerberos-Tools
B.6.1 kinit
B.6.2 klist
B.6.3 ktab
C Struktur von Property-Dateien
C.1 Kommentare
C.2 Bezeichner der Schlüssel
C.3 Trennung des Schlüsselfelds vom Wert
C.4 Werte
C.5 Beispiele
D Zeichenkodierungen
E Glossar
Index
|
|
|