Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4.,...

21
Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam

Transcript of Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4.,...

Page 1: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 2: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 3: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 4: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 5: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 6: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 7: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 8: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 9: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 10: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 11: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

*/'•-

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

Page 12: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 13: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 14: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 15: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 16: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 17: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 18: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 19: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 20: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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

Page 21: Handbuch der Java-Programmierung · Guido Krüger Handbuch der Java-Programmierung 4., aktualisierte Auflage 2006 "ADDISON-WESLEY An imprint of Pearson Education München • Boston

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