Handbuch der Java-Programmierung



Ähnliche Dokumente
Handbuch der Java-Programmierung

Vorwort. 1 Einleitung 3

Handbuch der Java-Programmierung

Inhaltsverzeichnis. Fritz Jobst. Programmieren in Java ISBN: Weitere Informationen oder Bestellungen unter

Handbuchd Java-Prograr

Objektorientierte Programmierung in Java

Inhaltsverzeichnis. 1 Einleitung 9. Inhalt

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Programmieren in Java

Graphische Benutzungsoberflächen

Michael Weigend. Python GE-PACKT

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Java. Von den Grundlagen bis zu Threads und Netzen von Prof. Dr. Ernst-Wolfgang Dieterich Fachhochschule Ulm

Beschreibung des Angebotes

Inhaltsverzeichnis. Was ist Informatik? 5. Programmierung 13. Einleitung. 1 Informatik Was ist Informatik? Teilgebiete der Informatik 8

SQL objektorientiert

Objektorientierte Software-Entwicklung

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

GRAFISCHE BENUTZERSCHNITTSTELLEN

Komplettes Starterkit für den erfolgreichen Einstieg in die Programmierung

Grundkurs Programmieren in Java

Objektorientierte Softwareentwicklung

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Programmieren in Java

Objektorientierte Programmierung

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

Inhalt. Vorwort 11. Steyer, Ralph JavaFX digitalisiert durch: IDS Basel Bern

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

PostgreSQL. Professionell und praxisnah. Jens Hartwig. An imprint of Pearson Education

<Trainingsinhalt> C# programmieren

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Das Einsteigerseminar Objektorientierte Programmierung in Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Michael Weigend. Python GE-PACKT. 5. Auflage

Vorlesung Modellierung und Programmierung I Inhaltsverzeichnis

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Inhaltsverzeichnis. Apps für Android entwickeln

Inhalt. Vorwort. Bibliografische Informationen digitalisiert durch

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage

ecommerce Websites Entwicklung erfolgreicher Web-Auftritte mit Java, JavaScript, HTML, XML und SQL Vivek Sharma Rajiv Sharma ADDISON-WESLEY

Knasmüller.book Seite vii Mittwoch, 28. März : vii. Inhaltsverzeichnis

Grundkurs Programmieren in Java

Grundkurs Programmieren in Java

Jürgen Kotz Rouven Haban Simon Steckermeier. WCF, WPF und WF - Ein Überblick ADDISON-WESLEY. An imprint of Pearson Education

Swing Lernen am Code Teil 1

Objektorientierte Programmierung in Java

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Visual C++ Windows-Programmierung mit den MFC. Frank Budszuhn. ADDISON-WESLEY An imprint of Pearson Education

Programmieren in Java

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

Olaf Borkner-Delcarlo. Umstieg auf Java. Professionelle Softwareentwicklung mit dem JDK 1.1 HANSER. Carl Hanser Verlag München Wien

Java Programmierhandbuch

Inhaltsverzeichnis. Vorwort...XIII. Aufbau des Buches...

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

PHP Programmierung. Seminarunterlage. Version 1.02 vom

Programmieren mit Swing

Grundlagen der Programmierung APPLETS

Eclipse in der Java-Entwicklung

C#.NET mit Methode. Professionelle Software entwickeln mit C# und.net: Grundlagen, Windows, ADO.NET, ASP.NET und Remoting. vieweg.

Jasmin Blanchette, Mark Summerfield

Curriculum des Wahlfaches Informatik für das Gymnasium Dialog

7. Pakete Grundlagen der Programmierung 1 (Java)

Objektorientierte Programmierung mit Java

Swing Grundlagen. Andre Eichmann

Handbuch der Java-Programmierung

Java GUI Entwicklung mit Swing

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Inhaltsverzeichnis Einleitung Imperative Sprachkonzepte Objektorientierte Sprachkonzepte

Über den Autor 7. Teil I Los geht s mit Java für die Android-Entwicklung 25. Kapitel 1 Alles über Java und Android 27

Java 6 lernen mit Eclipse

Swing :Komponenten I (Teil 2)

Objektorientierte Softwaretechnik

Java-Grundkurs für Wirtschaftsinformatiker

Inhalt. Vorbemerkungen... 1

1 Einführung Erste Schritte Programmierkurs Datentypen Weiterführende Programmierung

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Java-Schulung Grundlagen

Einführung in Javadoc

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Liste Programmieren Java Überblick

O REILLY. Oracle PL/SQL Programmierung Paris - - Steven Feuerstein. mit Bill Pribyl. Deutsche Übersetzung von Dorothea Reder 2.

Applets I. Grundlagen der g Applet-Programmierung

Delphi Autor Elmar Warken. An imprint of Pearson Education

jetzt lerne ich PHP 5 & MySQL 4.1 Der schnelle Einstieg in die objektorientierte

Java Server Faces. Andy Bosch. Das Standard-Framework zum Aufbau webbasierter Anwendungen. An imprint of Pearson Education

Roberto lerusalimschy. Programmieren mit Lua

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Joomla! eigenen Joomla!-Website ^ADDISON-WESLEY. Die Schritt-für-Schritt-Anleitung zur. Stephen Bürge. An imprint of Pearson

Softwareengineering. Schwerpunkt Software Engineering Ausbildung

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER

Alexander Niemann. Das Einsteigerseminar" < Objektorientierte ^ Programmierung in Java. bhv. i.-

