Schrödinger programmiert Java

Das etwas andere Fachbuch
 
 
Rheinwerk (Verlag)
  • 3. Auflage
  • |
  • erschienen am 22. November 2019
  • |
  • 712 Seiten
 
E-Book | PDF mit Wasserzeichen-DRM | Systemvoraussetzungen
E-Book | PDF ohne DRM | Systemvoraussetzungen
978-3-8362-7274-2 (ISBN)
 
»Ein neuer Weg bei der Vermittlung von Entwickler-Fachwissen!« - c't zur Schrödinger-Reihe Vom Feinsten! 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. Von einfachen Schleifen bis zur fertigen Webanwendung. Mit Schrödinger und seinen witzigen Fragen macht guter Code richtig Spaß. Ihr programmiert, um Probleme zu lösen: etwa die Frage, ob Schrödingers Freundin "solche Schuhe" nicht schon hat. Oder ob es wirklich schon wieder Dinkelpfannkuchen geben muss. Aber Achtung: Hier geht es um saubere Software-Entwicklung. ¿ Spitzen-Beispielcode, fantastisch illustriert ¿

Das alles, und noch viel mehr:

  • Installationshilfe und gründlicher Einstieg
  • Objektorientierung aus der Profi-Praxis
  • Alle neuen Entwicklungen im Blick
  • Spaß mit Collections, Interfaces und Generics
  • XML-Parser für alle Fälle
  • JavaFX-GUIs mit Stil
  • Dateien, Streams und Datenbanken fest im Griff
  • Mutithreading ohne Verstricken
  • Code, den ihr auch übermorgen noch versteht
  • Keine Angst vor regulären Ausdrücken
  • Unit Tests und Test Driven Design
  • Unmengen an Beispielcode und Übungen

Die Fachpresse zur Vorauflage: LINUX MAGAZIN: »Alles mutet deutlich lockerer, leichter, spielerischer an, als in einem klassischen Lehrbuch einer Programmiersprache. Man darf sich aber auch nicht täuschen: Am Ende muss der Leser dasselbe lernen, was auch eine herkömmliche Einführung vermitteln würde.«

weitere Ausgaben werden ermittelt
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.


An den Leser ... 2


Schrödingers Büro ... 4


Schrödingers Werkstatt ... 6


Schrödingers Wohnzimmer ... 8


Impressum ... 10


Inhaltsverzeichnis ... 12


Vorwort ... 21


1. Hallo Schrödinger -- Einführung und erstes Programm ... 23


Java überall ... 24

JRE, JDK, SE, EE, ME ... 24

Java installieren ... 25

Hallo Schrödinger ... 26

Kompilieren von Hand ... 27

Programm starten ... 30

Compiler und JVM unter der Lupe ... 31

Rätselstunde ... 32

Hexenstunde ... 33

Entwicklungsumgebungen ... 35

Eclipse herunterladen ... 35

Workspace und Workbench ... 36

Erstes Projekt ... 38

Pakete packen, aber ordentlich ... 41

Pakete anlegen leicht gemacht ... 43

Neue Klasse mit Eclipse ... 44

Miteinander reden ... 47

Streams ... 50

Let the game begin -- das „World of Warcraft Textadventure" ... 52

Historie von Java ... 57



2. Alles eine Typfrage -- Variablen und grundlegende Datentypen ... 61


Variablen und Datentypen ... 62

Arten von Datentypen ... 63

Können wir Zahlen, bitte? ... 64

Lesbarkeit von langen Zahlen ... 67

Zahlensuppe ... 68

Binär, oktal, dezimal und hexadezimal ... 69

Variablennamen ... 71

Gute Namenswahl -- Java Code Conventions ... 73

Operationen ... 75

Dividieren und komplizieren ... 76

Genau rechnen mit BigDecimal ... 77

Ein bisschen mehr, nein, eher ein bisschen weniger ... 78

Rechenaufgaben ... 79

Konvertierung von Zahlen ... 80

Zeichen und Wunder ... 82

Ein Charakter namens Cäsar ... 84

Nichts als die Wahrheit ... 86

Vergleichsoperatoren ... 88

Sprich die Wahrheit ... 89

Wrapperklassen ... 91

Alles eine Typfrage ... 94

Es kommt auf den Charakter an ... 95

Wrap-up ... 96



3. Hier war ich doch schon mal! -- Kontrollfluss ... 99


Kontrolle übernehmen ... 100

