Ackermann | Schrödinger programmiert Java | E-Book | sack.de
E-Book

E-Book, Deutsch, 712 Seiten

Ackermann Schrödinger programmiert Java

Das etwas andere Fachbuch

E-Book, Deutsch, 712 Seiten

ISBN: 978-3-8362-7274-2
Verlag: Rheinwerk Computing
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)



Die Java-Einführung, die Dir den vollen Durchblick verschafft. Schreibe von Anfang an auf Profi-Art, objektorientiert, mit Interfaces, Generics und auf dem neuesten Stand. Mit Schrödinger und seinen witzigen Fragen macht guter Code richtig Spaß. Von einfachen Schleifen bis zur fertigen Anwendung löst ihr Probleme wie die Frage, ob Schrödingers Freundin »solche Schuhe« nicht schon hat. Oder ob es wirklich schon wieder Dinkelpfannkuchen geben muss. Spitzen-Beispielcode, fantastisch illustriert. Für Einsteiger, Umsteiger und Fans.Das alles, und noch viel mehr:Installationshilfe und gründlicher EinstiegObjektorientierung aus der Profi-PraxisAlle neuen Entwicklungen im BlickSpaß mit Collections, Interfaces und GenericsXML-Parser für alle Fälle JavaFX-GUIs mit StilDateien, Streams und Datenbanken fest im GriffMutithreading ohne VerstrickenCode, den ihr auch übermorgen noch verstehtKeine Angst vor regulären AusdrückenUnit Tests und Test Driven DesignUnmengen an Beispielcode und Übungen

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.
Ackermann Schrödinger programmiert Java jetzt bestellen!

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


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.