Inhaltsverzeichnis. I Einstieg in das Programmieren in Java 29

Inhalt. Teil I: Der Sprachkern von JavaScript

GUI Programmierung mit JAVA Swing

Transkript:

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

Vorwort 25 Die Icons in diesem Buch 28 Teil I Einleitung 29 1 Was ist Java? 31 1.1 Historie 31 1.2 Eigenschaften von Java 37 1.2.1 Sprachmerkmale 37 1.2.2 Applets: Eine neue Klasse von Programmen 39 1.2.3 Crafikprogrammierung 40 1.2.4 Umfangreiche Klassenbibliothek 42 1.3 Bewertung 44 1.3.1 Einige weitverbreitete Mißverständnisse... 44 1.3.2 Ausblick 47 1.4 Zusammenfassung 48 2 Schnelleinstieg 49 2.1 Installation des JDK 49 2.1.1 Hardware-Voraussetzungen 49 2.1.2 Installation 49 2.2 Erste Gehversuche 52 2.2.1 Quelltext erstellen, übersetzen und ausführen 52 2.2.2 Die Beispielprogramme 56 2.3 Tips für eigene Experimente 58 2.3.1 Der Entwicklungszyklus in Kurzform 58 2.3.2 Einfache Ausgaben 59 2.3.3 Einfache Eingaben 60 2.3.4 Formatierung der Quelltexte 61 2.3.5 Namenskonventionen 63 2.3.6 Aufruf von Java-Programmen unter Windows 63 2.3.7 Troubleshooting - 65 2.4 Zusammenfassung 68 3 Wie geht es weiter? 69 3.1 Wie sollte man dieses Buch lesen? 69 311.1 Zu welchem Typ Leser gehören Sie? 69 3.1.2 Was ist der Inhalt der einzelnen Kapitel? 71 3.1.3 Wie geht es nun weiter? 73 3.2 Weiterführende Informationen 73

3.2.1 Die Dokumentation des JDK 73 3.2.2 Informationen im Internet 76 3.2.3 Die HTML-Ausgabe 79 3.2.4 Die im Buch verwendete UML-Notation 82 3.3 Zusammenfassung 84 Teil II Grundlagen der Sprache 85 4 Datentypen 87 4.1 Lexikalische Elemente eines Java-Programms 87 4.1.1 Eingabezeichen 87 4.1.2 Kommentare 87 4.1.3 Bezeichner 88 4.1.4 Weitere Unterschiede zu C 89 4.2 Primitive Datentypen 89 4.2.1 Der logische Typ 90 4.2.2 Der Zeichentyp 90 4.2.3 Die integralen Typen 92 4.2.4 Die Fließkommazahlen 92 4.3 Variablen 93 4.3.1 Grundeigenschaften 93 4.3.2 Deklaration von Variablen 94 4.3.3 Lebensdauer/Sichtbarkeit 95 4.4 Arrays 95 4.4.1 Deklaration und Initialisierung 96 4.4.2 Zugriff auf Array-Elemente 97 4.4.3 Mehrdimensionale Arrays 98 4.5 Referenztypen 100 i 4.5.1 Beschreibung 100 4.5.2 Speichermanagement 101 4.6 Typkonvertierungen 101 4.6.1 Standardkonvertierungen 101 4.6.2 Vorzeichenlose Bytes 103 4.7 Zusammenfassung 105 5 Ausdrücke 107 5.1 Eigenschaften von Ausdrücken 107 5.2 Arithmetische Operatoren 109 5.3 Relationale Operatoren 110 5.4 Logische Operatoren 110 5.5 Bitweise Operatoren 111 5.6 Zuweisungsoperatoren 112 5.7 Sonstige Operatoren 113 5.7.1 Weitere Operatoren für primitive Typen 114 5.7.2 Operatoren für Objekte 114 5.7.3 Welche Operatoren es nicht gibt 118

5.8 Operator-Vorrangregeln 119 5.9 Zusammenfassung 121 6 Anweisungen 123 6.1 Elementare Anweisungen 123 6.1.1 Die leere Anweisung 123 6.1.2 Der Block 123 6.1.3 Variablendeklarationen 123 6.1.4 Ausdrucksanweisungen 124 6.2 Verzweigungen 125 6.2.1 Die if-anweisung 125 6.2.2 Die switch-anweisung 127 6.3 Schleifen 128 6.3.1 Die while-schleife 129 6.3.2 Die do-schleife 129 6.3.3 Die for-schleife 129 6.4 Sonstige Anweisungen 132 6.4.1 Die assert-anweisung 132 6.5 Zusammenfassung 140 Teil III Objektorientierte Programmierung 141 7 OOP I: Grundlagen 143 7.1 Konzepte objektorientierter Programmiersprachen 143 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 7.1.7 Einführung Abstraktion Kapselung Wiederverwendung Beziehungen Polymorphismus Fazit 143 143 144 145 145 149 150 7.2 Klassen Klasserl und Objekte in Java 150 7.2.1 7.2.2 Klassen Objekte 150 151 7.3 Methoden 152 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 Definition Aufruf Parameter Rückgabewert Überladen von Methoden Konstruktoren Destruktoren 152 153 154 155 156 157 160 7.4 Zusammenfassung 161