Wenn das Wörtchen „if" nicht wär ... 100

Halb voll oder halb leer ... 101

Entweder oder ... 102

Aberglauben ... 103

Boolesche Operatoren ... 105

Hör auf, so zu klammern ... 105

Kurzschreibweise ... 106

Bedingungsoperator ... 107

Mehrere Fälle behandeln ... 107

Leere Lehre ... 109

Switch the String ... 110

Realitätsfern ... 111

Schleifen drehen ... 114

Schachtelung ... 117

Schleifen binden lernen ... 118

Primzahlen ... 118

King Schrödinger ... 122

Nochmal gaaanz langsam, bitte ... 125

Schleifen abbrechen ... 128

Labels ... 129

Kalender ... 130

Zusammenfassung -- alles unter Kontrolle ... 134



4. Von Dinkelpfannekuchen und Buchstabensalat -- Arbeiten mit Strings ... 135


Strings definieren ... 136

Auf einzelne Zeichen zugreifen ... 138

Strings zerlegen ... 139

Zeichen für Zeichen ... 142

Vergleichen von Strings ... 145

Teile vergleichen ... 145

Gleich oder nicht gleich, oder doch teilweise gleich ... 147

Suchen und ersetzen in Strings ... 149

Speiseplanhacker ... 151

Summertime ... 153

Noch was für Profis: Strings in den Pool werfen ... 157

Strings sind unveränderlich ... 161

Veränderbare Zeichenketten ... 162

Zeichen löschen, ersetzen und spiegeln ... 164

StringBuilder in Schleifen ... 166

Was du aus diesem Kapitel mitnehmen solltest ... 167



5. Objektiv betrachtet, eine ganz andere Klasse -- Klassen, Objekte, Methoden ... 169


Der nächste Level der Wiederverwendung -- Methoden ... 170

Refactoring ... 174

Sauberer Quelltext ... 178

Methodenkommentare ... 179

Kann ich das zurückgeben? ... 180

Zurück zu den Nachrichten ... 181

Auf dem Weg zum Java-Ninja -- Klassen und Objekte ... 182

Kapselung ... 186

Setter und Getter ... 188

Der Fotoapparat unter der Lupe ... 191

Setter mit mehreren Parametern ... 192

Klassen vs. Objekte ... 194

Sichtbarkeit von Variablen und Methoden ... 196

Konstruktoren ... 198

Objekte in Strings umwandeln ... 202

Quelltext anhängen ... 203

Textuelle Beschreibung von Objekten ... 204

Fluent Interface ... 205

Nur für Profis -- Zerlegen des Fotoapparats ... 207

Referenzdatentypen, Heap, Garbage-Collection ... 211

Wenn der Heap zu voll wird ... 213

Destruktoren ... ... 214

Hab lieb den Heap ... 215

Zuschauen, wie der Heap wächst ... 216

Der Stack ... 222

Wie alles zusammenhängt ... 224

Die Katze war's ... 226

Steap oder Hack ... 228



6. Woher hat er das bloß? -- Vererbung ... 232


Vererbung ... 232

Noch weniger doppelter Code dank Vererbung ... 234

Der Apfel fällt nicht weit vom Stamm ... 236

Verhalten anpassen durch Überschreiben von Methoden ... 237

Überschreiben verboten ... 239

Blümchenvererbung ... 240

Ich will aber zu Opa und Oma! Was ist mit der Großelternklasse? ... 242

Vererbung und Konstruktoren ... 244

Die Konstruktorkette wieder reparieren ... 245

Wie war das nochmal mit den Konstruktoren? ... 248

Erbt der Sohn vom Vater oder der Vater vom Sohn? ... 249

Typumwandlungen ... 252

Upcasting ... 253

Den Typ überprüfen ... 254

Welche Methode hätten's denn gerne? Methoden überladen ... 255

Abo-Service ... 256

Serviceorientiert vs. objektorientiert ... 258

Zurück zu den Objekten ... 259

Die volle Überladung ... 260

Deutschland sucht den Knetsuperstar ... 261

Zusammenfassung ... 263



7. Schnittstellen und andere leichte Verletzungen -- Abstrakte Klassen und Interfaces ... 265


Abstrakte Klassen ... 266

Abstrakte Methoden ... 268

Digital oder analog? Hauptsache abstrakt! ... 270

Alles abstrakt, oder was? ... 278

Schnittstellen ... 279

Übungen zu Interfaces ... 284

