Book description
Diese umfassende Einführung in die professionelle Java-Programmierung vermittelt Ihnen das notwendige Wissen, um stabile und erweiterbare Softwaresysteme auf Java-SE-Basis zu bauen. Praxisnahe Beispiele helfen dabei, das Gelernte rasch umzusetzen. Die Neuauflage wurde durchgehend überarbeitet, aktualisiert und erweitert. Natürlich darf das aktuelle Java 8 nicht fehlen.
Table of contents
- Cover
- Titel
- Impressum
- Vorwort zur 3. Auflage
- 1 Einleitung
-
I Java-Grundlagen, Analyse und Design
- 2 Professionelle Arbeitsumgebung
- 3 Objektorientiertes Design
- 4 Java-Grundlagen
-
II Bausteine stabiler Java-Applikationen
-
5 Das Collections-Framework
-
5.1 Datenstrukturen und Containerklasse
- 5.1.1 Wahl einer geeigneten Datenstruktur
- 5.1.2 Arrays
- 5.1.3 Das Interface Collection
- 5.1.4 Das Interface Iterator
- 5.1.5 Listen und das Interface List
- 5.1.6 Mengen und das Interface Set
- 5.1.7 Grundlagen von hashbasierten Containern
- 5.1.8 Grundlagen automatisch sortierender Container
- 5.1.9 Die Methoden equals(), hashCode() und compareTo() im Zusammenspiel
- 5.1.10 Schlüssel-Wert-Abbildungen und das Interface Map
- 5.1.11 Erweiterungen am Beispiel der Klasse HashMap
- 5.1.12 Entscheidungshilfe zur Wahl von Datenstrukturen
- 5.2 Suchen, Sortieren und Filtern
- 5.3 Utility-Klassen und Hilfsmethoden
- 5.4 Containerklassen: Generics und Varianz
- 5.5 Fallstricke im Collections-Framework
- 5.6 Weiterführende Literatur
-
5.1 Datenstrukturen und Containerklasse
- 6 Applikationsbausteine
- 7 Multithreading
- 8 Fortgeschrittene Java-Themen
- 9 Programmierung grafischer Benutzeroberflächen mit Swing
-
10 Basiswissen Internationalisierung
-
10.1 Internationalisierung im Überblick
- 10.1.1 Grundlagen und Normen
- 10.1.2 Die Klasse Locale
- 10.1.3 Die Klasse PropertyResourceBundle
- 10.1.4 Formatierte Ein- und Ausgabe
- 10.1.5 Zahlen und die Klasse NumberFormat
- 10.1.6 Datumswerte und die Klasse DateFormat
- 10.1.7 Textmeldungen und die Klasse MessageFormat
- 10.1.8 Stringvergleiche mit der Klasse Collator
- 10.2 Programmbausteine zur Internationalisierung
-
10.1 Internationalisierung im Überblick
-
5 Das Collections-Framework
-
III Die Neuerungen in Java 8
- 11 Lambda-Ausdrücke
- 12 Bulk Operations on Collections
-
13 JSR-310: Date And Time API
- 13.1 Datumsverarbeitung vor JSR-310
-
13.2 Überblick über die neu eingeführten Klassen
- 13.2.1 Die Klasse Instant
- 13.2.2 Die Aufzählung ChronoUnit
- 13.2.3 Die Klasse Duration
- 13.2.4 Die Klassen LocalDate, LocalTime und LocalDateTime
- 13.2.5 Die Aufzählungen DayOfWeek und Month
- 13.2.6 Die Klassen YearMonth, MonthDay und Year
- 13.2.7 Die Klasse Period
- 13.2.8 Die Klasse Clock
- 13.2.9 Die Klasse ZonedDateTime
- 13.2.10 Beispiel: Berechnung einer Zeitdifferenz
- 13.2.11 Interoperabilität mit Legacy-Code
- 13.3 Fazit
- 14 Einstieg JavaFX 8
-
15 Weitere Änderungen in JDK 8
- 15.1 Erweiterungen im Interface Comparator<T>
- 15.2 Die Klasse Optional<T>
- 15.3 Parallele Operationen auf Arrays
- 15.4 Erweiterungen im Interface Map<K,V>
- 15.5 Erweiterungen im NIO und der Klasse Files
- 15.6 Erweiterungen im Bereich Concurrency
- 15.7 »Nashorn« – die neue JavaScript-Engine
- 15.8 Keine Permanent Generation mehr
- 15.9 Erweiterungen im Bereich Reflection
- 15.10 Base64-Codierungen
- 15.11 Änderungen bei Annotations
-
IV Fallstricke und Lösungen im Praxisalltag
-
16 Bad Smells
-
16.1 Programmdesign
- 16.1.1 Bad Smell: Verwenden von Magic Numbers
- 16.1.2 Bad Smell: Konstanten in Interfaces definieren
- 16.1.3 Bad Smell: Zusammengehörende Konstanten nicht als Typ definiert
- 16.1.4 Bad Smell: Programmcode im Logging-Code
- 16.1.5 Bad Smell: Dominanter Logging-Code
- 16.1.6 Bad Smell: Unvollständige Betrachtung aller Alternativen
- 16.1.7 Bad Smell: Unvollständige Änderungen nach Copy-Paste
- 16.1.8 Bad Smell: Casts auf unbekannte Subtypen
- 16.1.9 Bad Smell: Pre-/Post-Increment in komplexeren Statements
- 16.1.10 Bad Smell: Keine Klammern um Blöcke
- 16.1.11 Bad Smell: Mehrere aufeinanderfolgende Parameter gleichen Typs
- 16.1.12 Bad Smell: Grundloser Einsatz von Reflection
- 16.1.13 Bad Smell: System.exit() mitten im Programm
- 16.1.14 Bad Smell: Variablendeklaration nicht im kleinstmöglichen Sichtbarkeitsbereich
-
16.2 Klassendesign
- 16.2.1 Bad Smell: Unnötigerweise veränderliche Attribute
- 16.2.2 Bad Smell: Herausgabe von this im Konstruktor
- 16.2.3 Bad Smell: Aufruf abstrakter Methoden im Konstruktor
- 16.2.4 Bad Smell: Referenzierung von Subklassen in Basisklassen
- 16.2.5 Bad Smell: Mix abstrakter und konkreter Basisklassen
- 16.2.6 Bad Smell: Öffentlicher Defaultkonstruktor lediglich zum Zugriff auf Hilfsmethoden
-
16.3 Fehlerbehandlung und Exception Handling
- 16.3.1 Bad Smell: Unbehandelte Exception
- 16.3.2 Bad Smell: Unpassender Exception-Typ
- 16.3.3 Bad Smell: Exceptions zur Steuerung des Kontrollflusses
- 16.3.4 Bad Smell: Fangen der allgemeinsten Exception
- 16.3.5 Bad Smell: Rückgabe von null statt Exception im Fehlerfall
- 16.3.6 Bad Smell: Unbedachte Rückgabe von null
- 16.3.7 Bad Smell: Sonderbehandlung von Randfällen
- 16.3.8 Bad Smell: Keine Gültigkeitsprüfung von Eingabeparametern
- 16.3.9 Bad Smell: Fehlerhafte Fehlerbehandlung
- 16.3.10 Bad Smell: I/O ohne finally
- 16.3.11 Bad Smell: Resource Leaks durch Exceptions im Konstruktor
- 16.4 Häufige Fallstricke
- 16.5 Weiterführende Literatur
-
16.1 Programmdesign
-
17 Refactorings
- 17.1 Refactorings am Beispiel
- 17.2 Das Standardvorgehen
- 17.3 Kombination von Basis-Refactorings
-
17.4 Der Refactoring-Katalog
- 17.4.1 Reduziere die Sichtbarkeit von Attributen
- 17.4.2 Minimiere veränderliche Attribute
- 17.4.3 Reduziere die Sichtbarkeit von Methoden
- 17.4.4 Ersetze Mutator- durch Business-Methode
- 17.4.5 Minimiere Zustandsänderungen
- 17.4.6 Führe ein Interface ein
- 17.4.7 Spalte ein Interface auf
- 17.4.8 Führe ein Read-only-Interface ein
- 17.4.9 Führe ein Read-Write-Interface ein
- 17.4.10 Lagere Funktionalität in Hilfsmethoden aus
- 17.4.11 Trenne Informationsbeschaffung und -verarbeitung
- 17.4.12 Wandle Konstantensammlung in enum um
- 17.4.13 Entferne Exceptions zur Steuerung des Kontrollflusses
- 17.4.14 Wandle in Utility-Klasse mit statischen Hilfsmethoden um
- 17.5 Defensives Programmieren
- 17.6 Weiterführende Literatur
- 18 Entwurfsmuster
-
16 Bad Smells
-
V Qualitätssicherungsmaßnahmen
- 19 Programmierstil und Coding Conventions
-
20 Unit Tests
- 20.1 Testen im Überblick
- 20.2 Wissenswertes zu Testfällen
- 20.3 Motivation für Unit Tests aus der Praxis
- 20.4 Fortgeschrittene Unit-Test-Techniken
- 20.5 Unit Tests mit Threads und Timing
- 20.6 Test Smells
- 20.7 JUnit Rules und parametrierte Tests
- 20.8 Nützliche Tools für Unit Tests
- 20.9 Schlussgedanken
- 20.10 Weiterführende Literatur
- 21 Codereviews
- 22 Optimierungen
- VI Anhang
- Index
- Fußnoten
Product information
- Title: Der Weg zum Java-Profi
- Author(s):
- Release date: March 2015
- Publisher(s): dpunkt
- ISBN: 97833864902031
You might also like
book
Der Weg zum Python-Profi
Dieses Buch richtet sich an Programmierer, die bereits Kenntnisse der Python-Programmierung besitzen, diese aber ausbauen wollen.Der …
book
Der Weg zum Java-Profi, 4th Edition
Diese umfassende Einführung in die professionelle Java-Programmierung vermittelt Ihnen das notwendige Wissen, um stabile und erweiterbare …
book
Der Weg zum Java-Profi, 5th Edition
Dieses Buch bietet eine umfassende Einführung in die professionelle Java-Entwicklung und vermittelt Ihnen das notwendige Wissen, …
book
Der Java-Profi: Persistenzlösungen und REST-Services
• Erweiterung des Java-Profis für Datenbankprogrammierung• Erfolgsautor Michael Inden• Professionelle Entwicklung von Datenbankanwendungen