8 OOP II: Vererbung, Polymorphismus und statische Elemente 163 8.1 Vererbung 163 8.1.1 Ableiten einer Klasse 163 8.1.2 Die Klasse Object 164 8.1.3 Überlagern von Methoden 165 8.1.4 Vererbung von Konstruktoren 167 8.2 Modifier 168 8.2.1 Sichtbarkeit 168 8.2.2 Die Attribute im Überblick 169 8.3 Statische Methoden und Membervariablen 172 8.3.1 Klassenvariablen 172 8.3.2 Konstanten - 174 8.3.3 Klassenmethoden 174 8.3.4 Statische Konstruktoren 176 8.4 Abstrakte Klassen und Polymorphismus 177 8.4.1 Abstrakte Klassen 177 8.4.2 Ein Beispiel für Polymorphismus 177 8.4.3 Polymorphe Methodenaufrufe in Konstruktoren 180 8.5 Zusammenfassung 182 9 OOP III: Interfaces 183 9.1 Grundlagen 183 9.1.1 Definition eines Interfaces 183 9.1.2 Implementierung eines Interfaces 183 9.1.3 Verwenden eines Interfaces 186 9.2 Das Interface Comparable 188 9.3 Mehrfachimplementierung und Vererbung 190 9.3.1 Mehrfachimplementierung 190 9.3.2 Vererbung von Interfaces 191 9.3.3 Ableiten von Interfaces 192 9.4 Weitere Anwendungen von Interfaces 193 9.4.1 Konstanten in Interfaces 193 9.4.2 Implementierung von Flags 194 9.4.3 Nachbildung von Funktionszeigern 195 9.5 Interfaces und Hilfskiassen 197 9.5.1 Die Default-Implementierung 198 9.5.2 Delegation an die Default-Implementierung 199 9.5.3 Die leere Implementierung 200 9.6 Zusammenfassung 201 10 OOP IV: Verschiedenes 203 10.1 Lokale und anonyme Klassen 203 10.1.1 Grundlagen 203 10.1.2 Nicht-statische lokale Klassen 203 10.1.3 Anonyme Klassen 207 10.1.4 Statische lokale Klassen 208 8

10.2 Wrapper-Klassen 209 10.2.1 Vordefinierte Wrapper-Klassen 209 10.2.2 Call by Reference. 212 10.3 Design-Patterns 213 10.3.1 Singleton 214 10.3.2 Immutable 215 10.3.3 Interface 217 10.3.4 Factory 217 10.3.5 Iterator 224 10.3.6 Delegate 227 10.3.7 Composite 230 10.3.8 Visitor 233 10.3.9 Observer 238 10.4 Zusammenfassung 242 Teil IV Weiterführende Spracheigenschaften 243 11 Strings 245 11.1 Grundlegende Eigenschaften 245 11.2 Methoden der Klasse String 246 11.2.1 Konstruktoren 246 11.2.2 Zeichenextraktion 246 11.2.3 Die Länge der Zeichenkette.. 247 11.2.4 Vergleichen von Zeichenketten 248 11.2.5 Suchen in Zeichenketten 250 11.2.6 Ersetzen von Zeichenketten 251 11.2.7 Konvertierungsfunktionen ' 251 11.3 Weitere Eigenschaften 252 11.3.1 Die Klasse String ist final 252 11.3.2 Was ist ein String für den Compiler? 252 11.3.3 String-Objekte sind nicht dynamisch 253 11.4 Die Klasse StringBuffer 254 11.4.1 Konstruktoren 254 11.4.2 Einfügen von Elementen 254 11.4.3 Löschen von Elementen 255 11.4.4 Verändern von Elementen 255 11.4.5 Längeninformationen 255 11.4.6 Konvertierung in einen String 256 11.5 Zusammenfassung 256 12 Exceptions 257 12.1 Grundlagen und Begriffe 257 12.2 Behandlung von Exceptions 258 12.2.1 Die try-catch-anweisung 258 12.2.2 Das Fehlerobjekt 260

12.2.3 Die Fehlerklassen von Java 12.2.4 Fortfahren nach Fehlern 12.2.5 Mehr als eine catch-klausel 12.2.6 Die finally-klausel 12.3 Weitergabe von Exceptions 12.3.1 Die catch-or-throw-regel 12.3.2 Weitergabe einer Exception 12.3.3 Auslösen von Ausnahmen 12.4 Zusammenfassung 13 Strukturierung von Java-Programmen 261 261 262 264 265 265 266 266 268 269 13.1 13.2 13.3 13.4 13.5 13.6 Programmelemente 13.1.1 Anweisungen Blöcke Methoden Klassen Pakete Applikationen Applets 13.1.2 13.1.3 13.1.4 13.1.5 13.1.6 13.1.7 Pakete 13.2.1 13.2.2 13.2.3 13.2.4 Verwendung von Paketen Die Bedeutung der Paketnamen Einbinden zusätzlicher Pakete Erstellen eigener Pakete Der Entwicklungszyklus 13.3.1 Schematische Darstellung 13.3.2 Projektverwaltung Auslieferung von Java-Programmen 13.4.1 Weitergabe des Bytecodes 13.4.2 Einbinden von Ressourcen-Dateien Java Web Start 13.5.1 Einleitung und Funktionsweise 13.5.2 Erstellen einer WebStart-Applikation 13.5.3 Dasjnlp-API Zusammenfassung 269 269 269 271 272 272 273 273 274 274 277 280 281 284 284 286 288, 288 291 294 294 296 301 305 14 Collections I 14.1 Grundlagen und Konzepte 14.2 Die Klasse Vector 14.2.1 Einfügen von Elementen 14.2.2 Zugriff auf Elemente 14.2.3 Der Vektor als Iterator 14.3 Die Klasse Stack 14.4 Die Klasse Hashtable 14.4.1 Einfügen von Elementen 14.4.2 Zugriff auf Elemente 307 307 308 308 309 309 311 312 313 313 10