Für die einen sind es Interfaces, ... ... 286

Interfaces und Vererbung ... 287

Weniger ist manchmal mehr ... 289

Konstanten in Interfaces ... 290

Konstanten in Konstantenklassen ... 290

Statischer Import ... 291

Statische Blöcke ... 292

Konstanten über Enums ... 293

Interfaces -- Wiederholung ... 294

Noch mehr Klassen ... 295

Statische Memberklassen ... 295

Nichtstatische Memberklassen ... 297

Lokale Klassen ... 298

Anonyme Klassen ... 299

Abstrakt und polymorph -- alles klar, Schrödinger? ... 301



8. Hast du eigentlich einen Überblick über deine ganzen Schuhe? -- Arrays, Collections & Maps ... 303


Ich will mehr davon -- Beziehungen zu Katzen und andere Freundinnen ... 304

Objekte der Begierde ... 306

Ab in die nächste Dimension ... 307

Gib mir alles ... 308

Solche Schuhe hast du schon! ... 309

Alles muss man selber machen ... 310

Auf den Spuren der Objektgleichheit ... 312

Gleich ist gleich -- oder doch nicht? ... 313

Arrays wachsen nicht mit ... 313

Schuhkollektionen ... 315

Solche Schuhe hast du immer noch! ... 317

Soll ich dir mal meine Schuhsammlung zeigen? ... 319

Der Iterator (hört sich krass an, oder?) ... 320

Link und listig ... 321

Einmal heißt einmal und dann keinmal mehr ... 322

Hash mich, ich bin der Frühling ... 323

Sets für die Kripo ... 324

Sets für den Schuhtester ... 327

Der richtige Hashcode ... 328

Bäume und Räume ... 331

Größer oder kleiner? ... 333

Sortieren ohne Bäume ... 336

Sortierte Schuhe ... 338

Mappen raus ... 339

So viele Schuhe hast du schon ... 340

Schlangen im Keller ... 343

Hinten anstellen! ... 344

Kompakt und funktional: Lambda-Ausdrücke ... 345

filter(), map() und reduce() ... 347

High Heels!!! ... 351

Nochmal alles ganz lambsam ... 353



9. Ausnahmsweise und um ganz sicher zu gehen -- Exceptions ... 355


Aus Fehlern werden Ausnahmen ... 356

Deine erste Exception ... 357

Das Werfen vorbereiten ... 358

Fangen will gelernt sein ... 360

Ganz zum Schluss -- der finally-Block ... 362

Hier werden Sie individuell behandelt ... 363

Vererbung von Exceptions ... 365

Die Ausnahme als Auskunftsobjekt -- was ist eigentlich passiert? ... 366

Information erwünscht, Abhängigkeit unerwünscht ... 368

Exceptions weiterwerfen ... 369

Wann und wie behandeln ... 370

Exceptions immer weiterleiten? Nicht immer der richtige Weg ... 371

Muss man nicht fangen -- Unchecked Exceptions ... 373

Defensiv programmieren gegen Runtime-Exceptions ... 376

Exceptions loggen ... 377

Lass den Türsteher mitloggen ... 378

Nicht mehr zu retten ... 380

Speicher voll ... 382

Automatisches Schließen von Ressourcen ... 383

Dateien lesen ... 384

Ausnahmen bestätigen die Regel ... 386



10. Ey Typ, du kummst hier nit rein! -- Generics ... 389


Generische Typen ... 390

Bevor es Generics gab ... ... 391

... und mit Generics ... 392

Hunde vs. Katzen ... 394

Katzenkorb als Unterklasse ... 395

Typisierte Interfaces ... 396

Wildcard-Typen -- das Problem ... 397

Der nach oben beschränkte Wildcard-Typ ... 400

Der Haken: Schrödinger darf nicht schreiben ... 401

Der nach unten beschränkte Wildcard-Typ ... 404

Typisierte Methoden ... 406

Übungen zu Wildcards ... 407

Wiederholung ... 410

Kaffeesatz ... 413



11. Wilde Ströme -- Eingabe und Ausgabe -- Dateien, Streams und Serialisierung ... 415


Bossingen kommt mit Dateien ... 416

Willst du mehr? Probier's binär! ... 417

Binärdateien schreiben -- auch mit Byte-Streams ... 419

Megalangsam -- Dateien kopieren mit normalen Streams ... 420

Viel schneller -- Dateien kopieren mit Buffered Streams ... 421

