Das etwas andere Fachbuch
E-Book, Deutsch, 712 Seiten
ISBN: 978-3-8362-7274-2
Verlag: Rheinwerk Computing
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Philip Ackermann ist CTO der Cedalo AG und Autor mehrerer Fachbücher und Fachartikel über Java und JavaScript. Seine Schwerpunkte liegen in der Konzeption und Entwicklung von Node.js- und JEE-Projekten in den Bereichen Industrie 4.0 und Internet of Things.
Autoren/Hrsg.
Weitere Infos & Material
1;Vorwort;21
2;1 Hallo Schrödinger – Einführung und erstes Programm;23
2.1;Java überall;24
2.2;JRE, JDK, SE, EE, ME;24
2.3;Java installieren;25
2.4;Hallo Schrödinger;26
2.5;Kompilieren von Hand;27
2.6;Programm starten;30
2.7;Compiler und JVM unter der Lupe;31
2.8;Rätselstunde;32
2.9;Hexenstunde;33
2.10;Entwicklungsumgebungen;35
2.11;Eclipse herunterladen;35
2.12;Workspace und Workbench;36
2.13;Erstes Projekt;38
2.14;Pakete packen, aber ordentlich;41
2.15;Pakete anlegen leicht gemacht;43
2.16;Neue Klasse mit Eclipse;44
2.17;Miteinander reden;47
2.18;Streams;50
2.19;Let the game begin – das „World of Warcraft Textadventure“;52
2.20;Historie von Java;57
3;2 Alles eine Typfrage – Variablen und grundlegende Datentypen;61
3.1;Variablen und Datentypen;62
3.2;Arten von Datentypen;63
3.3;Können wir Zahlen, bitte?;64
3.4;Lesbarkeit von langen Zahlen;67
3.5;Zahlensuppe;68
3.6;Binär, oktal, dezimal und hexadezimal;69
3.7;Variablennamen;71
3.8;Gute Namenswahl – Java Code Conventions;73
3.9;Operationen;75
3.10;Dividieren und komplizieren;76
3.11;Genau rechnen mit BigDecimal;77
3.12;Ein bisschen mehr, nein, eher ein bisschen weniger;78
3.13;Rechenaufgaben;79
3.14;Konvertierung von Zahlen;80
3.15;Zeichen und Wunder;82
3.16;Ein Charakter namens Cäsar;84
3.17;Nichts als die Wahrheit;86
3.18;Vergleichsoperatoren;88
3.19;Sprich die Wahrheit;89
3.20;Wrapperklassen;91
3.21;Alles eine Typfrage;94
3.22;Es kommt auf den Charakter an;95
3.23;Wrap-up;96
4;3 Hier war ich doch schon mal! – Kontrollfluss;99
4.1;Kontrolle übernehmen;100
4.2;Wenn das Wörtchen „if“ nicht wär;100
4.3;Halb voll oder halb leer;101
4.4;Entweder oder;102
4.5;Aberglauben;103
4.6;Boolesche Operatoren;105
4.7;Hör auf, so zu klammern;105
4.8;Kurzschreibweise;106
4.9;Bedingungsoperator;107
4.10;Mehrere Fälle behandeln;107
4.11;Leere Lehre;109
4.12;Switch the String;110
4.13;Realitätsfern;111
4.14;Schleifen drehen;114
4.15;Schachtelung;117
4.16;Schleifen binden lernen;118
4.17;Primzahlen;118
4.18;King Schrödinger;122
4.19;Nochmal gaaanz langsam, bitte;125
4.20;Schleifen abbrechen;128
4.21;Labels;129
4.22;Kalender;130
4.23;Zusammenfassung – alles unter Kontrolle;134
5;4 Von Dinkelpfannekuchen und Buchstabensalat – Arbeiten mit Strings;135
5.1;Strings definieren;136
5.2;Auf einzelne Zeichen zugreifen;138
5.3;Strings zerlegen;139
5.4;Zeichen für Zeichen;142
5.5;Vergleichen von Strings;145
5.6;Teile vergleichen;145
5.7;Gleich oder nicht gleich, oder doch teilweise gleich;147
5.8;Suchen und ersetzen in Strings;149
5.9;Speiseplanhacker;151
5.10;Summertime;153
5.11;Noch was für Profis: Strings in den Pool werfen;157
5.12;Strings sind unveränderlich;161
5.13;Veränderbare Zeichenketten;162
5.14;Zeichen löschen, ersetzen und spiegeln;164
5.15;StringBuilder in Schleifen;166
5.16;Was du aus diesem Kapitel mitnehmen solltest;167
6;5 Objektiv betrachtet, eine ganz andere Klasse – Klassen, Objekte, Methoden;169
6.1;Der nächste Level der Wiederverwendung – Methoden;170
6.2;Refactoring;174
6.3;Sauberer Quelltext;178
6.4;Methodenkommentare;179
6.5;Kann ich das zurückgeben?;180
6.6;Zurück zu den Nachrichten;181
6.7;Auf dem Weg zum Java-Ninja – Klassen und Objekte;182
6.8;Kapselung;186
6.9;Setter und Getter;188
6.10;Der Fotoapparat unter der Lupe;191
6.11;Setter mit mehreren Parametern;192
6.12;Klassen vs. Objekte;194
6.13;Sichtbarkeit von Variablen und Methoden;196
6.14;Konstruktoren;198
6.15;Objekte in Strings umwandeln;202
6.16;Quelltext anhängen;203
6.17;Textuelle Beschreibung von Objekten;204
6.18;Fluent Interface;205
6.19;Nur für Profis – Zerlegen des Fotoapparats;207
6.20;Referenzdatentypen, Heap, Garbage-Collection;211
6.21;Wenn der Heap zu voll wird;213
6.22;Destruktoren …;214
6.23;Hab lieb den Heap;215
6.24;Zuschauen, wie der Heap wächst;216
6.25;Der Stack;222
6.26;Wie alles zusammenhängt;224
6.27;Die Katze war’s;226
6.28;Steap oder Hack;228
7;6 Woher hat er das bloß? – Vererbung;232
7.1;Vererbung;232
7.2;Noch weniger doppelter Code dank Vererbung;234
7.3;Der Apfel fällt nicht weit vom Stamm;236
7.4;Verhalten anpassen durch Überschreiben von Methoden;237
7.5;Überschreiben verboten;239
7.6;Blümchenvererbung;240
7.7;Ich will aber zu Opa und Oma! Was ist mit der Großelternklasse?;242
7.8;Vererbung und Konstruktoren;244
7.9;Die Konstruktorkette wieder reparieren;245
7.10;Wie war das nochmal mit den Konstruktoren?;248
7.11;Erbt der Sohn vom Vater oder der Vater vom Sohn?;249
7.12;Typumwandlungen;252
7.13;Upcasting;253
7.14;Den Typ überprüfen;254
7.15;Welche Methode hätten’s denn gerne? Methoden überladen;255
7.16;Abo-Service;256
7.17;Serviceorientiert vs. objektorientiert;258
7.18;Zurück zu den Objekten;259
7.19;Die volle Überladung;260
7.20;Deutschland sucht den Knetsuperstar;261
7.21;Zusammenfassung;263
8;7 Schnittstellen und andere leichte Verletzungen – Abstrakte Klassen und Interfaces;265
8.1;Abstrakte Klassen;266
8.2;Abstrakte Methoden;268
8.3;Digital oder analog? Hauptsache abstrakt!;270
8.4;Alles abstrakt, oder was?;278
8.5;Schnittstellen;279
8.6;Übungen zu Interfaces;284
8.7;Für die einen sind es Interfaces, …;286
8.8;Interfaces und Vererbung;287
8.9;Weniger ist manchmal mehr;289
8.10;Konstanten in Interfaces;290
8.11;Konstanten in Konstantenklassen;290
8.12;Statischer Import;291
8.13;Statische Blöcke;292
8.14;Konstanten über Enums;293
8.15;Interfaces – Wiederholung;294
8.16;Noch mehr Klassen;295
8.17;Statische Memberklassen;295
8.18;Nichtstatische Memberklassen;297
8.19;Lokale Klassen;298
8.20;Anonyme Klassen;299
8.21;Abstrakt und polymorph – alles klar, Schrödinger?;301
9;8 Hast du eigentlich einen Überblick über deine ganzen Schuhe? – Arrays, Collections & Maps;303
9.1;Ich will mehr davon – Beziehungen zu Katzen und andere Freundinnen;304
9.2;Objekte der Begierde;306
9.3;Ab in die nächste Dimension;307
9.4;Gib mir alles;308
9.5;Solche Schuhe hast du schon!;309
9.6;Alles muss man selber machen;310
9.7;Auf den Spuren der Objektgleichheit;312
9.8;Gleich ist gleich – oder doch nicht?;313
9.9;Arrays wachsen nicht mit;313
9.10;Schuhkollektionen;315
9.11;Solche Schuhe hast du immer noch!;317
9.12;Soll ich dir mal meine Schuhsammlung zeigen?;319
9.13;Der Iterator (hört sich krass an, oder?);320
9.14;Link und listig;321
9.15;Einmal heißt einmal und dann keinmal mehr;322
9.16;Hash mich, ich bin der Frühling;323
9.17;Sets für die Kripo;324
9.18;Sets für den Schuhtester;327
9.19;Der richtige Hashcode;328
9.20;Bäume und Räume;331
9.21;Größer oder kleiner?;333
9.22;Sortieren ohne Bäume;336
9.23;Sortierte Schuhe;338
9.24;Mappen raus;339
9.25;So viele Schuhe hast du schon;340
9.26;Schlangen im Keller;343
9.27;Hinten anstellen!;344
9.28;Kompakt und funktional: Lambda-Ausdrücke;345
9.29;filter(), map() und reduce();347
9.30;High Heels!!!;351
9.31;Nochmal alles ganz lambsam;353
10;9 Ausnahmsweise und um ganz sicher zu gehen – Exceptions;355
10.1;Aus Fehlern werden Ausnahmen;356
10.2;Deine erste Exception;357
10.3;Das Werfen vorbereiten;358
10.4;Fangen will gelernt sein;360
10.5;Ganz zum Schluss – der finally-Block;362
10.6;Hier werden Sie individuell behandelt;363
10.7;Vererbung von Exceptions;365
10.8;Die Ausnahme als Auskunftsobjekt – was ist eigentlich passiert?;366
10.9;Information erwünscht, Abhängigkeit unerwünscht;368
10.10;Exceptions weiterwerfen;369
10.11;Wann und wie behandeln;370
10.12;Exceptions immer weiterleiten? Nicht immer der richtige Weg;371
10.13;Muss man nicht fangen – Unchecked Exceptions;373
10.14;Defensiv programmieren gegen Runtime-Exceptions;376
10.15;Exceptions loggen;377
10.16;Lass den Türsteher mitloggen;378
10.17;Nicht mehr zu retten;380
10.18;Speicher voll;382
10.19;Automatisches Schließen von Ressourcen;383
10.20;Dateien lesen;384
10.21;Ausnahmen bestätigen die Regel;386
11;10 Ey Typ, du kummst hier nit rein! – Generics;389
11.1;Generische Typen;390
11.2;Bevor es Generics gab …;391
11.3;… und mit Generics;392
11.4;Hunde vs. Katzen;394
11.5;Katzenkorb als Unterklasse;395
11.6;Typisierte Interfaces;396
11.7;Wildcard-Typen – das Problem;397
11.8;Der nach oben beschränkte Wildcard-Typ;400
11.9;Der Haken: Schrödinger darf nicht schreiben;401
11.10;Der nach unten beschränkte Wildcard-Typ;404
11.11;Typisierte Methoden;406
11.12;Übungen zu Wildcards;407
11.13;Wiederholung;410
11.14;Kaffeesatz;413
12;11 Wilde Ströme – Eingabe und Ausgabe – Dateien, Streams und Serialisierung;415
12.1;Bossingen kommt mit Dateien;416
12.2;Willst du mehr? Probier’s binär!;417
12.3;Binärdateien schreiben – auch mit Byte-Streams;419
12.4;Megalangsam – Dateien kopieren mit normalen Streams;420
12.5;Viel schneller – Dateien kopieren mit Buffered Streams;421
12.6;Wer liest schon Bytes? Textdateien lesen mit Character-Streams;422
12.7;Textdateien schreiben mit Character-Streams;423
12.8;1:0 für den CSV – Textdateien umwandeln;424
12.9;Mit Kanonen auf Verzeichnisse schießen;427
12.10;Endlich Ordnung – Dateien und Verzeichnisse erstellen;428
12.11;Kundendaten konvertieren am Fließband;430
12.12;Gut gefiltert ist halb gewonnen – Verzeichnisse filtern;432
12.13;Auf dem richtigen Pfad: Die neue File-IO-API;433
12.14;Kundendateien konvertieren – jetzt noch einfacher;436
12.15;Objekte speichern;438
12.16;Geschachtelte Objekte speichern;441
12.17;Serialisierung und Deserialisierung beeinflussen;443
12.18;Individuelle Serialisierung mit writeObject() und readObject();444
12.19;Der Nusskopf und die Kopfnuss;446
12.20;Nochmal alles zum mitstreamen;448
13;12 Nicht den Faden verlieren – Programmierung mit Threads;449
13.1;Prozesse und Threads;450
13.2;Der erste Thread;452
13.3;Night of the living thread;453
13.4;Das war gerade noch ungerade;454
13.5;Da krieg ich Zustände;457
13.6;Threads schlafen legen;458
13.7;Helden, aufgepasst!;459
13.8;Auf andere warten;462
13.9;Synchronisierung;463
13.10;Erst die geraden Zahlen, bitte!;466
13.11;… Deadlocks!;467
13.12;Deadlocks finden und umgehen;469
13.13;Der Schlüssel zum Erfolg;471
13.14;Livelock, Starvation, Priorisierung und ein Bier;473
13.15;… Livelock;473
13.16;Prioritäten setzen;476
13.17;Warten und benachrichtigen;478
13.18;Starvation;480
13.19;Warten und schlafen;482
13.20;4000 gegen 2 oder Arbeit verteilen;483
13.21;Die Zusammenfassung, damit du nicht den Faden verlierst;487
14;13 Das kann sich doch schon sehen lassen! – Deployment, Dokumentation und Module;489
14.1;Abgepackt;490
14.2;Ich packe meine JAR-Datei …;493
14.3;Java Web Start;495
14.4;Bibliotheken einbinden in Eclipse;497
14.5;Hallo Onkel Doc – Dokumentation mit javadoc;500
14.6;Strukturiert und modularisiert;503
14.7;Modular? Na klar!;507
14.8;Module kompilieren;509
14.9;Jetzt hast du’s gepackt;511
15;14 Austauschschüler – das Datenaustauschformat XML;513
15.1;XML;514
15.2;Russische Salami;520
15.3;Musikschule mit XML;525
15.4;Ist es ein Element oder ein Attribut?;527
15.5;XML lesen;528
15.6;Der Spürhund – Simple API for XML;528
15.7;Der trainierte Spürhund oder „Don’t call me, I'll call you“ – StAX;532
15.8;Die Cursor-API;533
15.9;Die Iterator-API;533
15.10;Das Document Object Model …;535
15.11;Flower Power;538
15.12;XML schreiben;540
15.13;1, 2 oder 3? SAX, StAX oder DOM? Was nehme ich wann?;543
15.14;Viele Wege führen nach Java;545
15.15;JAXB;547
15.16;Von XML nach Java und wieder zurück;549
15.17;Power Flower;551
15.18;Die XTra, XPlizite, Xakte, XOrbitante Zusammenfassung;555
16;15 Datenspeicherung mit JDBC – Datenbanken;557
16.1;Relationale Datenbanken;558
16.2;Die erste Tabelle mit SQL;559
16.3;Eine Verbindung herstellen;563
16.4;Datensätze hinzufügen;565
16.5;Helden und Briefmarken;567
16.6;Anweisungen zusammenfassen;570
16.7;Gut vorbereitet;571
16.8;Daten auslesen;572
16.9;Was hätten’S denn gerne? Datensätze nach Kriterien auswählen;574
16.10;Daten sortiert ausgeben;576
16.11;Wer ist der Stärkste im ganzen Land?;577
16.12;Informationen aus mehreren Tabellen über Joins verknüpfen;581
16.13;Alles wieder zurück bitte – Transaktionen;582
16.14;Mapping zwischen relationalen Datenbanken und Java-Objekten;584
16.15;Roll zurück den Troll;585
16.16;Wiederholung;588
16.17;SELECT DAS_WICHTIGSTE FROM KAPITEL_15;589
17;16 Neue Tanzschritte – GUI-Programmierung mit Swing und JavaFX;591
17.1;Mit Schwung weg von der Konsole – Swing;592
17.2;Alles im Rahmen – wie du GUI-Komponenten erstellst;592
17.3;Alles in Reih und Glied – wie du GUI-Komponenten anordnen kannst;595
17.4;Alles im Raster mit dem Grid-Layout;598
17.5;Zellen verbinden mit dem Grid-Bag-Layout;600
17.6;Schuhe in der Box … oder doch besser im Grid?;604
17.7;Ordnung: gut, Verhalten: … nichts? Wie du GUI-Komponenten das Verhalten hinzufügst;607
17.8;Validierung von Nutzereingaben mit Swing;611
17.9;Schuhschiebereien;612
17.10;Bunter und mehr Action mit JavaFX;616
17.11;Auf die große Bühne – JavaFX on stage;619
17.12;Noch mehr Zucker mit CSS;624
17.13;Das Verhalten hinzufügen;626
17.14;Validierung von Nutzereingaben mit JavaFX;627
17.15;Schiebereien mit JavaFX;628
17.16;Für Profis – Verhalten hinzufügen ohne Listener;629
17.17;Schieberegler mit Verhalten;631
17.18;Die Lösung für den Hardcore-Profi – Binding kann auch rechnen;632
17.19;Das Wichtigste zur Gesellenprüfung Maler und Lackierer, Fachbereich Swing und JavaFX;635
18;17 Schrödinger goes international – Internationalisierung, Lokalisierung, Formatierung, Pattern Matching und reguläre Ausdrücke;637
18.1;Den Nutzer lokalisieren;638
18.2;Die Software internationalisieren;641
18.3;Finnische Schuhkartons;643
18.4;Speak english per favore;646
18.5;Klassen laden;646
18.6;Wein oder Bier?;649
18.7;Zahlen und Währungen formatieren;651
18.8;Datums- und Zeitangaben formatieren;652
18.9;Währungsrechner;654
18.10;Internationalisierte Textmeldungen formatieren;656
18.11;Das wurde aber auch Zeit – java.time;657
18.12;Zeitzone, Zeitlinie, Zeitpunkte und Zeitdauern;658
18.13;Ohne Zeitlinie – Datum, Zeit und Zeiträume;660
18.14;Zeitzonen und Zeitunterschiede;662
18.15;Alles nochmal auf einen Blick, so viel Zeit muss sein;663
18.16;Formatierung von Datums- und Zeitangaben;664
18.17;Formatieren über die Klasse String;665
18.18;Mit Format;667
18.19;Pattern Matching mit regulären Ausdrücken;668
18.20;Kein Anschluss unter dieser Nummer;673
18.21;Teile finden;673
18.22;Drin oder nicht drin? Keine Frage!;675
18.23;Auf einzelne Teile zugreifen über Gruppen;676
18.24;E-Mail-Adressen validieren;677
18.25;Tiivistelmä pääkohdista – das war Finnisch;679
19;18 Bist du dir da sicher? Unit-Testen und Java Web Start continued – Unit-Tests;681
19.1;Deine Klassen testen;682
19.2;Test-Frameworks;683
19.3;Ich hatte aber einen Cocktail bestellt;690
19.4;Ausnahmefälle testen;694
19.5;Gar nicht eklig;696
19.6;Java Web Start continued;698
19.7;Das wichtigste unit to know;701
20;Index;705