14.4.3 Hashtable als Iterator 314 14.4.4 Die Klasse Properties 315 14.5 Die Klasse BitSet 317 14.5.1 Elementweise Operationen 317 14.5.2 Mengenorientierte Operationen 317 14.6 Zusammenfassung 319 15 Collections II 321 15.1 Grundlagen und Konzepte 321 15.2 Die Collection des Typs List 324 15.2.1 Abstrakte Eigenschaften 324 15.2.2 Implementierungen 325 15.3 Iteratoren 327 15.3.1 Das Interface Iterator 327 15.3.2 Das Interface Listlterator 329 15.4 Eine eigene Queue-Klasse 330 15.4.1 Anforderungen 330 15.4.2 Implementierung 330 15.5 Die Collection des Typs Set. 336 15.5.1 Abstrakte Eigenschaften 336 15.5.2 Implementierungen 336 15.6 Die Collection des Typs Map 338 15.6.1 Abstrakte Eigenschaften 338 15.6.2 Implementierungen 340 15.7 Sortierte Collections 341 15.7.1 Comparable. und Comparator 341 15.7.2 SortedSet und TreeSet % 342 15.7.3 SortedMap und TreeMap : 346 15.8 Die Klasse Collections 346 15.8.1 Sortieren und Suchen 346 15.8.2 Synchronisieren von Collections 348 15.8.3 Erzeugen unveränderlicher Collections 348 15.9 Zusammenfassung 349 16 Utility-Klassen I 351 16.1 Die Klasse Random 351 16.1.1 Initialisierung des Zufallszahlengenerators 351 16.1.2 Erzeugen von Zufallszahlen 351 16.2 Die Klassen Date, Calendar und GregorianCalendar 353 16.2.1 Konstruktoren 354 16.2.2 Abfragen und Setzen von Datumsbestandteilen 355 16.2.3 Vergleiche und Datums-/Zeitarithmetik 359 16.2.4 Umwandlung zwischen Date und Calendar 362 16.3 Die Klasse System 362 16.3.1 System-Properties 362 16.3.2 in, errund out 364 11

16.3.3 exit 365 16.3.4 gc. 365 16.3.5 currenttimemillis 366 16.3.6 arraycopy 369 16.4 Die Klasse RunTime 370 16.4.1 Grundlagen 370 16.4.2 Interaktion mit dem externen Programm. 371 16.5 Die Klasse Arrays 376 16.6 Zusammenfassung 377 17 Utility-Klassen II 379 17.1 Die Klasse StringTokenizer 379 17.1.1 Anlegen eines StringTokenizers 379 17.1.2 Zugriff auf Tokens 379 17.2 Die Klasse Math 381 17.2.1 Winkelfunktionen " 381 17.2.2 Minimum und Maximum ' 381 17.2.3 Arithmetik 382 17.2.4 Runden und Abschneiden 382 17.3 Die Klassen Biginteger und BigDecimal 382 17.3.1 Die Klasse Biginteger. ' 383 17.3.2 Die Klasse BigDecimal 385 17.4 Internationalisierung und Lokalisierung. 388 17.4.1 Die Klasse Locale. 389 17.4.2 Zahlen formatieren 391 17.4.3 Datum und Uhrzeit formatieren 394 17.4.4 Laden von Ressourcen. 396 17.5 Zusammenfassung 403 18 Character-Streams 405 18.1 Allgemeine Konzepte 405 18.2 Ausgabe-Streams 406 18.2.1 Die abstrakte Klasse Writer 406 18.2.2 Auswahl des Ausgabegerätes 407 18.2.3 Schachteln von Ausgabe-Streams 411 18.3 Eingabe-Streams.- 418 18.3.1 Die abstrakte Klasse Reader 418 18.3.2 Auswahl des Eingabegerätes 419 18.3.3 Schachteln von Eingabe-Streams 422 18.4 Zusammenfassung 426 19 Byte-Streams 427 19.1 Architektur und Vergleich mit Character-Streams 427 19.2 Ausgabe-Streams 427 19.2.1 Die Basisklasse OutputStream 427 19.2.2 Aus OutputStream direkt abgeleitete Klassen 428 19.2.3 Aus FilterOutputStream abgeleitete Klassen 429 12

