|
Inhaltsverzeichnis |
6 |
|
|
Vorwort |
16 |
|
|
Danke |
16 |
|
|
1 Einleitung |
18 |
|
|
1.1 Geschichte von Java |
18 |
|
|
1.2 Was ist Java? |
19 |
|
|
1.3 Java SE Version 6 |
21 |
|
|
1.4 Download und Installation |
21 |
|
|
1.5 Entwicklungsumgebung |
21 |
|
|
1.5.1 IntelliJ IDEA |
22 |
|
|
1.5.2 Eclipse |
22 |
|
|
1.5.3 NetBeans |
22 |
|
|
1.5.4 Texteditoren |
22 |
|
|
1.6 Java-Tools |
22 |
|
|
1.6.1 java |
23 |
|
|
1.6.2 javac |
23 |
|
|
1.6.3 Appletviewer |
24 |
|
|
1.6.4 javadoc |
24 |
|
|
1.6.5 jar |
25 |
|
|
1.6.6 jdb |
26 |
|
|
1.7 Fazit |
26 |
|
|
2 Java? Java! |
28 |
|
|
2.1 Anweisungen |
28 |
|
|
2.2 Variablen |
29 |
|
|
2.2.1 Variablen deklarieren |
30 |
|
|
2.2.2 Konventionen |
30 |
|
|
2.2.3 Mehrere Variablen vom gleichen Typ deklarieren |
31 |
|
|
2.2.4 Zuweisen von initialen Werten |
31 |
|
|
2.2.5 Lebensdauer und Sichtbarkeit von Variablen |
31 |
|
|
2.3 Datentypen |
32 |
|
|
2.3.1 Datentypobjekte |
33 |
|
|
2.3.2 valueOf-Zuweisungen |
33 |
|
|
2.3.3 Typkonvertierung |
34 |
|
|
2.4 Konstanten und konstante Variablen |
35 |
|
|
2.5 Kommentare |
35 |
|
|
2.6 Ausdrücke und Operatoren |
36 |
|
|
2.6.1 Arithmetische Operatoren |
37 |
|
|
2.6.2 Relationale Operatoren |
37 |
|
|
2.6.3 Logische Operatoren |
38 |
|
|
2.6.4 Weitere Operatoren |
39 |
|
|
2.6.5 Operator-Vorrangregeln |
39 |
|
|
2.7 Bedingungen und Verzweigungen |
40 |
|
|
2.7.1 |
40 |
|
|
2.7.2 Switch-Anweisung |
41 |
|
|
2.8 Schleifen |
43 |
|
|
2.8.1 for-Schleife |
43 |
|
|
2.8.2 for-each-Schleife |
44 |
|
|
2.8.3 while-Schleife |
45 |
|
|
2.8.4 do-while-Schleife |
45 |
|
|
2.8.5 break und continue |
46 |
|
|
2.9 Methodendeklaration |
48 |
|
|
2.9.1 Aufruf einer Methode |
49 |
|
|
2.9.2 Parameter: by-reference oder by-value |
49 |
|
|
2.10 Fazit |
50 |
|
|
3 Objektorientierte Programmierung |
52 |
|
|
3.1 Klassen und Objektinstanzen |
53 |
|
|
3.1.1 Abstraktion |
53 |
|
|
3.1.2 Kapselung |
54 |
|
|
3.1.3 Wiederverwendbarkeit |
55 |
|
|
3.2 Beziehungen zwischen Klassen |
55 |
|
|
3.2.1 Spezialisierung |
55 |
|
|
3.2.2 Komposition und Aggregation |
57 |
|
|
3.2.3 Assoziation |
57 |
|
|
3.3 Polymorphie |
57 |
|
|
3.4 Definition von Klassen |
59 |
|
|
3.4.1 Eigenschaften/Instanzvariablen |
59 |
|
|
3.4.2 Getter und Setter |
60 |
|
|
3.5 Erzeugen von Objektinstanzen |
64 |
|
|
3.5.1 Instanz einer inneren Klasse erzeugen |
64 |
|
|
3.6 Qualifizierung: Zugriff auf Methoden |
65 |
|
|
3.7 Konstruktoren und Destruktoren |
65 |
|
|
3.7.1 Konstruktor |
66 |
|
|
3.7.2 Destruktor |
67 |
|
|
3.8 Methodenüberladung |
67 |
|
|
3.8.1 Konstruktorkaskadierung |
70 |
|
|
3.8.2 Variable Argumente (VarArgs) |
71 |
|
|
3.9 Zugriffsmodifizierer |
73 |
|
|
3.9.1 Standardmodifizierer |
74 |
|
|
3.9.2 public |
74 |
|
|
3.9.3 protected |
74 |
|
|
3.9.4 private |
75 |
|
|
3.10 Statische Methoden und Variablen |
76 |
|
|
3.11 Finale Klassen, Methoden und Variablen |
78 |
|
|
3.12 Vererbung |
79 |
|
|
3.12.1 Ableitung von einer Basisklasse |
79 |
|
|
3.12.2 Polymorphie im Einsatz |
80 |
|
|
3.12.3 Factory-Entwurfsmuster |
82 |
|
|
3.13 Abstrakte Klassen und Methoden |
85 |
|
|
3.13.1 Deklaration einer abstrakten Klasse |
86 |
|
|
3.13.2 Implementieren der abstrakten Klasse |
86 |
|
|
3.13.3 Überschreiben und Implementieren von Methoden einer abstrakten Klasse |
87 |
|
|
3.13.4 Definition abstrakter Methoden |
88 |
|
|
3.14 Interfaces |
89 |
|
|
3.14.1 Ein Interface definieren |
90 |
|
|
3.14.2 Implementieren eines Interface |
91 |
|
|
3.14.3 Mehrere Interfaces implementieren |
92 |
|
|
3.14.4 Interface-Ableitung |
95 |
|
|
3.15 Lokale und anonyme Klassen |
98 |
|
|
3.15.1 Lokale Klassen in Methoden |
101 |
|
|
3.15.2 Anonyme Klassen |
102 |
|
|
3.16 Aufzählungen |
104 |
|
|
3.16.1 Eindeutig und typsicher |
105 |
|
|
3.16.2 Enumerations-Member durchlaufen |
106 |
|
|
3.17 Pakete |
107 |
|
|
3.17.1 Pakete definieren |
108 |
|
|
3.17.2 Pakete verwenden |
108 |
|
|
3.17.3 Das import-Statement |
109 |
|
|
3.17.4 Das import-Statement mit Platzhaltern |
109 |
|
|
3.17.5 Namensraumkonflikte |
110 |
|
|
3.18 Zusammenfassung |
111 |
|
|
4 Listen |
112 |
|
|
4.1 Array |
112 |
|
|
4.1.1 Deklaration |
112 |
|
|
4.1.2 Instanzierung |
113 |
|
|
4.1.3 Zuweisung und Abruf von Werten |
113 |
|
|
4.1.4 Mehrdimensionale Arrays |
115 |
|
|
4.1.5 Vor- und Nachteile |
116 |
|
|
4.2 ArrayList |
116 |
|
|
4.2.1 Deklaration und Instanzierung |
117 |
|
|
4.2.2 Zuweisen von Werten |
118 |
|
|
4.2.3 Abrufen von Werten |
120 |
|
|
4.2.4 Ersetzen von Werten |
123 |
|
|
4.2.5 Löschen von Werten |
124 |
|
|
4.2.6 Überprüfen, ob ein Element in der Liste existiert |
124 |
|
|
4.2.7 Vor- und Nachteile der ArrayList |
125 |
|
|
4.3 HashMap |
125 |
|
|
4.3.1 Deklaration und Instanzierung |
125 |
|
|
4.3.2 HashMap und Generics |
126 |
|
|
4.3.3 Werte zuweisen |
126 |
|
|
4.3.4 Abrufen von Werten |
128 |
|
|
4.3.5 Abrufen aller Elemente einer HashMap |
129 |
|
|
4.3.6 Löschen von Elementen |
131 |
|
|
4.3.7 Überprüfen, ob bestimmte Schlüssel oder Werte in der Liste existieren |
132 |
|
|
4.4 Properties |
136 |
|
|
4.4.1 Deklaration und Instanzierung |
136 |
|
|
4.4.2 Zuweisen und Abrufen von Werten |
136 |
|
|
4.4.3 Speichern der Werte in Textdateien |
138 |
|
|
4.4.4 Speichern der Werte in XML-Dateien |
139 |
|
|
4.4.5 Laden der Werte aus Textdateien |
140 |
|
|
4.4.6 Laden der Werte aus XML-Dateien |
141 |
|
|
4.4.7 Vor- und Nachteile der Properties-Klasse |
142 |
|
|
4.5 Weitere Listen |
143 |
|
|
4.5.1 HashSet |
143 |
|
|
4.5.2 TreeSet |
143 |
|
|
4.5.3 LinkedList |
143 |
|
|
4.5.4 TreeMap |
143 |
|
|
4.5.5 LinkedHashMap |
143 |
|
|
4.5.6 Vector |
143 |
|
|
4.6 Wichtige Interfaces |
144 |
|
|
4.6.1 Enumeration |
144 |
|
|
4.6.2 Iterator |
145 |
|
|
4.6.3 Collection |
146 |
|
|
4.6.4 Map |
148 |
|
|
4.6.5 List |
149 |
|
|
4.6.6 Set |
150 |
|
|
4.7 Generics |
152 |
|
|
4.7.1 Was sind Generics? |
152 |
|
|
4.7.2 Was bringen Generics? |
152 |
|
|
4.7.3 Wie werden die Datentypen angegeben? |
152 |
|
|
4.7.4 Müssen Generics zwingend deklariert werden? |
153 |
|
|
4.7.5 Generics in eigenen Klassen und Methoden verwenden |
153 |
|
|
4.7.6 Generische Typen einschränken |
154 |
|
|
4.7.7 Generics und Performance |
156 |
|
|
4.8 Zusammenfassung |
156 |
|
|
5 Ausnahmen |
158 |
|
|
5.1 Ausnahmen werfen |
158 |
|
|
5.2 Ausnahmen abfangen |
160 |
|
|
5.2.1 Mehrere Ausnahmen behandeln |
161 |
|
|
5.2.2 Alle Ausnahmen auf einen Schlag abfangen |
163 |
|
|
5.2.3 Das finally-Schlüsselwort |
163 |
|
|
5.3 Eigene Ausnahmen definieren |
165 |
|
|
5.4 Strategien beim Einsatz von Ausnahmen |
168 |
|
|
5.4.1 Behandeln Sie Ausnahmen so lokal wie möglich |
168 |
|
|
5.4.2 Behandeln Sie nur Ausnahmen, für die Sie zuständig sind |
169 |
|
|
5.4.3 Verwenden Sie spezifische Ausnahmetypen |
169 |
|
|
5.5 Fazit |
169 |
|
|
6 Threads |
172 |
|
|
6.1 Einen Thread erstellen |
172 |
|
|
6.1.1 Eine threadingfähige Klasse |
172 |
|
|
6.1.2 Einen Thread starten |
174 |
|
|
6.2 Timer statt Thread |
175 |
|
|
6.3 Priorität von Threads setzen |
178 |
|
|
6.4 Threads beenden |
180 |
|
|
6.4.1 Verwendung von interrupt() zum Abbrechen eines Thread |
180 |
|
|
6.4.2 Verwendung einer eigenen Thread-Ableitung |
181 |
|
|
6.4.3 StoppableThread statt Thread als Super- Klasse |
182 |
|
|
6.5 Zugriff auf den aktuellen Thread |
184 |
|
|
6.6 Ermitteln aller laufenden Threads |
184 |
|
|
6.7 Organisation von Threads in Thread- Gruppen |
186 |
|
|
6.8 Synchronisierung von Threads |
189 |
|
|
6.8.1 Monitor |
190 |
|
|
6.8.2 wait() und notify() |
194 |
|
|
6.9 Fazit |
198 |
|
|
7 Prozesse und Systemumgebung |
200 |
|
|
7.1 Starten einer externen Applikation |
200 |
|
|
7.2 Einlesen der Rückgabe eines Prozesses |
202 |
|
|
7.3 Freien Speicher ermitteln |
205 |
|
|
7.3.1 Initialen Arbeitsspeicher festlegen |
206 |
|
|
7.4 Garbage Collector erzwingen |
207 |
|
|
7.5 Umgebungsinformationen abrufen |
208 |
|
|
7.6 Betriebssystem und Java-Version bestimmen |
210 |
|
|
7.7 Informationen zum aktuellen Nutzer ermitteln |
211 |
|
|
7.8 Zugesicherte Umgebungsvariablen |
212 |
|
|
7.9 System-Umgebungsinformationen abrufen |
213 |
|
|
7.10 Zusammenfassung |
215 |
|
|
8 Arbeiten mit der Kommandozeile |
216 |
|
|
8.1 Aufbau einer Kommandozeilenapplikation |
216 |
|
|
8.2 Parameter einlesen |
218 |
|
|
8.2.1 Feste Parameterfolge mit Standardwerten |
219 |
|
|
8.2.2 |
223 |
|
|
8.2.3 Benannte Parameter |
226 |
|
|
8.2.4 Welcher Parametertyp für welchen Zweck? |
232 |
|
|
8.2.5 Das CLI-Paket der Apache Foundation |
232 |
|
|
8.2.6 Commons-cli oder eigene benannte Parameter? |
240 |
|
|
8.3 Einlesen von Informationen |
240 |
|
|
8.4 Ausgabe von Informationen |
245 |
|
|
8.4.1 Einfache Ausgabe |
245 |
|
|
8.4.2 Überschreiben der Methode toString() |
245 |
|
|
8.4.3 Sichere Ausgabe von Zeilenumbrüchen |
246 |
|
|
8.4.4 Umleiten der Ausgabe in eine Datei |
248 |
|
|
8.5 Zusammenfassung |
249 |
|
|
9 Swing |
252 |
|
|
9.1 Was ist Swing? |
252 |
|
|
9.2 Swing oder JFC? |
253 |
|
|
9.3 Swing-Basics |
253 |
|
|
9.3.1 Komponenten |
253 |
|
|
9.3.2 Root-Container |
253 |
|
|
9.3.3 Verwendung von JFrame |
254 |
|
|
9.3.4 Basisklasse für alle folgenden Beispiele |
260 |
|
|
9.4 Mehrzweck-Container |
261 |
|
|
9.4.1 JPanel |
261 |
|
|
9.4.2 JScrollPane |
262 |
|
|
9.4.3 JSplitPane |
264 |
|
|
9.4.4 JTabbedPane |
267 |
|
|
9.4.5 JToolBar |
268 |
|
|
9.5 Komponenten |
270 |
|
|
9.5.1 JLabel |
270 |
|
|
9.5.2 JButton |
273 |
|
|
9.5.3 JCheckBox |
282 |
|
|
9.5.4 JRadioButton |
286 |
|
|
9.5.5 JComboBox |
290 |
|
|
9.5.6 JTextField |
295 |
|
|
9.5.7 JPasswordField |
303 |
|
|
9.5.8 JFormattedTextField |
304 |
|
|
9.5.9 JTextArea |
310 |
|
|
9.5.10 JEditorPane |
314 |
|
|
9.5.11 JFileChooser |
319 |
|
|
9.5.12 JSlider |
323 |
|
|
9.5.13 JProgressBar |
326 |
|
|
9.6 Menüs mit JMenu |
329 |
|
|
9.6.1 Erzeugen von Menüs |
330 |
|
|
9.6.2 Beenden einer Swing-Applikation |
333 |
|
|
9.6.3 Anzeigen anderer Menüelemente |
334 |
|
|
9.6.4 CheckBoxen in Menüs verwenden |
336 |
|
|
9.6.5 JPopupMenu |
338 |
|
|
9.7 Layout-Manager |
343 |
|
|
9.7.1 FlowLayout |
343 |
|
|
9.7.2 GridLayout |
344 |
|
|
9.7.3 BorderLayout |
344 |
|
|
9.7.4 GridBagLayout |
346 |
|
|
9.8 Standarddialoge |
350 |
|
|
9.8.1 Message-Dialog |
350 |
|
|
9.8.2 Confirm-Dialog |
352 |
|
|
9.8.3 Input-Dialog |
354 |
|
|
9.8.4 Schließverhalten von Input-Dialogen beeinflussen |
356 |
|
|
9.9 Fazit |
359 |
|
|
10 Applets |
362 |
|
|
10.1 Ein einfaches Applet |
362 |
|
|
10.1.1 Anzeigen eines Applet über den Browser |
363 |
|
|
10.1.2 Anzeige eines Applet per Applet-Viewer |
364 |
|
|
10.2 Lebenszyklus eines Applet |
365 |
|
|
10.2.1 init() |
365 |
|
|
10.2.2 start() |
366 |
|
|
10.2.3 stop() |
366 |
|
|
10.2.4 destroy() |
366 |
|
|
10.3 Elemente des Benutzer-Interface |
366 |
|
|
10.3.1 java.awt.Button |
367 |
|
|
10.3.2 java.awt.CheckBox |
368 |
|
|
10.3.3 java.awt.TextArea |
370 |
|
|
10.3.4 java.awt.TextField |
372 |
|
|
10.3.5 Menu |
374 |
|
|
10.3.6 java.awt.List |
378 |
|
|
10.3.7 java.awt.Choice |
381 |
|
|
10.3.8 Komponenten, LayoutManager, Applets ...? |
383 |
|
|
10.4 paint() und update() – Grafik mit dem AWT |
383 |
|
|
10.4.1 Grafische Elemente zeichnen |
383 |
|
|
10.4.2 Text direkt ausgeben |
386 |
|
|
10.4.3 Bilder laden |
389 |
|
|
10.5 Threading |
390 |
|
|
10.6 Was Applets dürfen und was nicht |
394 |
|
|
10.7 Interaktion mit umgebenden Elementen |
395 |
|
|
10.7.1 Übergabe von Parametern an das Applet |
395 |
|
|
10.7.2 Das |
398 |
|
|
10.7.3 Beeinflussung des Statustextes des Fensters |
399 |
|
|
10.7.4 Kommunikation mit anderen Applets in derselben Seite |
400 |
|
|
10.7.5 Redirects im Browser |
404 |
|
|
10.8 Applet – JApplet? |
406 |
|
|
10.9 Fazit |
407 |
|
|
11 Streams und Dateibehandlung |
408 |
|
|
11.1 Streams und zugrunde liegende Prinzipien |
408 |
|
|
11.1.1 Byte-Streams |
409 |
|
|
11.1.2 Character-Streams |
411 |
|
|
11.1.3 Character- oder Byte-Streams? |
413 |
|
|
11.1.4 Brückenklassen |
413 |
|
|
11.2 Input- und OutputStreams |
414 |
|
|
11.2.1 ByteArrayInputStream und ByteArrayOutputStream |
415 |
|
|
11.2.2 FileInputStream und FileOutputStream |
415 |
|
|
11.2.3 FilterInputStream und FilterOutputStream |
418 |
|
|
11.2.4 BufferedInputStream und BufferedOutputStream |
418 |
|
|
11.2.5 DataInputStream und DataOutputStream |
419 |
|
|
11.2.6 PrintStream |
424 |
|
|
11.3 Writer und Reader |
425 |
|
|
11.3.1 FileReader und FileWriter |
426 |
|
|
11.3.2 BufferedReader und BufferedWriter |
428 |
|
|
11.4 RandomAccessFile |
431 |
|
|
11.5 File |
438 |
|
|
11.5.1 Pfadbestandteile ermitteln |
439 |
|
|
11.5.2 Detaillierte Informationen über die File- Instanz |
440 |
|
|
11.5.3 Dateiaktionen |
440 |
|
|
11.5.4 Verzeichnisaktionen |
441 |
|
|
11.6 Fazit |
443 |
|
|
12 JDBC |
446 |
|
|
12.1 Das JDBC-Prinzip |
446 |
|
|
12.2 MySQL, PostGre-SQL, Cloudscape, Oracle ...? |
447 |
|
|
12.2.1 MySQL, der JDBC-Treiber und die Admin- Werkzeuge |
448 |
|
|
12.3 Verbindung herstellen |
452 |
|
|
12.3.1 Treiber laden |
452 |
|
|
12.3.2 Verbindungsparameter übergeben |
452 |
|
|
12.4 Datenbankabfragen |
453 |
|
|
12.4.1 Daten einfügen oder ändern |
454 |
|
|
12.4.2 Abrufen von Daten |
456 |
|
|
12.5 PreparedStatement |
459 |
|
|
12.5.1 Datensätze einfügen, ändern oder löschen |
460 |
|
|
12.5.2 Abrufen von Daten |
462 |
|
|
12.6 Tipps und Tricks |
463 |
|
|
12.6.1 Sichern Sie Ihre Datenbank! |
463 |
|
|
12.6.2 Verwenden Sie PreparedStatements! |
464 |
|
|
12.6.3 Geben Sie bei SELECT-Statements immer alle Spalten an! |
464 |
|
|
12.6.4 Kapseln Sie Datenbankzugriffe in Datenklassen |
465 |
|
|
12.6.5 Auslagerung der ConnectionStrings und der Klassennamen |
473 |
|
|
12.7 Hibernate und O/R-Mapping- Mechanismen verwenden |
474 |
|
|
12.7.1 Hibernate |
475 |
|
|
12.7.2 Installation von Hibernate |
476 |
|
|
12.7.3 Mappings |
476 |
|
|
12.7.4 Konfiguration |
479 |
|
|
12.7.5 Konfigurationsdatei für MySQL |
479 |
|
|
12.7.6 Arbeiten mit Hibernate |
481 |
|
|
12.7.7 HibernateUtil-Hilfsklasse |
482 |
|
|
12.7.8 Implementieren des GuestbookDAO |
483 |
|
|
12.7.9 Änderung der GuestbookDAOFactory- Klasse |
485 |
|
|
12.8 Fazit |
485 |
|
|
13 Netzwerk |
488 |
|
|
13.1 Auflösung eines Hostnamens |
488 |
|
|
13.2 Netzwerkadapter auflisten |
490 |
|
|
13.3 URL |
491 |
|
|
13.3.1 Analyse eines URL |
493 |
|
|
13.3.2 Verarbeitung des referenzierten Inhalts |
494 |
|
|
13.3.3 URLConnection |
497 |
|
|
13.4 Client/Server-Kommunikation |
498 |
|
|
13.4.1 Sockets |
498 |
|
|
13.5 E-Mails senden |
505 |
|
|
13.5.1 Was ist Java Mail? |
505 |
|
|
13.5.2 Installation von Java Mail |
506 |
|
|
13.5.3 Versenden von E-Mails |
506 |
|
|
13.6 Fazit |
510 |
|
|
J2SE Software License |
512 |
|
|
Stichwortverzeichnis |
518 |
|
|
Mehr eBooks bei www.ciando.com |
0 |
|