UID:
kobvindex_ERBEBC6452360
Format:
1 online resource (1414 pages)
Edition:
5
ISBN:
9783960888420
Series Statement:
Programmieren mit Java
Note:
Intro -- 1 Einleitung -- 1.1 Über dieses Buch -- 1.1.1 Motivation -- 1.1.2 Was leistet dieses Buch und was nicht? -- 1.1.3 Wie und was soll mithilfe des Buchs gelernt werden? -- 1.1.4 Wer sollte dieses Buch lesen? -- 1.2 Aufbau des Buchs -- 1.3 Konventionen und ausführbare Programme -- I Java-Grundlagen, Analyse und Design -- 2 Professionelle Arbeitsumgebung -- 2.1 Vorteile von IDEs am Beispiel von Eclipse -- 2.2 Projektorganisation -- 2.2.1 Projektstruktur in Eclipse -- 2.2.2 Projektstruktur für Maven und Gradle -- 2.3 Einsatz von Versionsverwaltungen -- 2.3.1 Arbeiten mit zentralen Versionsverwaltungen -- 2.3.2 Dezentrale Versionsverwaltungen -- 2.3.3 VCS und DVCS im Vergleich -- 2.4 Einsatz eines Unit-Test-Frameworks -- 2.4.1 Das JUnit-Framework -- 2.4.2 Parametrierte Tests mit JUnit 5 -- 2.4.3 Vorteile von Unit Tests -- 2.5 Debugging -- 2.5.1 Fehlersuche mit einem Debugger -- 2.5.2 Remote Debugging -- 2.6 Deployment von Java-Applikationen -- 2.6.1 Das JAR-Tool im Kurzüberblick -- 2.6.2 JAR inspizieren und ändern, Inhalt extrahieren -- 2.6.3 Metainformationen und das Manifest -- 2.6.4 Inspizieren einer JAR-Datei -- 2.7 Einsatz eines IDE-unabhängigen Build-Prozesses -- 2.7.1 Maven im Überblick -- 2.7.2 Builds mit Gradle -- 2.7.3 Vorteile von Maven und Gradle -- 2.8 Weiterführende Literatur -- 3 Objektorientiertes Design -- 3.1 OO-Grundlagen -- 3.1.1 Grundbegriffe -- 3.1.2 Beispielentwurf: Ein Zähler -- 3.1.3 Vom imperativen zum objektorientierten Entwurf -- 3.1.4 Diskussion der OO-Grundgedanken -- 3.1.5 Wissenswertes zum Objektzustand -- 3.2 Grundlegende OO-Techniken -- 3.2.1 Schnittstellen (Interfaces) -- 3.2.2 Basisklassen und abstrakte Basisklassen -- 3.2.3 Interfaces und abstrakte Basisklassen -- 3.3 Wissenswertes zu Vererbung -- 3.3.1 Probleme durch Vererbung -- 3.3.2 Delegation statt Vererbung -- 3.4 Fortgeschrittenere OO-Techniken
,
3.4.1 Read-only-Interface -- 3.4.2 Immutable-Klasse -- 3.4.3 Marker-Interface -- 3.4.4 Konstantensammlungen und Aufzählungen -- 3.4.5 Value Object (Data Transfer Object) -- 3.5 Prinzipien guten OO-Designs -- 3.5.1 Geheimnisprinzip nach Parnas -- 3.5.2 Law of Demeter -- 3.5.3 SOLID-Prinzipien -- 3.6 Formen der Varianz -- 3.6.1 Grundlagen der Varianz -- 3.6.2 Kovariante Rückgabewerte -- 3.7 Generische Typen (Generics) -- 3.7.1 Einführung -- 3.7.2 Generics und Auswirkungen der Type Erasure -- 3.8 Weiterführende Literatur -- 4 Lambdas, Methodenreferenzen und Defaultmethoden -- 4.1 Einstieg in Lambdas -- 4.1.1 Syntax von Lambdas -- 4.1.2 Functional Interfaces und SAM-Typen -- 4.1.3 Exceptions in Lambdas -- 4.2 Syntaxerweiterungen in Interfaces -- 4.2.1 Defaultmethoden -- 4.2.2 Statische Methoden in Interfaces -- 4.3 Methodenreferenzen -- 4.4 Externe vs. interne Iteration -- 4.5 Wichtige Functional Interfaces für Collections -- 4.5.1 Das Interface Predicate< -- T> -- -- 4.5.2 Das Interface UnaryOperator< -- T> -- -- 4.6 Praxiswissen: Definition von Lambdas -- 5 Java-Grundlagen -- 5.1 Die Klasse Object -- 5.1.1 Die Methode toString() -- 5.1.2 Die Methode equals() -- 5.2 Primitive Typen und Wrapper-Klassen -- 5.2.1 Grundlagen -- 5.2.2 Konvertierung von Werten -- 5.2.3 Wissenswertes zu Auto-Boxing und Auto-Unboxing -- 5.2.4 Ausgabe und Verarbeitung von Zahlen -- 5.3 Stringverarbeitung -- 5.3.1 Die Klasse String -- 5.3.2 Die Klassen StringBuffer und StringBuilder -- 5.3.3 Ausgaben mit format() und printf() -- 5.3.4 Die Methode split() und reguläre Ausdrücke -- 5.3.5 Optimierung bei Strings in JDK 9 -- 5.3.6 Neue Methoden in der Klasse String in JDK 11 -- 5.4 Varianten innerer Klassen -- 5.5 Ein- und Ausgabe (I/O) -- 5.5.1 Dateibehandlung und die Klasse File -- 5.5.2 Ein- und Ausgabestreams im Überblick
,
5.5.3 Zeichencodierungen bei der Ein- und Ausgabe -- 5.5.4 Speichern und Laden von Daten und Objekten -- 5.5.5 Dateiverarbeitung mit dem NIO -- 5.5.6 Neue Hilfsmethoden in der Klasse Files in JDK 11 -- 5.6 Fehlerbehandlung -- 5.6.1 Einstieg in die Fehlerbehandlung -- 5.6.2 Checked Exceptions und Unchecked Exceptions -- 5.6.3 Besonderheiten beim Exception Handling -- 5.6.4 Exception Handling und Ressourcenfreigabe -- 5.6.5 Assertions -- 5.7 Weitere Neuerungen in JDK 9, 10 und 11 -- 5.7.1 Erweiterung der @Deprecated-Annotation in JDK 9 -- 5.7.2 Syntaxerweiterung var in JDK 10 und 11 -- 5.7.3 Versionsverarbeitung mit JDK 9 und 10 -- 5.8 Weiterführende Literatur -- II Bausteine stabiler Java-Applikationen -- 6 Das Collections-Framework -- 6.1 Datenstrukturen und Containerklassen -- 6.1.1 Wahl einer geeigneten Datenstruktur -- 6.1.2 Arrays -- 6.1.3 Das Interface Collection -- 6.1.4 Das Interface Iterator -- 6.1.5 Listen und das Interface List -- 6.1.6 Mengen und das Interface Set -- 6.1.7 Grundlagen von hashbasierten Containern -- 6.1.8 Grundlagen automatisch sortierender Container -- 6.1.9 Die Methoden equals(), hashCode() und compareTo() im Zusammenspiel -- 6.1.10 Schlüssel-Wert-Abbildungen und das Interface Map -- 6.1.11 Erweiterungen am Beispiel der Klasse HashMap -- 6.1.12 Erweiterungen im Interface Map in JDK 8 -- 6.1.13 Collection-Factory-Methoden in JDK 9 -- 6.1.14 Unveränderliche Kopien von Collections mit Java 10 -- 6.1.15 Entscheidungshilfe zur Wahl von Datenstrukturen -- 6.2 Suchen und Sortieren -- 6.2.1 Suchen -- 6.2.2 Sortieren von Arrays und Listen -- 6.2.3 Sortieren mit Komparatoren -- 6.2.4 Erweiterungen im Interface Comparator mit JDK 8 -- 6.3 Utility-Klassen und Hilfsmethoden -- 6.3.1 Nützliche Hilfsmethoden -- 6.3.2 Dekorierer synchronized und unmodifiable -- 6.3.3 Vordefinierte Algorithmen in der Klasse Collections
,
6.4 Containerklassen: Generics und Varianz -- 6.5 Die Klasse Optional< -- T> -- -- 6.5.1 Grundlagen zur Klasse Optional -- 6.5.2 Weiterführendes Beispiel und Diskussion -- 6.5.3 Verkettete Methodenaufrufe -- 6.5.4 Erweiterungen in der Klasse Optional< -- T> -- in JDK 9 -- 6.5.5 Erweiterung in Optional< -- T> -- in JDK 10 und 11 -- 6.6 Fallstricke im Collections-Framework -- 6.6.1 Wissenswertes zu Arrays -- 6.6.2 Wissenswertes zu Stack, Queue und Deque -- 6.7 Weiterführende Literatur -- 7 Das Stream-API -- 7.1 Grundlagen zu Streams -- 7.1.1 Streams erzeugen - Create Operations -- 7.1.2 Intermediate und Terminal Operations im Überblick -- 7.1.3 Zustandslose Intermediate Operations -- 7.1.4 Zustandsbehaftete Intermediate Operations -- 7.1.5 Terminal Operations -- 7.1.6 Wissenswertes zur Parallelverarbeitung -- 7.1.7 Neuerungen im Stream-API in JDK 9 -- 7.1.8 Neuerungen im Stream-API in JDK 10 -- 7.2 Filter-Map-Reduce -- 7.2.1 Herkömmliche Realisierung -- 7.2.2 Filter-Map-Reduce mit JDK 8 -- 7.3 Praxisbeispiele -- 7.3.1 Aufbereiten von Gruppierungen und Histogrammen -- 7.3.2 Maps nach Wert sortieren -- 8 Datumsverarbeitung seit JDK 8 -- 8.1 Überblick über die neu eingeführten Typen -- 8.1.1 Neue Aufzählungen, Klassen und Interfaces -- 8.1.2 Die Aufzählungen DayOfWeek und Month -- 8.1.3 Die Klassen MonthDay, YearMonth und Year -- 8.1.4 Die Klasse Instant -- 8.1.5 Die Klasse Duration -- 8.1.6 Die Aufzählung ChronoUnit -- 8.1.7 Die Klassen LocalDate, LocalTime und LocalDateTime -- 8.1.8 Die Klasse Period -- 8.1.9 Die Klasse ZonedDateTime -- 8.1.10 Zeitzonen und die Klassen ZoneId und ZoneOffset -- 8.1.11 Die Klasse Clock -- 8.1.12 Formatierung und Parsing -- 8.2 Datumsarithmetik -- 8.2.1 Einstieg in die Datumsarithmetik -- 8.2.2 Real-World-Example: Gehaltszahltag -- 8.3 Interoperabilität mit Legacy-Code -- 9 Applikationsbausteine
,
9.1 Einsatz von Bibliotheken -- 9.2 Google Guava im Kurzüberblick -- 9.2.1 String-Aktionen -- 9.2.2 Stringkonkatenation und -extraktion -- 9.2.3 Erweiterungen für Collections -- 9.2.4 Weitere Utility-Funktionalitäten -- 9.3 Wertebereichs- und Parameterprüfungen -- 9.4 Logging-Frameworks -- 9.4.1 Apache log4j2 -- 9.4.2 Tipps und Tricks zum Einsatz von Logging mit log4j2 -- 9.5 Konfigurationsparameter und -dateien -- 9.5.1 Einlesen von Kommandozeilenparametern -- 9.5.2 Verarbeitung von Properties -- 9.5.3 Weitere Möglichkeiten zur Konfigurationsverwaltung -- 10 Multithreading-Grundlagen -- 10.1 Threads und Runnables -- 10.1.1 Definition der auszuführenden Aufgabe -- 10.1.2 Start, Ausführung und Ende von Threads -- 10.1.3 Lebenszyklus von Threads und Thread-Zustände -- 10.1.4 Unterbrechungswünsche durch Aufruf von interrupt() -- 10.2 Zusammenarbeit von Threads -- 10.2.1 Konkurrierende Datenzugriffe -- 10.2.2 Locks, Monitore und kritische Bereiche -- 10.2.3 Deadlocks und Starvation -- 10.2.4 Kritische Bereiche und das Interface Lock -- 10.3 Kommunikation von Threads -- 10.3.1 Kommunikation mit Synchronisation -- 10.3.2 Kommunikation über die Methoden wait(), notify() und notifyAll() -- 10.3.3 Abstimmung von Threads -- 10.3.4 Unerwartete IllegalMonitorStateExceptions -- 10.4 Das Java-Memory-Modell -- 10.4.1 Sichtbarkeit -- 10.4.2 Atomarität -- 10.4.3 Reorderings -- 10.5 Besonderheiten bei Threads -- 10.5.1 Verschiedene Arten von Threads -- 10.5.2 Exceptions in Threads -- 10.5.3 Sicheres Beenden von Threads -- 10.6 Weiterführende Literatur -- 11 Modern Concurrency -- 11.1 Concurrent Collections -- 11.1.1 Thread-Sicherheit und Parallelität mit »normalen« Collections -- 11.1.2 Parallelität mit den Concurrent Collections -- 11.1.3 Blockierende Warteschlangen und das Interface BlockingQueue< -- E> -- -- 11.2 Das Executor-Framework -- 11.2.1 Einführung
,
11.2.2 Definition von Aufgaben
Additional Edition:
Print version: Inden, Michael Der Weg zum Java-Profi Heidelberg : dpunkt.verlag,c2020 ISBN 9783864907074
Keywords:
Electronic books.
URL:
https://ebookcentral.proquest.com/lib/th-brandenburg/detail.action?docID=6452360
Bookmarklink