19.3 Eingabe-Streams 435 19.3.1 Die Basisklasse InputStream 435 19.3.2 Aus InputStream direkt abgeleitete Klassen 436 19.3.3 Aus FilterfnputStream abgeleitete Klassen 438 19.4 Zusammenfassung, 443 20 Random-Access-I/O 445 20.1 Grundlegende Operationen 445 20.2 Navigation in der Datei 446 20.2.1 Positionierung des Dateizeigers 446 20.2.2 Die Länge der Datei 447 20.3 Lesezugriffe 447 20.4 Schreibzugriffe 450 20.5 Zusammenfassung 452 21 Datei-und Verzeichnis-Handling 453 21.1 Konstruktion eines File-Objekts 453 21.2 Zugriff auf Teile des Pfadnamens 454 21.3 Informationen über die Datei 454 21.4 Zugriff auf Verzeichniseinträge 456 21.4.1 Lesen von Verzeichniseinträgen 456 21.4.2 Ändern von Verzeichniseinträgen. 459 21.5 Temporäre Dateien und Lockdateien 462 21.5.1 Temporäre Dateien. 462 21.5.2 Lockdateien 463 21.6 Zusammenfassung 464 22 Multithreading 465 22.1 Grundlagen und Begriffe 465 22.2 Die Klasse Thread, 466 22.2.1 Erzeugen eines neuen Threads 466 22.2.2 Abbrechen eines Threads 467 22.2.3 Anhalten eines Threads 471 22.2.4 Weitere Methoden 471 22.3 Das Interface Runnable 472 22.3.1 Implementieren von Runnable 473 22.3.2 Multithreading durch-wrapper-klassen 474 22.4 Synchronisation 479 22.4.1 Synchronisationsprobleme 479 22.4.2 Monitore 481 22.4.3 wait und notify 485 22.4.4 PipedlnputStream und PipedOutputStream 488 22.5 Verwalten von Threads 491 22.5.1 Priorität und Name 491 22.5.2 Thread-Gruppen 491 22.6 Zusammenfassung 492 13

Teil V Grafikprogrammierung mit dem AWT 495 23 Grafikausgabe 497 23.1 Das Abstract Windowing Toolkit 497 23.1.1 Grundlegende Eigenschaften 497 23.1.2 Von AWT nach Swing 497 23.2 Grundlagen der Grafikausgabe 498 23.2.1 Anlegen eines Fensters 498 23.2.2 Die Methode paint 500 23.2.3 Das grafische Koordinatensystem 500 23.2.4 Schließen eines Fensters 501 23.3 Elementare Grafikroutinen 503 23.3.1 Linie 505 23.3.2 Rechteck 506 23.3.3 Polygon 507 23.3.4 Kreis 508 23.3.5 Kreisbogen 510 23.4 Weiterführende Funktionen 511 23.4.1 Linien-oder Füllmodus 511 23.4.2 Kopieren und Löschen von Flächen 512 23.4.3 Die Clipping-Region 514 23.5 Zusammenfassung 516 24 Textausgabe 517 24.1 Ausgabefunktionen 517 24.2 Unterschiedliche Schriftarten 519 24.2.1 Font-Objekte 519 24.2.2 Standardschriftarten 521 24.3 Eigenschaften von Schriftarten ' 523 24.3.1 Font-Informationen 523 24.3.2 Font-Metriken 524 24.4 Zusammenfassung ' 528 25 Farben 529 25.1 Das Java-Farbmodell 529 25.2 Erzeugen von Farben - * 529 25.3 Verwenden von Farben 530 25.4 Systemfarben 532 25.5 Zusammenfassung 535 26 Drucken 537 26.1 Einleitung 537 26.2 Drucken mit dem JDK 1.1 537 26.2.1 Grundlagen 537 26.2.2 Seitenweise Ausgabe 538 26.2.3 Plazierung des Codes zur Druckausgabe 539 14

26.3 Drucken seit dem JDK 1.2 ~ 542 26.3.1 Überblick 542 26.3.2 Zusammenspiel der Klassen 543 26.3.3 Ausdrucken einer Textdatei 549 26.4 Zugriff auf serielle und parallele Schnittstellen 555 26.4.1 Das Java Communications API 555 26.4.2 Ein einfaches Beispielprogramm 557 26.5 Zusammenfassung 558 27 Fenster 27.1 27.2 27.3 27.4 27.5 27.6 Die verschiedenen Fensterklassen Aufrufen und Schließen eines Fensters Visuelle Eigenschaften Anzeigezustand Fensterelemente 27.5.1 Der Fenstertitel 27.5.2 Das Icon des Fensters 27.5.3 Der Mauscursor 27.5.4 Die Vorder- und Hintergrundfarbe 27.5.5 Der Standard-Font Zusammenfassung 561 561 563 565 567 568 568 569 569 570 570 573 28 Event-Handling 575 28.1 Das Event-Handling im JDK 1.1 575 28.1.1 Grundlagen 575 28.1.2 Ereignistypen 576 28.1.3 Ereignisempfänger 578 28.1.4 Ereignisquellen 579 28.1.5 Adapterklassen 580 28.1.6 Zusammenfassung 580 28.2 Entwurfsmuster für den Nachrichtenverkehr 584 28.2.1 Variante 1: Implementierung eines EventListener-Interfaces 586 28.2.2 Variante 2: Lokale und anonyme Klassen 588 28.2.3 Variante 3: Trennung von GUI- und Anwendungscode 591 28.2.4 Variante 4: Überlagern der Event-Handler in den Komponenten 593 28.2.5 Ausblick 595 28.3 Zusammenfassung -'. 596 29 Low-Level-Events 597 29.1 Window-Events 597 29.2 Component-Events 599 29.3 Mouse-Events 602 29.4 MouseMotion-Events 606 29.5 Focus-Events 610 29.6 Key-Events 613 29.7 Zusammenfassung 618 15