Wer liest schon Bytes? Textdateien lesen mit Character-Streams ... 422

Textdateien schreiben mit Character-Streams ... 423

1:0 für den CSV -- Textdateien umwandeln ... 424

Mit Kanonen auf Verzeichnisse schießen ... 427

Endlich Ordnung -- Dateien und Verzeichnisse erstellen ... 428

Kundendaten konvertieren am Fließband ... 430

Gut gefiltert ist halb gewonnen -- Verzeichnisse filtern ... 432

Auf dem richtigen Pfad: Die neue File-IO-API ... 433

Kundendateien konvertieren -- jetzt noch einfacher ... 436

Objekte speichern ... 438

Geschachtelte Objekte speichern ... 441

Serialisierung und Deserialisierung beeinflussen ... 443

Individuelle Serialisierung mit writeObject() und readObject() ... 444

Der Nusskopf und die Kopfnuss ... 446

Nochmal alles zum mitstreamen ... 448



12. Nicht den Faden verlieren -- Programmierung mit Threads ... 449


Prozesse und Threads ... 450

Der erste Thread ... 452

Night of the living thread ... 453

Das war gerade noch ungerade ... 454

Da krieg ich Zustände ... 457

Threads schlafen legen ... 458

Helden, aufgepasst! ... 459

Auf andere warten ... 462

Synchronisierung ... 463

Erst die geraden Zahlen, bitte! ... 466

... Deadlocks! ... 467

Deadlocks finden und umgehen ... 469

Der Schlüssel zum Erfolg ... 471

Livelock, Starvation, Priorisierung und ein Bier ... 473

... Livelock ... 473

Prioritäten setzen ... 476

Warten und benachrichtigen ... 478

Starvation ... 480

Warten und schlafen ... 482

4000 gegen 2 oder Arbeit verteilen ... 483

Die Zusammenfassung, damit du nicht den Faden verlierst ... 487



13. Das kann sich doch schon sehen lassen! -- Deployment, Dokumentation und Module ... 489


Abgepackt ... 490

Ich packe meine JAR-Datei ... ... 493

Java Web Start ... 495

Bibliotheken einbinden in Eclipse ... 497

Hallo Onkel Doc -- Dokumentation mit javadoc ... 500

Strukturiert und modularisiert ... 503

Modular? Na klar! ... 507

Module kompilieren ... 509

Jetzt hast du's gepackt ... 511



14. Austauschschüler -- das Datenaustauschformat XML ... 513


XML ... 514

Russische Salami ... 520

Musikschule mit XML ... 525

Ist es ein Element oder ein Attribut? ... 527

XML lesen ... 528

Der Spürhund -- Simple API for XML ... 528

Der trainierte Spürhund oder „Don't call me, I'll call you" -- StAX ... 532

Die Cursor-API ... 533

Die Iterator-API ... 533

Das Document Object Model ... ... 535

Flower Power ... 538

XML schreiben ... 540

1, 2 oder 3? SAX, StAX oder DOM? Was nehme ich wann? ... 543

Viele Wege führen nach Java ... 545

JAXB ... 547

Von XML nach Java und wieder zurück ... 549

Power Flower ... 551

Die XTra, XPlizite, Xakte, XOrbitante Zusammenfassung ... 555



15. Datenspeicherung mit JDBC -- Datenbanken ... 557


Relationale Datenbanken ... 558

Die erste Tabelle mit SQL ... 559

Eine Verbindung herstellen ... 563

Datensätze hinzufügen ... 565

Helden und Briefmarken ... 567

Anweisungen zusammenfassen ... 570

Gut vorbereitet ... 571

Daten auslesen ... 572

Was hätten'S denn gerne? Datensätze nach Kriterien auswählen ... 574

Daten sortiert ausgeben ... 576

Wer ist der Stärkste im ganzen Land? ... 577

Informationen aus mehreren Tabellen über Joins verknüpfen ... 581

Alles wieder zurück bitte -- Transaktionen ... 582

Mapping zwischen relationalen Datenbanken und Java-Objekten ... 584

Roll zurück den Troll ... 585

Wiederholung ... 588

SELECT DAS_WICHTIGSTE FROM KAPITEL_15 ... 589



16. Neue Tanzschritte -- GUI-Programmierung mit Swing und JavaFX ... 591


Mit Schwung weg von der Konsole -- Swing ... 592

