Inhalt | 6 |
1 Das Fundament von Java | 16 |
1.1 DIE SPRACHE JAVA | 17 |
1.1.1 Warum Java? | 17 |
1.2 OBJEKTORIENTIERTE PROGRAMMIERUNG | 25 |
1.2.1 Objekt | 25 |
1.2.2 Methode | 25 |
1.2.3 Kapselung von Eigenschaften | 26 |
1.2.4 Nachrichten | 27 |
1.2.5 Klasse | 27 |
1.2.6 Vererbung | 28 |
1.2.7 Überschreiben von Methoden und Eigenschaften | 29 |
1.2.8 Überladung von Methoden | 30 |
1.2.9 Mehrfachvererbung | 31 |
1.3 DIE INSTALLATION | 32 |
1.3 DIE INSTALLATION JAVA | 32 |
1.3.1 Installation von J2SE | 32 |
1.3.2 Installation des JDK | 33 |
1.3.3 Installation der Dokumentation des JDK | 34 |
1.3.4 Installation der Quelltexte | 35 |
1.3.5 Java-Software entwickeln | 35 |
1.3.6 Entwicklungswerkzeuge | 36 |
2 Grundlagen von Java | 38 |
2.1 GRUNDLEGENDE PROGRAMMIERSTRUKTUREN | 39 |
2.1.1 Das erste Java-Programm | 39 |
2.1.2 Kommentare | 41 |
2.1.3 Bezeichner | 43 |
2.1.4 Datentypen | 44 |
2.1.5 Variablen | 48 |
2.1.6 Konstanten | 49 |
2.1.7 Arrays | 50 |
2.1.8 Speichermanagement | 53 |
2.1.9 Typkonvertierungen | 54 |
2.1.10 Ausdrücke | 56 |
2.1.11 Anweisungen | 65 |
2.2 OBJEKTORIENTIERTE PROGRAMMIERSTRUKTUREN | 81 |
2.2.1 Klassen | 81 |
2.2.2 Eigenschaften | 82 |
2.2.3 Objekte | 82 |
2.2.4 Methoden | 83 |
2.2.5 Die this-Referenz | 88 |
2.2.6 Konstruktoren | 89 |
2.2.7 Destruktoren | 90 |
2.2.8 Pakete | 91 |
2.2.9 Modifier | 97 |
2.2.10 Statische Strukturen | 103 |
2.2.11 Vererbung | 106 |
2.2.12 Initialisierungsprozeß eines Objekts | 111 |
2.2.13 Aufruf überschriebener Methoden aus Konstruktoren | 113 |
2.2.14 Abstrakte Klassen | 114 |
2.2.15 Schnittstellen (Interfaces) | 116 |
2.2.16 Innere und anonyme Klassen | 120 |
2.3 EXCEPTIONS | 124 |
2.3.1 Abfangen und Behandeln von Exceptions | 125 |
2.3.2 Die Klassifizierung von Exceptions | 127 |
2.3.3 Das Ausnahmeobjekt verwenden | 128 |
2.3.4 Mehr als eine Ausnahme abfangen | 129 |
2.3.5 Die finally-Klausel | 131 |
2.3.6 Weiterleiten von Exceptions | 132 |
2.3.7 Struktur der Ausnahmebehandlung | 133 |
2.3.8 Eigene Exception-Typen definieren | 134 |
2.3.9 Auslösen einer Exception | 135 |
3 Weiterführende Spracheigenschaften | 138 |
3.1 ZEICHENKETTEN | 139 |
3.1.1 Die Klasse String | 139 |
3.1.2 StringBuffer und StringBuilder | 150 |
3.1.3 Die Klasse StringTokenizer | 152 |
3.2 HILFSKLASSEN | 155 |
3.2.1 Wrapper-Klassen | 155 |
3.2.2 Mathematische Klassen | 162 |
3.2.3 Die Klasse Arrays | 170 |
3.2.4 Die Klasse System | 172 |
3.2.5 Die Klasse Runtime | 180 |
3.2.6 Die Klassen Date, Calendar und GregorianCalendar | 184 |
3.3 EVENTS | 188 |
3.3.1 Ereignisverarbeitung in Java | 189 |
3.3.2 Ereignistypen | 191 |
3.3.3 Ereignisempfänger | 191 |
3.3.4 Ereignisquellen | 191 |
3.3.5 AWT-Ereignisse | 192 |
3.3.6 Implementierung von Ereignisempfängern | 202 |
3.3.7 Eigene Ereignisse definieren und auslösen | 211 |
3.4 COLLECTIONS | 216 |
3.4.2 Java-Implementierungen der Mengenklassen | 218 |
3.4.3 Synchronisation von Collections | 226 |
3.4.4 Das Interface Iterator zum Durchlaufen von Collections | 226 |
3.4.5 Suchen, Sortieren und andere Algorithmen | 227 |
3.5 ENTWURFSMUSTER | 232 |
3.5.1 Singleton | 233 |
3.5.2 Immutable | 235 |
3.5.3 Factory | 237 |
3.5.4 Iterator | 242 |
3.5.5 Delegate | 244 |
4 Erweiterte Sprachkonzepte | 248 |
4.1 AUTOBOXING UND UNBOXING | 249 |
4.1.1 Regeln für das Autoboxing beziehungsweise Unboxing | 251 |
4.2 STATIC IMPORTS | 256 |
4.2.1 Statische Importe | 257 |
4.2.2 Gefahren und Nachteile statischer Importe | 259 |
4.3 TYPSICHERE AUFZÄHLUNGEN | 261 |
4.3.1 Aufzählungen mit enum | 262 |
4.3.2 Eigenschaften und Struktur von enum-Aufzählungen | 264 |
4.3.3 Aufzählungen innerhalb anderer Strukturen erzeugen | 265 |
4.3.4 Iteration über Aufzählungen | 266 |
4.3.5 enum-Aufzählungen in switch-Anweisungen | 266 |
4.3.6 Mengen von Aufzählungen | 268 |
4.3.7 Benutzerdefinierte Elemente in enums | 270 |
4.3.8 Schnittstellen implementieren in Aufzählungen | 271 |
4.3.9 Aufzählungswertbezogene Klassenrümpfe | 272 |
4.4 VARIABLE PARAMETERLISTEN | 274 |
4.4.1 Variable Parameterlisten als erweitertes Sprachkonzept | 276 |
4.4.2 Einschränkungen von VarArgs-Definitionen | 277 |
4.5 METADATEN | 277 |
4.5.1 Deklaration von Annotationstypen | 278 |
4.5.2 Annotationsverarbeitung | 281 |
4.6 GENERICS | 291 |
4.6.1 Definition parametrisierbarer Typen | 295 |
4.6.2 Untertypisierung | 300 |
4.6.3 Bounds | 300 |
4.6.4 Generische Methoden und Konstruktoren | 304 |
4.6.5 Wildcards | 306 |
4.6.6 Java Generics kompilieren | 310 |
4.6.7 Besonderheiten von Java Generics | 315 |
4.6.8 Generischen Quellcode mit nicht generischem Quellcode verknüpfen | 320 |
5 Datenströme und Datenpersistenz | 324 |
5.1 EIN- UND AUSGABE VON DATEN | 325 |
5.1.2 Stream-Klassen | 326 |
5.1.3 Wahlfreier Zugriff auf Dateien | 334 |
5.1.4 Einfache Datenein- und -ausgabe mit der Klasse System | 336 |
5.2.1 Objekte serialisieren und deserialisieren | 338 |
5.2.2 Der Serialisierungs-Mechanismus | 340 |
5.2.3 Erweiterte Eigenschaften der Serialisierung | 340 |
5.3 NEW I/O | 342 |
5.3.1 Puffer | 343 |
5.3.2 Channels | 346 |
5.3.3 Dateisperren | 347 |
5.3.4 File Memory Mapping | 347 |
5.3.5 Scattering und Gathering | 348 |
5.3.6 Non-blocking und Multiplexed I/O | 349 |
5.3.7 Zeichensätze | 351 |
5.4 DATENBANKEN MIT JDBC | 352 |
5.4.1 Die Architektur von JDBC | 353 |
5.4.2 Kommunikation via JDBC | 356 |
5.4.3 Beispieldatenbank | 362 |
5.4.4 Weiterführende JDBC-Eigenschaften | 370 |
6 GUI-Programmierung | 376 |
6.1 SWING | 377 |
6.1.1 Das Prinzip von Swing | 377 |
6.1.2 Komponenten der Bibliothek Swing | 381 |
6.2 DRAG&DROP | 459 |
6.2.1 Drag&Drop-Unterstützung in Swing | 459 |
6.2.2 TransferHandler für die Datenübertragung | 461 |
6.2.3 Datei-Drag&Drop | 465 |
7 Netzwerk und verteilte Systeme | 470 |
7.1 TCP-/UDP-SOCKETS | 471 |
7.1.1 Das erste Netzwerkprogramm | 472 |
7.1.2 Der Client lernt sprechen | 473 |
7.1.3 Ein erster Internet-Server... | 476 |
7.1.4 Quasseln im Netz – der Chatserver | 479 |
7.1.5 UDP-Sockets | 485 |
7.1.6 Die Klassen URL und URLConnection | 489 |
7.1.7 Die Klasse URI | 492 |
7.2 RMI – VERTEILTE PROGRAMMIERUNG IN JAVA | 493 |
7.2.1 Entwurf einer verteilten Applikation mit Hilfe von RMI | 494 |
7.2.2 Verteilte Beispielapplikation | 495 |
7.2.3 Dynamisches Generieren von Stubs | 504 |
7.2.4 Skalierung von entfernten Objekten | 505 |
7.2.5 Weitere Eigenschaften von RMI | 510 |
7.3 EVENT HANDLING IN VERTEILTEN SYSTEMEN | 511 |
7.3.1 Fallbeispiel Value Change | 511 |
7.3.2 Implementierung von Listenern in verteilten Systemen | 517 |
7.4 SERVLETS – DIE ALTERNATIVE ZU CGI | 526 |
7.4.1 Vorteile von Servlets gegenüber CGI-Skripten | 526 |
7.4.2 Servlets programmieren | 526 |
7.4.3 Kommunikation leichtgemacht – der Java-Chat | 530 |
7.4.4 Cookies – Informative Krümel | 536 |
7.4.5 Sessions – Behalten Sie Ihre Kunden im Auge | 541 |
7.5 JAVA SERVER PAGES | 547 |
7.5.1 Wann Servlets, wann JSPs? | 548 |
7.5.2 Die Struktur von JSPs | 549 |
7.5.3 JSPs laden | 550 |
7.5.4 JSP-Elemente | 551 |
7.5.5 Scopes | 567 |
7.5.6 Implizite Objekte | 567 |
7.5.7 Expression Language (EL) | 568 |
7.5.8 Tag-Extensions | 569 |
7.6 JAVA NAMING AND DIRECTORY INTERFACE (JNDI) | 576 |
7.6.1 Die Architektur von JNDI | 577 |
7.6.2 Programmieren mit der JNDI-API | 580 |
7.6.3 Zusammenfassung | 585 |
7.7 APPLETS | 585 |
7.7.1 Kompatibilitätsprobleme | 586 |
7.7.2 Das HelloWorld-Applet | 586 |
7.7.3 Applets und Applikationen | 588 |
7.7.4 Das APPLET-Tag | 589 |
7.7.5 Übergeben von Parametern an Applets | 590 |
7.7.6 Die Klasse Applet | 591 |
7.7.7 Sicherheitsbeschränkungen | 595 |
8 Konkurrierende Programmierung | 596 |
8.1 MULTITHREADING | 597 |
8.1.1 Die Klasse Thread | 598 |
8.1.2 Die Schnittstelle Runnable | 606 |
8.1.3 Threadgruppen | 611 |
8.1.4 Die Klassen Timer und TimerTask | 614 |
8.2 SYNCHRONISATION | 616 |
8.2.1 Monitore | 618 |
8.2.2 Die Methoden wait() und notify() | 623 |
8.2.3 Die Klassen PipedInputStream und PipedOutputStream | 626 |
8.3 CONCURRENCY | 628 |
8.3.1 Das Interface Executor | 628 |
8.3.2 Semaphore | 629 |
8.3.3 Locks | 630 |
8.3.4 CyclicBarrier | 632 |
9 Weitere Java-Klassenbibliotheken | 634 |
9.1 SICHERHEIT IN JAVA | 635 |
9.1.1 Das Sandbox-Modell | 635 |
9.1.2 Das Security-API | 636 |
9.1.3 Der Security Manager | 638 |
9.1.4 Der Access Controller | 641 |
9.1.5 Beispielanwendung | 650 |
9.2 PREFERENCES | 654 |
9.2.1 Die Architektur des Preferences API | 655 |
9.2.2 Die Klasse Preferences | 655 |
9.2.3 Beispielanwendung | 658 |
9.3 REGULÄRE AUSDRÜCKE | 661 |
9.3.1 Die Syntax regulärer Ausdrücke | 662 |
9.3.2 Die Klasse Pattern | 664 |
9.3.3 Die Klasse Matcher | 665 |
9.3.4 Redundante Methoden in der Klasse String | 666 |
9.3.5 Beispielszenarios für reguläre Ausdrücke | 666 |
9.4 DRUCKEN MIT DEM PRINTSERVICE-API | 670 |
9.4.1 Einfache Dokumente drucken | 670 |
9.4.2 Drucken in eine Postscriptdatei | 673 |
9.4.3 Drucken von frei formatierten Dokumenten | 675 |
9.5 SOUND IN JAVA | 677 |
9.5.1 JavaMediaFramework versus Java Sound | 677 |
9.5.2 Wie funktioniert Audio-Sampling? | 678 |
9.5.3 Einbindung von Audiodateien mit der Klasse AudioClip | 679 |
9.5.4 Aufnahme und Wiedergabe mit dem Java-Sound-API | 681 |
9.5.5 Achtung, Aufnahme! | 685 |
9.5.6 MIDI | 688 |
9.6 DAS REFLECTION-API | 691 |
9.6.1 Die Basisklassen Object und Class | 692 |
9.6.2 Modifier analysieren | 696 |
9.6.3 Dynamisches Laden und Objekterzeugung von Klassen | 697 |
9.6.4 Dynamische Methodenaufrufe | 699 |
9.7 LOGGING | 709 |
9.7.1 Einfaches Logging | 710 |
9.7.2 Erweitertes Logging | 711 |
9.7.3 Anpassen der Logging-Konfiguration | 714 |
9.7.4 Handler | 715 |
9.7.5 Filter definieren | 721 |
9.7.6 Formatter definieren | 722 |
9.8 JAVA NATIVE INTERFACE | 723 |
9.8.1 Erstellen von Java-Klassen mit nativen Methoden | 723 |
9.8.2 Mapping zwischen Java und nativen Datentypen | 727 |
9.8.3 Zugriff auf Java-Objekte in nativen Methoden | 728 |
10 Grafikprogrammierung | 738 |
10.1 GRAFIK MIT DEM 2D-API | 739 |
10.1.1 Koordinatensysteme | 739 |
10.1.2 Einfache Formen zeichnen | 740 |
10.1.3 Verwenden komplexerer 2D-API-Zeichenfunktionen | 742 |
10.1.4 Figur + Figur = Constructive Area Geometry | 744 |
10.1.5 Komplexere Zeichenobjekte – Kurven und General Paths | 746 |
10.1.6 Transformationen | 749 |
10.1.7 Fonts | 751 |
10.1.8 Linien zeichnen – das Interface »Stroke« | 753 |
10.1.9 Bilder, Farbverläufe – Formen füllen | 756 |
10.1.10 Bildbearbeitung | 761 |
10.1.11 Transparenz und die Klasse AlphaComposite | 763 |
10.1.12 Bildbearbeitung mit der Klasse BufferedImage | 766 |
10.1.13 Filter | 768 |
10.1.14 Animationen in Java | 773 |
10.1.15 Clipping | 775 |
10.2 DREIDIMENSIONALE GRAFIKEN MIT DEM 3D-API | 777 |
10.2.1 Licht aus – Spot an! Noch mehr Beleuchtung | 781 |
10.2.2 Weitere Objekte – die Interfaces Shape3D und Primitive | 782 |
10.2.3 Das Aussehen von Objekten festlegen – Appearance | 785 |
10.2.4 Bewegung kommt ins Spiel: Transformation und Behavior | 790 |
10.2.5 Die Klasse Interpolator | 799 |
10.2.6 Interaktion | 802 |
Anhang A Werkzeuge des JDK | 806 |
Literaturverzeichnis | 828 |
Stichwortverzeichnis | 830 |
Mehr eBooks bei www.ciando.com | 0 |