30 Menü: 5 30.1 30.2 30.3 30.4 30.5 30.6 30.7 30.8 31 GUI-Dialoge 31.1 31.2 31.3 31.4 Grundlagen Menüleiste Menüs Menüeinträge 30.4.1 Einfache Menüeinträge 30.4.2 CheckboxMenultem 30.4.3 Beschleunigertasten 30.4.4 Untermenüs Action-Events Kontextmenüs Datenaustausch mit der Zwischenablage 30.7.1 Überblick 30.7.2 Kommunikation mit der Zwischenablage Zusammenfassung Erstellen eines Dialogs 31.1.1 Anlegen eines Dialogfensters 31.1.2 Zuordnen eines Layoutmanagers 31.1.3 Einfügen von Dialogelementen 31.1.4 Anzeigen des Dialogfensters Die Layoutmanager 31.2.1 FlowLayout 31.2.2 GridLayout 31.2.3 BorderLayout 31.2.4 GridBagLayout 31.2.5 NULL-Layout 31.2.6 Schachteln von Layoutmanagern Modale Dialoge Zusammenfassung - 32 AWT-Dialogelemente 32.1 32.2 32.3 32.4 32.5 32.6 32.7 32.8 32.9 32.10 32.11 32.12 Rahmenprogramm Label Button Checkbox CheckboxGroup TextField TextArea Choice List Scrollbar ScrollPane Zusammenfassung 621 621 621 622 623 623 624 626 630 632 637 640 640 640 643 645 645 645 646 646 647 648 649 651 653 656 661 663 665 674 675 675 678 679 680 682 683 687 689 691 694 697 704 16

33 Eigene Dialogelemente '. 705 33.1 Die Klasse Canvas 705 33.2 Entwicklung einer 7-Segment-Anzeige. 706 33.2.1 Anforderungen 706 33.2.2 Bildschirmanzeige 706 33.2.3 Ereignisbehandlung 708 33.3 Einbinden der Komponente 713 33.4 Zusammenfassung 716 34 Bitmaps und Animationen 717 34.1 Bitmaps 717 34.1.1 Laden und Anzeigen einer Bitmap 717 34.1.2 Entwicklung einer eigenen Bitmap-Komponente 721 34.2 Animation 723 34.2.1 Prinzipielle Vorgehensweise 723 34.2.2 Abspielen einer Folge von Bitmaps 727 34.2.3 Animation mit Grafikprimitiven 730 34.2.4 Reduktion des Bildschirmflackerns 736 34.3 Zusammenfassung 745 Teil VI Grafikprogrammierung mit Swing 747 35 Swing: Grundlagen 749 35.1 Eigenschaften und Architektur von Swing 749 35.1.1 Einleitung 749 35.1.2 Eigenschaften von Swing 749 35.1.3 Wie geht es weiter? 752 35.2 Ein einführendes Beispiel 753 35.2.1 Das Beispielprogramm 753 35.2.2 Beschreibung des Beispielprogramms 754 35.3 Zusammenfassung 760 36 Swing: Container und Menüs 763 36.1 Hauptfenster 763 36.1.1 36.1.2 36.1.3 36.1.4 36.1.5 36.1.6 J Frame JWindow (Dialog JOptionPane JApplet JlnternalFrame 763 767 769 770 774 776 36.2 Menüs 780 36.2.1 36.2.2 36.2.3 36.2.4 Einfache Menüs Grundlagen von Swing-Menüs Weitere Möglichkeiten Kontextmenüs 780 780 784 789 17

36.3 Weitere Swing-Container 791 36.3.1 JComponent 791 36.3.2 JPanel und JLayeredPane 801 36.4 Zusammenfassung 802 37 Swing: Komponenten I 805 37.1 Label und Textfelder 805 37.1.1 37.1.2 37.1.3 37.1.4 37.1.5 JLabel JTextField JPasswordField JTextArea JSpinner 805 807 810 810 813 37.2 Buttons 815 37.2.1 37.2.2 37.2.3 J Button JCheckBox JRadioButton 815 818 820 37.3 Listen und Comboboxen 822 37.3.1 37.3.2 JList JComboBox 822 826 37.4 Quasi-analoqe Quasi-analoge Komponenten 829 37.4.1 37.4.2 JScrollBar JSIider 829 832 37.4.3 JProgressBar 836 37.5 Zusammenfassung 838 38 Swing: Komponenten II. 841 38.1 Spezielle Panels 841 38.1.1 38.1.2 38.1.3 JScrollPane JSplitPane JTabbedPane 841 845 848 38.2 ITable JTable. 852 38.2.1 38.2.2 38.2.3 38.2.4 38.2.5 38.2.6 38.2.7 38.2.8 Erzeugen von Tabellen Konfiguration der Tabelle Selektieren von Elementen Zugriff auf den Inhalt der Tabelle Das Tabellenmodell Das Spaltenmodell Rendering der Zellen Reaktion auf Ereignisse 852 855 856 858 859 864 866 870 38.3 JTree 871 38.3.1 38.3.2 38.3.3 Erzeugen eines Baums Selektieren von Knoten Öffnen und Schließen der Knoten 871 874 878 38.3.4 Verändern der Baumstruktur 878 38.4 Zusammenfassung 882 18