Alles im Rahmen -- wie du GUI-Komponenten erstellst ... 592

Alles in Reih und Glied -- wie du GUI-Komponenten anordnen kannst ... 595

Alles im Raster mit dem Grid-Layout ... 598

Zellen verbinden mit dem Grid-Bag-Layout ... 600

Schuhe in der Box ... oder doch besser im Grid? ... 604

Ordnung: gut, Verhalten: ... nichts? Wie du GUI-Komponenten das Verhalten hinzufügst ... 607

Validierung von Nutzereingaben mit Swing ... 611

Schuhschiebereien ... 612

Bunter und mehr Action mit JavaFX ... 616

Auf die große Bühne -- JavaFX on stage ... 619

Noch mehr Zucker mit CSS ... 624

Das Verhalten hinzufügen ... 626

Validierung von Nutzereingaben mit JavaFX ... 627

Schiebereien mit JavaFX ... 628

Für Profis -- Verhalten hinzufügen ohne Listener ... 629

Schieberegler mit Verhalten ... 631

Die Lösung für den Hardcore-Profi -- Binding kann auch rechnen ... 632

Das Wichtigste zur Gesellenprüfung Maler und Lackierer, Fachbereich Swing und JavaFX ... 635



17. Schrödinger goes international -- Internationalisierung, Lokalisierung, Formatierung, Pattern Matching und reguläre Ausdrücke ... 637


Den Nutzer lokalisieren ... 638

Die Software internationalisieren ... 641

Finnische Schuhkartons ... 643

Speak english per favore ... 646

Klassen laden ... 646

Wein oder Bier? ... 649

Zahlen und Währungen formatieren ... 651

Datums- und Zeitangaben formatieren ... 652

Währungsrechner ... 654

Internationalisierte Textmeldungen formatieren ... 656

Das wurde aber auch Zeit -- java.time ... 657

Zeitzone, Zeitlinie, Zeitpunkte und Zeitdauern ... 658

Ohne Zeitlinie -- Datum, Zeit und Zeiträume ... 660

Zeitzonen und Zeitunterschiede ... 662

Alles nochmal auf einen Blick, so viel Zeit muss sein ... 663

Formatierung von Datums- und Zeitangaben ... 664

Formatieren über die Klasse String ... 665

Mit Format ... 667

Pattern Matching mit regulären Ausdrücken ... 668

Kein Anschluss unter dieser Nummer ... 673

Teile finden ... 673

Drin oder nicht drin? Keine Frage! ... 675

Auf einzelne Teile zugreifen über Gruppen ... 676

E-Mail-Adressen validieren ... 677

Tiivistelmä pääkohdista -- das war Finnisch ... 679



18. Bist du dir da sicher? Unit-Testen und Java Web Start continued -- Unit-Tests ... 681


Deine Klassen testen ... 682

Test-Frameworks ... 683

Ich hatte aber einen Cocktail bestellt ... 690

Ausnahmefälle testen ... 694

Gar nicht eklig ... 696

Java Web Start continued ... 698

Das wichtigste unit to know ... 701



Index ... 705

Dateiformat: PDF
Kopierschutz: Wasserzeichen-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie die kostenlose App Adobe Digital Editions oder eine andere Lese-App für E-Books (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nur bedingt: Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Wasserzeichen-DRM wird hier ein "weicher" Kopierschutz verwendet. Daher ist technisch zwar alles möglich - sogar eine unzulässige Weitergabe. Aber an sichtbaren und unsichtbaren Stellen wird der Käufer des E-Books als Wasserzeichen hinterlegt, sodass im Falle eines Missbrauchs die Spur zurückverfolgt werden kann.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Dateiformat: PDF
Kopierschutz: ohne DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Verwenden Sie zum Lesen die kostenlose Software Adobe Reader, Adobe Digital Editions oder einen anderen PDF-Viewer Ihrer Wahl (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie die kostenlose App Adobe Digital Editions oder eine andere Lese-App für E-Books (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nur bedingt: Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Ein Kopierschutz bzw. Digital Rights Management wird bei diesem E-Book nicht eingesetzt.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

44,90 €
inkl. 7% MwSt.
Download / Einzel-Lizenz
PDF mit Wasserzeichen-DRM
siehe Systemvoraussetzungen
E-Book bestellen

44,90 €
inkl. 7% MwSt.
Download / Einzel-Lizenz
PDF ohne DRM
siehe Systemvoraussetzungen
E-Book bestellen