Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
Guido Krüger
Handbuch derJava-Programmierung
4., aktualisierte Auflage 2006
"ADDISON-WESLEY
An imprint of Pearson Education
München • Boston • San Francisco • Harlow, EnglandDon Mills, Ontario • Sydney • Mexico CityMadrid • Amsterdam
Inhaltsverzeichnis
Vorwort 25
Die Icons in diesem Buch 29
Teil I Einleitung 31
1 Was ist Java? 33
1.1 Historie 331.2 Eigenschaften von Java 39
1.2.1 Sprachmerkmale 391.2.2 Applets: Eine neue Klasse von Programmen 421.2.3 Grafikprogrammierung 431.2.4 Umfangreiche Klassenbibliothek 45
1.3 Bewertung 461.3.1 Einige weitverbreitete Missverständnisse ... 461.3.2 Ausblick 49
1.4 Zusammenfassung 51
2 Schnelleinstieg 53
2.1 Installation des JDK 532.1.1 Hardware-Voraussetzungen 532.1.2 Installation 54
2.2 Erste Gehversuche 562.2.1 Quelltext erstellen, übersetzen und ausführen 572.2.2 Die Beispielprogramme 61
2.3 Tipps für eigene Experimente 632.3.1 Der Entwicklungszyklus in Kurzform 632.3.2 Einfache Ausgaben 642.3.3 Einfache Eingaben 652.3.4 Formatierung der Quelltexte 662.3.5 Namenskonventionen 672.3.6 Aufruf von Java-Programmen unter Windows 682.3.7 Troubleshooting 70
2.4 Zusammenfassung 73
3 Wie geht es weiter? 75
3.1 Wie sollte man dieses Buch lesen? 753.1.1 Zu welchem Typ Leser gehören Sie? 753.1.2 Was ist der Inhalt der einzelnen Kapitel? 773.1.3 Wie geht es nun weiter? 79
Inhaltsverzeichnis
3.2 Weiterführende Informationen 803.2.1 Die Dokumentation des JDK 803.2.2 Informationen im Internet 823.2.3 Die HTML-Ausgabe 853.2.4 Die im Buch verwendete UML-Notation 88
3.3 Zusammenfassung 90
Teil II Grundlagen der Sprache 91
4 Datentypen 93
4.1 Lexikalische Elemente eines Java-Programms 934.1.1 Eingabezeichen 934.1.2 Kommentare 934.1.3 Bezeichner 944.1.4 Weitere Unterschiede zu C 95
4.2 Primitive Datentypen 954.2.1 Der logische Typ 974.2.2 Der Zeichentyp 974.2.3 Die integralen Typen 984.2.4 Die Fließkommazahlen 99
4.3 Variablen 1004.3.1 Grundeigenschaften 1004.3.2 Deklaration von Variablen 1004.3.3 Lebensdauer/Sichtbarkeit 101
4.4 Arrays 1024.4.1 Deklaration und Initialisierung 1024.4.2 Zugriff auf Array-Elemente 1044.4.3 Mehrdimensionale Arrays 105
4.5 Referenztypen 1064.5.1 Beschreibung 1064.5.2 Speichermanagement 107
4.6 Typkonvertierungen 1084.6.1 Standardkonvertierungen 1084.6.2 Vorzeichenlose Bytes 110
4.7 Zusammenfassung 112
5 Ausdrücke 113
5.1 Eigenschaften von Ausdrücken 1135.2 Arithmetische Operatoren 1155.3 Relationale Operatoren 1165.4 Logische Operatoren 1175.5 Bitweise Operatoren 1185.6 Zuweisungsoperatoren 1195.7 Sonstige Operatoren 120
5.7.1 Weitere Operatoren für primitive Typen 1205.7.2 Operatoren für Objekte 1215.7.3 Welche Operatoren es nicht gibt 125
Inhaltsverzeichnis
5.85.9
Operator-VorrangregelnZusammenfassung
6 Anweisungen
6.1
6.2
6.3
6.4
6.5
Elementare Anweisungen6.1.1 Die leere Anweisung6.1.2 Der Block6.1.3 Variablendeklarationen6.1.4 AusdrucksanweisungenVerzweigungen6.2.1 Die if-Anweisung6.2.2 Die switch-AnweisungSchleifen6.3.1 Die while-Schleife6.3.2 Die do-Schleife6.3.3 Die for-SchleifeSonstige Anweisungen6.4.1 Die assert-AnweisungZusammenfassung
125128
129
129129129129130131131133135135135135140140148
Teil IM Objektorientierte Programmierung 149
7 OOP I: Grundlagen 151
7.1 Konzepte objektorientierter Programmiersprachen 151151151152153153156158
7.2 Klassen und Objekte in |ava 158158159
7.3 Methoden 160160161162163165166167170
7.4 Zusammenfassung 171
7.1.17.1.27.1.37.1.47.1.57.1.67.1.7Klasser7.2.17.2.2
EinführungAbstraktionKapselungWiederverwendungBeziehungenPolymorphismusFazit
i und Objekte in JavaKlassenObjekte
Methoden7.3.17.3.27.3.37.3.47.3.57.3.67.3.77.3.8
DefinitionAufrufParameterVariable ParameterlistenRückgabewertÜberladen von MethodenKonstruktorenDestruktoren
Zusammenfassung
Inhaltsverzeichnis
8 OOP II: Vererbung, Polymorphismus und statische Elemente 173
8.1 Vererbung 1738.1.1 Ableiten einer Klasse 1738.1.2 Die Klasse Object 1748.1.3 Überlagern von Methoden 1758.1.4 Vererbung von Konstruktoren 177
8.2 Modifier 1788.2.1 Sichtbarkeit 1788.2.2 Die Attribute im Überblick 179
8.3 Statische Methoden und Membervariablen 1838.3.1 Klassenvariablen 1838.3.2 Konstanten 1848.3.3 Klassenmethoden 1848.3.4 Statische Initialisierer 186
8.4 Abstrakte Klassen und Polymorphismus 1878.4.1 Abstrakte Klassen 1878.4.2 Ein Beispiel für Polymorphismus 1878.4.3 Polymorphe Methodenaufrufe in Konstruktoren 191
8.5 Zusammenfassung 192
9 OOP IM: Interfaces 193
9.1 Grundlagen 1939.1.1 Definition eines Interfaces 1939.1.2 Implementierung eines Interfaces 1939.1.3 Verwenden eines Interfaces 196
9.2 Das Interface Comparable 1989.3 Mehrfachimplementierung und Vererbung 200
9.3.1 Mehrfachimplementierung 2009.3.2 Vererbung von Interfaces 2019.3.3 Ableiten von Interfaces 202
9.4 Weitere Anwendungen von Interfaces 2039.4.1 Konstanten in Interfaces 2039.4.2 Implementierung von Flags 2059.4.3 Nachbildung von Funktionszeigern 206
9.5 Interfaces und Hilfskiassen 2089.5.1 Die Default-Implementierung 2099.5.2 Delegation an die Default-Implementierung 2109.5.3 Die leere Implementierung 211
9.6 Zusammenfassung 212
10 OOP IV: Verschiedenes 213
10.1 Lokale und anonyme Klassen 21310.1.1 Grundlagen 21310.1.2 Nicht-statische lokale Klassen 21310.1.3 Anonyme Klassen 21610.1.4 Statische lokale Klassen 218
8
Inhaltsverzeichnis
10.2
10.3
10.4
10.5
Wrapper-Klassen10.2.110.2.210.2.3
Vordefinierte Wrapper-KlassenCall by ReferenceAutoboxing und Autounboxing
Aufzählungstypen10.3.110.3.2
GrundlagenErweiterung der Aufzählungsklasse
Design-Patterns10.4.110.4.210.4.310.4.410.4.510.4.610.4.710.4.810.4.9
SingletonImmutableInterfaceFactoryIteratorDelegateCompositeVisitorObserver
Zusammenfassung
IV Weiterführende Spracheigenschaften
11 Strings
11.111.2
11.3
11.4
11.5
11.6
Grundlegende EigenschaftenMethoden der Klasse String11.2.111.2.211.2.311.2.411.2.511.2.611.2.7Weitere11.3.111.3.211.3.3
KonstruktorenZeichenextraktionDie Länge der ZeichenketteVergleichen von ZeichenkettenSuchen in ZeichenkettenErsetzen von ZeichenkettenKonvertierungsfunktionenEigenschaftenDie Klasse String ist finalWas ist ein String für den Compiler?String-Objekte sind nicht dynamisch
Die Klasse StringBuffer11.4.111.4.211.4.311.4.411.4.511.4.6
KonstruktorenEinfügen von ElementenLöschen von ElementenVerändern von ElementenLängeninformationenKonvertierung in einen String
Ausgabeformatierung11.5.111.5.2
GrundlagenDie Formatangaben
Zusammenfassung
219219222224225225228229230231233233240243246249254257
259
261
261261262262263264266266267268268268269270270270271271271271272272273277
Inhaltsverzeichnis
12 Exceptions 279
12.1 Grundlagen und Begriffe 27912.2 Behandlung von Exceptions 280
12.2.1 Die try-catch-Anweisung 28012.2.2 Das Fehlerobjekt 28212.2.3 Die Fehlerklassen von Java 28312.2.4 Fortfahren nach Fehlern 28312.2.5 Mehr als eine catch-Klausel 28412.2.6 Die finally-Klausel 286
12.3 Weitergabe von Exceptions 28712.3.1 Die catch-or-throw-Regel 28712.3.2 Weitergabe einer Exception 28812.3.3 Auslösen von Ausnahmen 288
12.4 Zusammenfassung 290
13 Strukturierung von Java-Programmen 291
13.1 Programmelemente 29113.1.1 Anweisungen 29113.1.2 Blöcke 29113.1.3 Methoden 29413.1.4 Klassen 29413.1.5 Pakete 29513.1.6 Applikationen 29513.1.7 Applets 296
13.2 Pakete 29613.2.1 Verwendung von Paketen 29613.2.2 Die Bedeutung der Paketnamen 29913.2.3 Einbinden zusätzlicher Pakete 3021 3.2.4 Erstellen eigener Pakete 303
13.3 Der Entwicklungszyklus 30713.3.1 Schematische Darstellung 30713.3.2 Projektverwaltung 308
13.4 Auslieferung von Java-Programmen 31013.4.1 Weitergabe des Bytecodes 31013.4.2 Einbinden von Ressourcen-Dateien 313
13.5 Java Web Start 31613.5.1 Einleitung und Funktionsweise 31613.5.2 Erstellen einer WebStart-Applikation 31813.5.3 Dasjnlp-API 324
13.6 Zusammenfassung 328
14 Collectionsl 329
14.1 Grundlagen und Konzepte 32914.2 Die Klasse Vector 330
14.2.1 Einfügen von Elementen 33014.2.2 Zugriff auf Elemente 33114.2.3 Der Vektor als Iterator 331
10
Inhaltsverzeichnis
14.3 Die Klasse Stack 33314.4 Die Klasse Hashtable 334
14.4.1 Einfügen von Elementen 33514.4.2 Zugriff auf Elemente 33514.4.3 Hashtable als Iterator 33614.4.4 Die Klasse Properties 337
14.5 Die Klasse BitSet 33914.5.1 Elementweise Operationen 33914.5.2 Mengenorientierte Operationen 339
14.6 Zusammenfassung 341
343
343346346347349349351352352353358358359360360362363363364368368368370371371371374375379383
15.10 Zusammenfassung 384
15 Collections II
15.115.2
15.3
15.4
15.5
15.6
15.7
15.8
15.9
Grundlagen und KonzepteDie Collection des Typs List15.2.115.2.2
Abstrakte EigenschaftenImplementierungen
Iteratoren15.3.115.3.2
Das Interface IteratorDas Interface Listlterator
Eine eigene Queue-Klasse15.4.115.4.2
AnforderungenImplementierung
Die Collection des Typs Set15.5.115.5.2
Abstrakte EigenschaftenImplementierungen
Die Collection des Typs Map15.6.115.6.2
Abstrakte EigenschaftenImplementierungen
Sortierte Collections15.7.115.7.215.7.3
Comparable und ComparatorSortedSet und TreeSetSortedMap und TreeMap
Die Klasse Collections15.8.115.8.215.8.3
Sortieren und SuchenSynchronisieren von CollectionsErzeugen unveränderlicher Collections
Typisierte Klassen und generische Collections15.9.115.9.215.9.315.9.415.9.5
GrundlagenCollections mit mehreren TypparameternEine eigene typisierte ListenklasseTypkompatibilitätSonstiges
11
Inhaltsverzeichnis
16 Utility-Klassen I 385
16.1 Die Klasse Random 38516.1.1 Initialisierung des Zufallszahlengenerators 38516.1.2 Erzeugen von Zufallszahlen 385
16.2 Die Klassen Date, Calendar und GregorianCalendar 38716.2.1 Konstruktoren 38816.2.2 Abfragen und Setzen von Datumsbestandteilen 38916.2.3 Vergleiche und Datums-/Zeitarithmetik 39316.2.4 Umwandlung zwischen Date und Calendar 396
16.3 Die Klasse System 39616.3.1 System-Properties 39616.3.2 in, errund out 39816.3.3 exit 39916.3.4 gc 39916.3.5 currentTimeMillis 40016.3.6 arraycopy 403
16.4 Die Klasse Runtime 40416.4.1 Grundlagen 40416.4.2 Interaktion mit dem externen Programm 405
16.5 Die Klasse Arrays 41016.6 Zusammenfassung 411
17 Utility-Klassen II 413
17.1 Die Klasse StringTokenizer 41317.1.1 Anlegen eines StringTokenizers 41317.1.2 Zugriff auf Tokens 413
17.2 Die Klasse Math 41517.2.1 Winkelfunktionen 41517.2.2 Minimum und Maximum 41517.2.3 Arithmetik 41617.2.4 Runden und Abschneiden 416
17.3 Die Klassen Biginteger und BigDecimal 41617.3.1 Die Klasse Biginteger 41717.3.2 Die Klasse BigDecimal 419
17.4 Internationalisierung und Lokalisierung 42217.4.1 Die Klasse Locale 42317.4.2 Zahlen formatieren 42517.4.3 Datum und Uhrzeit formatieren 42817.4.4 Laden von Ressourcen 430
17.5 Zusammenfassung 437
18 Character-Streams 439
18.1 Allgemeine Konzepte 43918.2 Ausgabe-Streams 440
18.2.1 Die abstrakte Klasse Writer 44018.2.2 Auswahl des Ausgabegerätes 44118.2.3 Schachteln von Ausgabe-Streams 444
12
Inhaltsverzeichnis
18.3 Eingabe-Streams18.3.1 Die abstrakte Klasse Reader18.3.2 Auswahl des Eingabegerätes18.3.3 Schachteln von Eingabe-Streams
18.4 Zusammenfassung
19 Byte-Streams
19.1 Architektur und Vergleich mit Character-Streams19.2 Ausgabe-Streams
19.2.1 Die Basisklasse OutputStream19.2.2 Aus OutputStream direkt abgeleitete Klassen19.2.3 Aus FilterOutputStream abgeleitete Klassen
19.3 Eingabe-Streams19.3.1 Die Basisklasse InputStream19.3.2 Aus InputStream direkt abgeleitete Klassen19.3.3 Aus FilterlnputStream abgeleitete Klassen
19.4 Zusammenfassung
20 Random-Access-I/O
20.1 Grundlegende Operationen20.2 Navigation in der Datei
20.2.1 Positionierung des Dateizeigers20.2.2 Die Länge der Datei
20.3 Lesezugriffe20.4 Schreibzugriffe20.5 Zusammenfassung
21 Datei- und Verzeichnis-Handling
21.1 Konstruktion eines File-Objekts21.2 Zugriff auf Teile des Pfadnamens21.3 Informationen über die Datei21.4 Zugriff auf Verzeichniseinträge
21.4.1 Lesen von Verzeichniseinträgen21.4.2 Ändern von Verzeichniseinträgen
21.5 Temporäre Dateien und Lockdateien21.5.1 Temporäre Dateien21.5.2 Lockdateien
21.6 Zusammenfassung
22 Multithreading
22.1 Grundlagen und Begriffe22.2 Die Klasse Thread
22.2.1 Erzeugen eines neuen Threads22.2.2 Abbrechen eines Threads22.2.3 Anhalten eines Threads22.2.4 Weitere Methoden
452452453456459
461
461461461462463469469470472477
479
479480480481481484486
487
487488488490490494496496497498
499
499500500501505505
13
*/'•-
Inhaltsverzeichnis
22.3 Das Interface Runnable 50622.3.1 Implementieren von Runnable 50722.3.2 Multithreading durch Wrapper-Klassen 508
22.4 Synchronisation 51322.4.1 Synchronisationsprobleme 51322.4.2 Monitore 51522.4.3 wait und notify 51922.4.4 PipedlnputStream und PipedOutputStream 522
22.5 Verwalten von Threads 52522.5.1 Priorität und Name 52522.5.2 Thread-Gruppen 526
22.6 Zusammenfassung 526
Teil V Grafikprogrammierung mit dem AWT 529
23 Grafikausgabe 531
531531531532532534534535537538539541542543544544546548550
24 Textausqabe 551
551553
24.2.1 Font-Objekte 55324.2.2 Standardschriftarten 555
24.3 Eigenschaften von Schriftarten 55724.3.1 Font-Informationen 55724.3.2 Font-Metriken 558
24.4 Zusammenfassung 562
23.1
23.2
23.3
23.4
23.5
Das Abstract Windowing Toolkit23.1.123.1.2
Grundlegende EigenschaftenVon AWT nach Swing
Grundlagen der Grafikausgabe23.2.123.2.223.2.323.2.4
Anlegen eines FenstersDie Methode paintDas grafische KoordinatensystemSchließen eines Fensters
Elementare Grafikroutinen23.3.123.3.223.3.323.3.423.3.5
LinieRechteckPolygonKreisKreisbogen
Weiterführende Funktionen23.4.123.4.223.4.3
Linien- oder FüllmodusKopieren und Löschen von FlächenDie Clipping-Region
Zusammenfassung
Textausgabe
24.124.2
AusgabefunktionenUnterschiedliche Schriftarten
14
Inhaltsverzeichnis
25 Farben
25.1 Das Java-Farbmodell25.2 Erzeugen von Farben25.3 Verwenden von Farben25.4 Systemfarben25.5 Zusammenfassung
26 Drucken
26.1 Einleitung26.2 Drucken mit dem JDK 1.1
26.2.1 Grundlagen26.2.2 Seitenweise Ausgabe26.2.3 Platzierung des Codes zur Druckausgabe
26.3 Drucken seit dem JDK 1.226.3.1 Überblick26.3.2 Zusammenspiel der Klassen26.3.3 Ausdrucken einer Textdatei
26.4 Zugriff auf serielle und parallele Schnittstellen26.4.1 Das Java Communications API26.4.2 Ein einfaches Beispielprogramm
26.5 Zusammenfassung
27
28
Fenster
27.127.227.327.427.5
27.6
Die verschiedenen FensterklassenAufrufen und Schließen eines FenstersVisuelle EigenschaftenAnzeigezustandFensterelemente27.5.1 Der Fenstertitel27.5.2 Das Icon des Fensters27.5.3 Der Mauscursor27.5.4 Die Vorder- und Hintergrundfarbe27.5.5 Der Standard-FontZusammenfassung
Event-Handling
28.1 Das Event-Handling im JDK 1.128.1.1 Grundlagen28.1.2 Ereignistypen28.1.3 Ereignisempfänger28.1.4 Ereignisquellen28.1.5 Adapterklassen28.1.6 Zusammenfassung
28.2 Entwurfsmuster für den Nachrichtenverkehr28.2.1 Variante 1: Implementierung eines EventListener-Interfaces28.2.2 Variante 2: Lokale und anonyme Klassen
563
563563564566569
571
571571571572573577577577583588589590592
593
593595597599600600601601602602605
607
607607608610611612612616618620
15
Inhaltsverzeichnis
28.2.3 Variante 3: Trennung von GUI- und Anwendungscode 62328.2.4 Variante 4: Überlagern der Event-Handler in den Komponenten 62528.2.5 Ausblick 627
28.3 Zusammenfassung 628
629
629631634638642645650
651
651651652653653654657660662667670670670673
675
675675676676677678679681683686691693695704
29
30
31
Low-Level-Events
29.129.229.329.429.529.629.7
Window-EventsComponent-EventsMouse-EventsMouseMotion-EventsFocus-EventsKey-EventsZusammenfassung
Menüs
30.130.230.330.4
30.530.630.7
30.8
GrundlagenMenüleisteMenüsMenüeinträge30.4.1 Einfache Menüeinträge30.4.2 CheckboxMenultem30.4.3 Beschleunigertasten30.4.4 UntermenüsAction-EventsKontextmenüsDatenaustausch mit der Zwischenablage30.7.1 Überblick30.7.2 Kommunikation mit der ZwischenablageZusammenfassung
GUI-Dialoge
31.1
31.2
31.331.4
Erstellen eines Dialogs31.1.1 Anlegen eines Dialogfensters31.1.2 Zuordnen eines Layoutmanagers31.1.3 Einfügen von Dialogelementen31.1.4 Anzeigen des DialogfenstersDie Layoutmanager31.2.1 FlowLayout31.2.2 GridLayout31.2.3 BorderLayout31.2.4 GridBagLayout31.2.5 NULL-Layout31.2.6 Schachteln von LayoutmanagernModale DialogeZusammenfassung
16
Inhaltsverzeichnis
32.132.232.332.432.532.632.732.832.932.1032.11
RahmenprogrammLabelButtonCheckboxCheckboxGroupTextFieldTextAreaChoiceListScrollbarScrollPane
32 AWT-Dialogelemente 705
705708709710712714717719722724727
32.12 Zusammenfassung 734
33 Eigene Dialogelemente 735
33.1 Die Klasse Canvas 73533.2 Entwicklung einer 7-Segment-Anzeige 736
33.2.1 Anforderungen 73633.2.2 Bildschirmanzeige 73633.2.3 Ereignisbehandlung 737
33.3 Einbinden der Komponente 74333.4 Zusammenfassung 745
34 Bitmaps und Animationen 747
34.1 Bitmaps 74734.1.1 Laden und Anzeigen einer Bitmap 74734.1.2 Entwicklung einer eigenen Bitmap-Komponente 751
34.2 Animation 75334.2.1 Prinzipielle Vorgehensweise 75334.2.2 Abspielen einer Folge von Bitmaps 75734.2.3 Animation mit Grafikprimitiven 76034.2.4 Reduktion des Bildschirmflackerns 766
34.3 Zusammenfassung 775
Teil VI Grafikprogrammierung mit Swing 777
35 Swing: Grundlagen 779
35.1 Eigenschaften und Architektur von Swing 77935.1.1 Einleitung 77935.1.2 Eigenschaften von Swing 77935.1.3 Wie geht es weiter? 782
35.2 Ein einführendes Beispiel 78335.2.1 Das Beispielprogramm 78335.2.2 Beschreibung des Beispielprogramms 785
35.3 Zusammenfassung 790
17
Inhaltsverzeichnis
Hauptfenster36.1.136.1.236.1.336.1.436.1.536.1.6Menüs36.2.136.2.236.2.336.2.4
JFrameJ WindowJDialogJOptionPaneJAppletJlnternalFrame
Einfache MenüsGrundlagen von Swing-MenüsWeitere MöglichkeitenKontextmenüs
36 Swing: Container und Menüs 793
36.1 Hauptfenster 793793797799800805806
36.2 Menüs 810810810815820
36.3 Weitere Swing-Container 82236.3.1 JComponent 82236.3.2 JPanel und JLayeredPane 832
36.4 Zusammenfassung 833
37 Swing: Komponenten I 835
37.1 Label und Textfelder 835835837840841843845845848850852852856859859862866868
871
871871875878882882885886
37.2
37.
37.
37.
3
,4
.5
38 Swing
38.
38
,1
.2
37.1.137.1.237.1.337.1.437.1.5Buttons37.2.137.2.237.2.3
J LabelJTextFieldJPasswordFieldJTextAreaJSpinner
J ButtonJCheckBoxJRadioButton
Listen und Comboboxen37.3.137.3.2
JListIComboBox
Quasi-analoge Komponenten37.4.137.4.237.4.3
JScrollBarJSIiderJProgressBar
Zusammenfassung
: Komponenten II
Spezielle Panels38.1.138.1.238.1.3JTable38.2.138.2.238.2.3
JScrollPaneJSplitPaneJTabbedPane
Erzeugen von TabellenKonfiguration der TabelleSelektieren von Elementen
18
Inhaltsverzeichnis
38.2.4 Zugriff auf den Inhalt der Tabelle38.2.5 Das Tabellenmodell38.2.6 Das Spaltenmodell38.2.7 Rendering der Zellen38.2.8 Reaktion auf Ereignisse
38.3 JTree38.3.1 Erzeugen eines Baums38.3.2 Selektieren von Knoten38.3.3 Öffnen und Schließen der Knoten38.3.4 Verändern der Baumstruktur
38.4 Zusammenfassung
Teil VII Applets
39 Applets I
39.1 Die Architektur eines Applets39.1.1 Grundlagen39.1.2 Die Klasse java.appletApplet39.1.3 Initialisierung und Endebehandlung39.1.4 Weitere Methoden der Klasse Applet
39.2 Einbinden eines Applets39.2.1 Das APPLET-Tag39.2.2 Die Parameter des Applet-Tags39.2.3 Parameterübergabe an Applets
39.3 Die Ausgabe von Sound39.3.1 Soundausgabe in Applets39.3.2 Soundausgabe in Applikationen
39.4 Animation in Applets39.5 Zusammenfassung
40 Applets
40.1 Verweise auf andere Seiten40.1.1 Die Klasse URL40.1.2 Der Applet-Kontext40.1.3 Die Methode showDocument
40.2 Kommunikation zwischen Applets40.3 Umwandlung einer Applikation in ein Applet
40.3.1 Die Beispiel-Applikation40.3.2 Variante 1: Das Programm als Popup-Fenster40.3.3 Variante 2: Erstellen eines gleichwertigen Applets
40.4 Das Java-Plugin40.4.1 Funktionsweise40.4.2 Verwendung des Plugins
40.5 Zusammenfassung
888889894896900901901905908909913
915
917
917917918918920922922923924926926929930936
937
937937938939943945946947948950950952953
19
Inhaltsverzeichnis
Teil VIII Spezielle APIs 955
41 Serialisierung 957
41.1 Grundlagen 95741.1.1 Begriffsbestimmung 95741.1.2 Schreiben von Objekten 95741.1.3 Lesen von Objekten 961
41.2 Weitere Aspekte der Serialisierung 96541.2.1 Versionierung 96541.2.2 Nicht-serialisierte Membervariablen 96741.2.3 Objektreferenzen 96841.2.4 Serialisieren von Collections 972
41.3 Anwendungen 97241.3.1 Ein einfacher Objektspeicher 97241.3.2 Kopieren von Objekten 977
41.4 Zusammenfassung 980
42 Datenbankzugriffe mit JDBC 981
42.1 Einleitung 98142.1.1 Grundsätzliche Arbeitsweise 98142.1.2 Die Architektur von JDBC 982
42.2 Grundlagen von JDBC 98342.2.1 Öffnen einer Verbindung 98342.2.2 Erzeugen von Anweisungsobjekten 98542.2.3 Datenbankabfragen 98642.2.4 Datenbankänderungen 98842.2.5 Die Klasse SQLException 988
42.3 Die DirDB-Beispieldatenbank 98942.3.1 Anforderungen und Design 98942.3.2 Das Rahmenprogramm 99042.3.3 Die Verbindung zur Datenbank herstellen 99342.3.4 Anlegen und Füllen der Tabellen 99542.3.5 Zählen der Verzeichnisse und Dateien 99842.3.6 Suchen von Dateien und Verzeichnissen 99942.3.7 Die zehn größten Dateien 100242.3.8 Speicherverschwendung durch Clustering 1003
42.4 Weiterführende Themen 100442.4.1 Metadaten 100442.4.2 Escape-Kommandos 100542.4.3 Transaktionen 100542.4.4 JDBC-Datentypen 100642.4.5 Umgang mit JDBC-Objekten 100742.4.6 Prepared Statements 100942.4.7 SQL-Kurzreferenz 1010
42.5 Zusammenfassung 1015
20
Inhaltsverzeichnis
43 Reflection
43.1 Einleitung43.2 Die Klassen Object und Class
43.2.1 Die Klasse Object43.2.2 Die Klasse Class
43.3 Methoden- und Konstruktorenaufrufe43.3.1 Parameterlose Methoden43.3.2 Parametrisierte Methoden43.3.3 Parametrisierte Konstruktoren
43.4 Zugriff auf Membervariablen43.5 Arrays
43.5.1 Erzeugen von Arrays43.5.2 Zugriff auf Array-Elemente
43.6 Zusammenfassung
44 Beans
44.1 Grundlagen und Begriffe44.2 Entwurf einer einfachen Bean
44.2.1 Grundsätzliche Architektur44.2.2 Grafische Darstellung44.2.3 Eigenschaften44.2.4 Implementierung44.2.5 Verwendung der Bean
44.3 Die Beanbox44.3.1 Beschreibung und Installation44.3.2 Grundlagen der Bedienung44.3.3 Integration eigener Beans44.3.4 Serialisierte Beans
44.4 Bean-Ereignisse44.4.1 Bound Properties44.4.2 Constrained Properties44.4.3 Anwendungsbeispiel
44.5 Panel-Beans44.6 Beaninfo-Klassen und Property-Editoren
44.6.1 Beaninfo-Klassen44.6.2 Property-Editoren
44.7 Zusammenfassung
45 Netzwerkprogrammierung
45.1 Grundlagen der NetzwerkprogrammierungWas ist ein Netzwerk?ProtokolleAdressierung von DatenPorts und ApplikationenRequest for CommentsFirewalls und Proxys
t
45.1.145.1.245.1.345.1.445.1.545.1.6
1017
1017101710171018102110211026103010321036103610381041
1043
104310451045104610471048105110521052105310551058105910601065106910711075107510791086
1087
1087108710881089109110921094
21
Inhaltsverzeichnis
45.2 Client-Sockets 109445.2.1 Adressierung 109445.2.2 Aufbau einer einfachen Socket-Verbindung 109645.2.3 Lesen und Schreiben von Daten 109945.2.4 Zugriff auf einen Web-Server 1102
45.3 Server-Sockets 110545.3.1 Die Klasse ServerSocket 110545.3.2 Verbindungen zu mehreren Clients 110745.3.3 Entwicklung eines einfachen Web-Servers 1109
45.4 Daten mithilfe der Klasse URL lesen 111745.5 Zusammenfassung 1118
46 Remote Method Invocation 1121
46.1 Einleitung 112146.1.1 Prinzipielle Arbeitsweise 112146.1.2 Einzelheiten der Kommunikation 1122
46.2 Aufbau eines einfachen Uhrzeit-Services 112446.2.1 Vorgehensweise 112446.2.2 Das Remote-Interface 112546.2.3 Implementierung des Remote-Interfaces 112646.2.4 Registrieren der Objekte 112846.2.5 Zugriff auf den Uhrzeit-Service 113146.2.6 Ausblick 1134
46.3 Zusammenfassung 1135
47 Sicherheit und Kryptographie 1137
47.1 Kryptographische Grundlagen 113747.1.1 Wichtige Begriffe 113747.1.2 Einfache Verschlüsselungen 113847.1.3 Message Digests 114047.1.4 Kryptographische Zufallszahlen 114547.1.5 Public-Key-Verschlüsselung 114647.1.6 Digitale Unterschriften 114847.1.7 Zertifikate 1156
47.2 Sicherheitsmechanismen in Java 115747.2.1 Sprachsicherheit 115747.2.2 Das Sandbox-Konzept 115847.2.3 Veränderungen im JDK 1.1 und 1.2 1159
47.3 Signierte Applets 115947.3.1 Ein »unerlaubtes« Applet 115947.3.2 Signieren des Applets 116247.3.3 Ex-und Import von Zertifikaten 116347.3.4 Anpassen der Policy-Datei 116447.3.5 Die Klasse SecurityManager 1167
47.4 Zusammenfassung 1169
22
Inhaltsverzeichnis
48 Sound
48.148.2
48.3
Grundlagen und KonzepteGesampelter Sound48.2.1 Was ist Sampling?
Das Sampling-APIAbspielen einer Sample-Datei
48.2.248.2.3Midi48.3.148.3.248.3.348.3.448.3.5
Was ist Midi?Grundlegende Klassen des Midi-APIsAlle meine Entchen - Erster VersuchAlle meine Entchen mit dem SequenzerZugriff auf Midi-Dateien
[. 48.4 Zusammenfassung
i Teil IX Verschiedenes
49 Performance-Tuning
49.1 Einleitung49.2 Tuning-Tipps
49.2.1 String und StringBuffer49.2.2 Methodenaufrufe49.2.3 Vektoren und Listen49.2.4 Dateizugriffe49.2.5 Speicher-Optimierung
49.3 Einsatz eines Profilers49.3.1 Grundlagen49.3.2 Eine Beispielsitzung mit dem Profiler49.3.3 Ausblick
49.4 Zusammenfassung
50 Hilfsprogramme des JDK
50.1 javac - Der Compiler50.1.1 Aufruf50.1.2 Beschreibung50.1.3 Optionen
50.2 java - Der Interpreter50.2.1 Aufruf50.2.2 Beschreibung50.2.3 Optionen
50.3 appletviewer - Der Appletviewer50.3.1 Aufruf50.3.2 Beschreibung50.3.3 Optionen
50.4 jdb - Der Debugger50.4.1 Aufruf50.4.2 Beschreibung50.4.3 Vorbereitungen
1171
117111721172117311771179117911801181118511891191
1193
1195
119511961196120012021204120712081208121012161217
1219
1219121912191220122112211221122212231223122312231223122312231224
23
Inhaltsverzeichnis
50.5 javadoc - Der Dokumentationsgenerator 122650.5.1 Aufruf 122650.5.2 Beschreibung 122650.5.3 Dokumentationskommentare 122650.5.4 Aufruf von javadoc 122850.5.5 Optionen 1229
50.6 jar-Das Archivierungswerkzeug 122950.6.1 Aufruf 122950.6.2 Beschreibung 123050.6.3 Kommandos 123050.6.4 Verwendung von jar-Dateien in Applets 1231
50.7 javap - Der Disassembler 123250.7.1 Aufruf 123250.7.2 Beschreibung 123250.7.3 Optionen 1232
50.8 serialver - Zugriff auf die serialVersionUID 123350.8.1 Aufruf 123350.8.2 Beschreibung 123350.8.3 Optionen 1233
50.9 keytool -Verwaltung von kryptografischen Schlüsseln 123350.9.1 Aufruf 123350.9.2 Beschreibung 1233
50.10 policytool - Bearbeiten von Policy-Dateien 123350.10.1 Aufruf 123350.10.2 Beschreibung 1233
50.11 jarsigner-Signieren von Archiven 123450.11.1 Aufruf 123450.11.2 Beschreibung 123450.11.3 Optionen 1234
50.12 rmic - Erzeugen von RMI-Stubs und-Skeletons 123450.12.1 Aufruf 123450.12.2 Beschreibung 123550.12.3 Optionen 1235
50.13 rmiregistry - Der RMI-Namensservice 123550.13.1 Aufruf 123550.13.2 Beschreibung 1235
50.14 Zusammenfassung 1235
Sun Microsystems, Inc. Binary Code License Agreement 1237
Stichwortverzeichnis 1243
24