Teil VII Applets 885 39 Applets I, 887 39.1 Die Architektur eines Applets 887 39.1.1 Grundlagen 887 39.1.2 Die Klasse java.awt.applet 888 39.1.3 Initialisierung und Endebehandlung 889 39.1.4 Weitere Methoden der Klasse Applet 890 39.2 Einbinden eines Applets 892 39.2.1 Das APPLET-Tag 892 39.2.2 Die Parameter des Applet-Tags ' 893 39.2.3 Parameterübergabe an Applets 894 39.3 Die Ausgabe von Sound 897 39.3.1 Soundausgabe in Applets 897 39.3.2 Soundausgabe in Applikationen 899 39.4 Animation in Applets 900 39.5 Zusammenfassung 906 40 Applets II 909 40.1 Verweise auf andere Seiten 909 40.1.1 Die Klasse URL 909 40.1.2 Der Applet-Kontext 910 40.1.3 Die Methode showdocument 911 40.2 Kommunikation zwischen Applets 915 40.3 Umwandlung einer Applikation in ein Applet 917 40.3.1 Die Beispiel-Applikation 918 40.3.2 Variante 1: Das Programm als Popup-Fenster 919 40.3.3 Variante 2: Erstellen eines gleichwertigen Applets 920 40.4 Das Java-Plugin 922 40.4.1 Funktionsweise 922 40.4.2 Verwendung des Plugins 924 40.5 Zusammenfassung 925 Teil VIII Spezielle APIs 927 41 Serialisierung 929 41.1 Grundlagen ' 929 41.1.1 Begriffsbestimmung 929 41.1.2 Schreiben von Objekten. 929 41.1.3 Lesen von Objekten 933 41.2 Weitere Aspekte der Serialisierung 937 41.2.1 Versionierung 937 41.2.2 Nicht-serialisierte Membervariablen 939 41.2.3 Objektreferenzen 940 41.2.4 Serialisieren von Collections 944 19

41.3 Anwendungen 944 41.3.1 Ein einfacher Objektspeicher 944 41.3.2 Kopieren von Objekten 948 41.4 Zusammenfassung 952 42 Datenbankzugriffe mit JDBC 953 42.1 42.2 42.3 42.4 42.5 Einleitung 42.1.1 Grundsätzliche Arbeitsweise 42.1.2 Die Architektur von JDBC Grundlagen von JDBC 42.2.1 Öffnen einer Verbindung 42.2.2 Erzeugen von Anweisungsobjekten 42.2.3 Datenbankabfragen 42.2.4 Datenbankänderungen 42.2.5 Die Klasse SQLException Die DirDB-Beispieldatenbank 42.3.1 42.3.2 42.3.3 42.3.4 42.3.5 42.3.6 42.3.7 42.3.8 Anforderungen und Design Das Rahmenprogramm Die Verbindung zur Datenbank herstellen Anlegen und Füllen der Tabellen Zählen der Verzeichnisse und Dateien Suchen von Dateien und Verzeichnissen Die zehn größten Dateien Speicherverschwendung durch Clustering Weiterführende Themen 42.4.1 42.4.2 42.4.3 42.4.4 42.4.5 42.4.6 42.4.7 Metadaten Escape-Kommandos Transaktionen JDBC-Datentypen Umgang mit JDBC-Objekten Prepared Statements SQL-Kurzreferenz Zusammenfassung 953 953 954 955 955 957 958 960 960 961 961 962 965 967 971 971 974 975 976 976 977 977 978 979 981 982 987 43 Reflection 43.1 43.2 Einleitung 989 989 989 Die Klassen Obiect und Class 43.2.1 Die Klasse Object 989 43.2.2 Die Klasse Class 990 43.3 Methoden- und Konstruktorenaufrufe 993 43.3.1 Parameterlose Methoden 993 43.3.2 Parametrisierte Methoden 998 43.3.3 Parametrisierte Konstruktoren 1002 43.4 Zugriff auf Membervariablen 1004 20

43.5 Arrays 1007 43.5.1 Erzeugen von Arrays r 1007 43.5.2 Zugriff auf Array-Elemente 1009 43.6 Zusammenfassung 1013 44 Beans 1015 44.1 Grundlagen und Begriffe 1015 44.2 Entwurf einer einfachen Bean 1017 44.2.1 Grundsätzliche Architektur 1017 44.2.2 Grafische Darstellung 1017 44.2.3 Eigenschaften 1019 44.2.4 Implementierung 1020 44.2.5 Verwendung der Bean 1023 44.3 Die Beanbox 1024 44.3.1 Beschreibung und Installation 1024 44.3.2 Grundlagen der Bedienung 1025 44.3.3 Integration eigener Beans 1027 44.3.4 Serialisierte Beans 1029 44.4 Bean-Ereignisse 1031 44.4.1 Bound Properties 1031 44.4.2 Constrained Properties,.. 1036 44.4.3 Anwendungsbeispiel 1040 44.5 Panel-Beans 1042 44.6 Beanlnfo-Klassen und Property-Editoren 1047 44.6.1 Beanlnfo-Klassen 1047 44.6.2 Property-Editoren 1051 44.7 Zusammenfassung 1057 45 Netzwerkprogrammierung 1059 45.1 Grundlagen der Netzwerkprogrammierung 1059 45.1.1 Was ist ein Netzwerk? 1059 45.1.2 Protokolle 1060 45.1.3 Adressierung von Daten 1061 45.1.4 Ports und Applikationen 1063 45.1.5 Request for Comments: 1064 45.1.6 Firewalls und Proxys 1066 45.2 Client-Sockets -' 1066 45.2.1 Adressierung 1066 45.2.2 Aufbau einer einfachen Socket-Verbindung 1068 45.2.3 Lesen und Schreiben von Daten. 1071 45.2.4 Zugriff auf einen Web-Server 1074 45.3 Server-Sockets 1077 45.3.1 Die Klasse ServerSocket 1077 45.3.2 Verbindungen zu mehreren Clients 1078 45.3.3 Entwicklung eines einfachen Web-Servers 1080 21

45.4 Daten mit Hilfe der Klasse URL lesen 1088 45.5 Zusammenfassung 1090 46 Remote Method Invocation 1091 46.1 Einleitung 1091 46.1.1 Prinzipielle Arbeitsweise 1091 46.1.2 Einzelheiten der Kommunikation 1092 46.2 Aufbau eines einfachen Uhrzeit-Services 1094 46.2.1 Vorgehensweise 1094 46.2.2 Das Remote-Interface 1095 46.2.3 Implementierung des Remote-Interfaces 1096 46.2.4 Registrieren der Objekte 1098 46.2.5 Zugriff auf den Uhrzeit-Service 1101 46.2.6 Ausblick 1104 46.3 Zusammenfassung ~ 1105 47 Sicherheit und Kryptographie 1107 47.1 Kryptographische Grundlagen 1107 47.1.1 Wichtige Begriffe 1107 47.1.2 Einfache Verschlüsselungen 1108 47.1.3 Message Digests 1110 47.1.4 Kryptographische Zufallszahlen 1115 47.1.5 Public-Key-Verschlüsselung 1117 47.1.6 Digitale Unterschriften 1118 47.1.7 Zertifikate 1126 47.2 Sicherheitsmechanismen in Java 1127 47.2.1 Sprachsicherheit 1127 47.2.2 Das Sandbox-Konzept 1128 47.2.3 Veränderungen im )DK 1.1 und 1.2 1129 47.3 Signierte Applets 1129 47.3.1 Ein»unerlaubtes«Applet 1129 47.3.2 Signieren des Applets 1132 47.3.3 Ex-und Import von Zertifikaten 1133 47.3.4 Anpassen der Policy-Datei 1134 47.3.5 Die Klasse SecurityManager 1137 47.4 Zusammenfassung - " 1139 48 Sound 1141 48.1 Grundlagen und Konzepte 1141 48.2 Gesampelter Sound 1142 48.2.1 Was ist Sampling? 1142 48.2.2 Das Sampling-API 1143 48.2.3 Abspielen einer Sample-Datei 1147 48.3 Midi 1149 48.3.1 Was ist Midi? 1149 48.3.2 Grundlegende Klassen des Midi-APIs 1150 22

48.3.3 Alle meine Entchen - Erster Versuch. 1151 48.3.4 Alle meine Entchen mit dem Sequenzer 1155 48.3.5 Zugriff auf Midi-Dateien 1159 48.4 Zusammenfassung 1161 Teil IX Verschiedenes 1163 49 Performance-Tuning 1165 49.1 Einleitung ' 1165 49.2 Tuning-Tips 1166 49.2.1 String und StringBuffer 1166 49.2.2 Methodenaufrufe 1170 49.2.3 Vektoren und Listen 1172 49.2.4 Dateizugriffe 1174 49.2.5 Speicher-Optimierung 1177 49.3 Einsatz eines Profilers 1178 49.3.1 Grundlagen 1178 49.3.2 Eine Beispielsitzung mit dem Profiler 1180 49.3.3 Ausblick 1186 49.4 Zusammenfassung 1187 50 Hilfsprogramme des JDK 1189 50.1 javac - Der Compiler 1189 50.1.1 Aufruf 1189 50.1.2 Beschreibung 1189 50.1.3 Optionen 1190 50.2 java - Der Interpreter 1191 50.2.1 Aufruf 1191 50.2.2 Beschreibung 1191 50.2.3 Optionen 1192 50.3 appletviewer-der Appletviewer 1193 50.3.1 Aufruf 1193 50.3.2 Beschreibung 1193 50.3.3 Optionen 1193 50.4 jdb-der Debugger 1193 50.4.1 Aufruf 1193 50.4.2 Beschreibung" 1193 50.4.3 Vorbereitungen 1194 50.5 javadoc - Der Dokumentationsgenerator 1196 50.5.1 Aufruf 1196 50.5.2 Beschreibung 1196 50.5.3 Dokumentationskommentare 1196 50.5.4 Aufruf von javadoc 1197 50.5.5 Optionen 1199 23

50.6 jar - Das Archivierungswerkzeug 1199 50.6.1 Aufruf 1199 50.6.2 Beschreibung 1199 50.6.3 Kommandos 1200 50.6.4 Verwendung von jar-dateien in Applets 1201 50.7 javap - Der Disassembler 1202 50.7.1 Aufruf 1202 50.7.2 Beschreibung 1202 50.7.3 Optionen 1202 50.8 serialver - Zugriff auf die serialversionuid 1202 50.8.1 Aufruf 1202 50.8.2 Beschreibung 1203 50.8.3 Optionen. 1203 50.9 keytool - Verwaltung von kryptografischen Schlüsseln 1203 50.9.1 Aufruf 1203 50.9.2 Beschreibung. 1203 50.10 policytool-bearbeiten von Policy-Dateien 1203 50.10.1 Aufruf 1203 50.10.2 Beschreibung 1203 50.11 jarsigner - Signieren von Archiven 1204 50.11.1 Aufruf 1204 50.11.2 Beschreibung ' " 1204 50.11.3 Optionen 1204 50.12 rmic - Erzeugen von RMI-Stubs und -Skeletons 1205 50.12.1 Aufruf 1205 50.12.2 Beschreibung 1205 50.12.3 Optionen 1205 50.13 rmiregistry- Der RMI-Namensservice 1205 50.1 3.1 Aufruf 1205 50.13.2 Beschreibung 1205 50.14 Zusammenfassung 1206 Stichwortverzeichnis 1207 Sun Microsystems, Inc. Binary Code License Agreement 1239 24