Bloch | Effective Java | E-Book | sack.de
E-Book

E-Book, Deutsch, 410 Seiten

Reihe: Programmieren mit Java

Bloch Effective Java

Best Practices für die Java-Plattform

E-Book, Deutsch, 410 Seiten

Reihe: Programmieren mit Java

ISBN: 978-3-96088-638-9
Verlag: dpunkt
Format: PDF
Kopierschutz: 1 - PDF Watermark



Seit der Vorauflage von "Effective Java", die kurz nach dem Release von Java 6 erschienen ist, hat sich Java dramatisch verändert. Dieser preisgekrönte Klassiker wurde nun gründlich aktualisiert, um die neuesten Sprach- und Bibliotheksfunktionen vorzustellen. Erneut zeigt Java-Kenner Joshua Bloch anhand von Best Practices, wie Java moderne Programmierparadigmen unterstützt.
Wie in früheren Ausgaben besteht jedes Kapitel von "Effective Java" aus mehreren Themen, die jeweils in Form eines kurzen, eigenständigen Essays präsentiert werden. Dieses enthält jeweils spezifische Ratschläge, Einblicke in die Feinheiten der Java-Plattform und Codebeispiele. Umfassende Beschreibungen und Erklärungen für jedes Thema beleuchten, was zu tun ist, was nicht zu tun ist und warum es zu tun ist.
Die dritte Auflage behandelt Sprach- und Bibliotheksfunktionen, die in Java 7, 8 und 9 hinzugefügt wurden, einschließlich der funktionalen Programmierkonstrukte. Neue Themen sind unter anderem:

- Functional Interfaces, Lambda-Ausdrücke, Methodenreferenzen und Streams
- Default- und statische Methoden in Interfaces
- Type Inference, einschließlich des Diamond-Operators für generische Typen
- Die Annotation @SafeVarargs
- Das Try-with-Resources-Statement
- Neue Bibliotheksfunktionen wie das Optional Interface, java.time und die Convenience-Factory-Methoden für Collections
Bloch Effective Java jetzt bestellen!

Weitere Infos & Material


1;Effective Java;3
2;Impressum;4
3;Inhaltsverzeichnis;5
4;Vorbemerkung;11
5;Vorwort;13
6;Danksagung;14
7;Kapitel 1 - Einleitung;15
8;Kapitel 2 - Objekte erzeugen und auflösen;19
8.1;2.1 Thema 1: Statische Factory-Methoden als Alternative zu Konstruktoren;19
8.2;2.2 Thema 2: Erwägen Sie bei zu vielen Konstruktorparametern den Einsatz eines Builders;24
8.3;2.3 Thema 3: Erzwingen Sie die Singleton-Eigenschaft mit einem private-Konstruktor oder einem Aufzählungstyp;32
8.4;2.4 Thema 4: Erzwingen Sie die Nicht-Instanziierbarkeit mit einem private-Konstruktor;34
8.5;2.5 Thema 5: Arbeiten Sie mit Dependency Injection statt Ressourcen direkt einzubinden;35
8.6;2.6 Thema 6: Vermeiden Sie die Erzeugung unnötiger Objekte;37
8.7;2.7 Thema 7: Löschen Sie veraltete Objektreferenzen;41
8.8;2.8 Thema 8: Vermeiden Sie Finalizer und Cleaner;44
8.9;2.9 Thema 9: Verwenden Sie try-with-resources anstelle von try-finally;49
9;Kapitel 3 - Methoden, die allen Objekten gemeinsam sind;53
9.1;3.1 Thema 10: Halten Sie beim Überschreiben von equals den allgemeinen Vertrag ein;53
9.2;3.2 Thema 11: Überschreiben Sie, wenn Sie equals überschreiben, immer auch hashCode;66
9.3;3.3 Thema 12: Überschreiben Sie immer toString;71
9.4;3.4 Thema 13: Vorsicht beim Überschreiben von clone;74
9.5;3.5 Thema 14: Denken Sie darüber nach, Comparable zu implementieren;83
10;Kapitel 4 - Klassen und Schnittstellen;91
10.1;4.1 Thema 15: Minimieren Sie den Zugriff auf Klassen und Member;91
10.2;4.2 Thema 16: Verwenden Sie in öffentlichen Klassen Accessor- Methoden und keine öffentlichen Felder;96
10.3;4.3 Thema 17: Bevorzugen Sie unveränderliche Klassen;98
10.4;4.4 Thema 18: Ziehen Sie Komposition der Vererbung vor;106
10.5;4.5 Thema 19: Entwerfen und dokumentieren Sie für Vererbung oder verbieten Sie sie;112
10.6;4.6 Thema 20: Geben Sie Schnittstellen den Vorzug vor abstrakten Klassen;118
10.7;4.7 Thema 21: Entwerfen Sie Ihre Schnittstellen für die Nachwelt;123
10.8;4.8 Thema 22: Verwenden Sie Schnittstellen nur zum Definieren von Typen;126
10.9;4.9 Thema 23: Arbeiten Sie mit Klassenhierarchien statt mit Tag-Klassen;128
10.10;4.10 Thema 24: Ziehen Sie statische Member-Klassen den nicht-statischen vor;131
10.11;4.11 Thema 25: Beschränken Sie Quelltextdateien auf eine einzige Toplevel-Klasse;135
11;Kapitel 5 - Java Generics;137
11.1;5.1 Thema 26: Hände weg von Rohtypen;137
11.2;5.2 Thema 27: Eliminieren Sie unchecked-Warnungen;143
11.3;5.3 Thema 28: Verwenden Sie Listen statt Arrays;145
11.4;5.4 Thema 29: Bevorzugen Sie generische Typen;150
11.5;5.5 Thema 30: Bevorzugen Sie generische Methoden;155
11.6;5.6 Thema 31: Eingeschränkte Wildcard-Typen machen Ihre APIs flexibler;159
11.7;5.7 Thema 32: Vorsicht beim Kombinieren von Java Generics mit varargs-Methoden;166
11.8;5.8 Thema 33: Nutzen Sie typsichere heterogene Container;171
12;Kapitel 6 - Aufzählungen und Annotationen;177
12.1;6.1 Thema 34: Verwenden Sie Aufzählungen statt int- Konstanten;177
12.2;6.2 Thema 35: Verwenden Sie Instanzfelder statt Ordinalzahlen;188
12.3;6.3 Thema 36: Verwenden Sie EnumSet statt Bitfelder;189
12.4;6.4 Thema 37: Verwenden Sie EnumMap statt Ordinalzahlindizierung;191
12.5;6.5 Thema 38: Emulieren Sie erweiterbare Enums mit Schnittstellen;196
12.6;6.6 Thema 39: Ziehen Sie die Annotationen den Namensmustern vor;200
12.7;6.7 Thema 40: Verwenden Sie konsequent die Annotation Override;208
12.8;6.8 Thema 41: Definieren Sie Typen mit Markierungsschnittstellen;211
13;Kapitel 7 - Lambdas und Streams;215
13.1;7.1 Thema 42: Lambdas sind oft besser als anonyme Klassen;215
13.2;7.2 Thema 43: Denken Sie an Methodenreferenzen als Alternative zu Lambdas;219
13.3;7.3 Thema 44: Verwenden Sie nach Möglichkeit die funktionalen Schnittstellen aus dem Standard;221
13.4;7.4 Thema 45: Setzen Sie Streams mit Bedacht ein;226
13.5;7.5 Thema 46: Bevorzugen Sie in Streams Funktionen ohne Nebeneffekte;234
13.6;7.6 Thema 47: Verwenden Sie als Rückgabewert eher Collection als Stream;240
13.7;7.7 Thema 48: Seien Sie vorsichtig, wenn Sie Streams parallelisieren;246
14;Kapitel 8 - Methoden;251
14.1;8.1 Thema 49: Prüfen Sie Parameter auf Gültigkeit;251
14.2;8.2 Thema 50: Erstellen Sie bei Bedarf defensive Kopien;254
14.3;8.3 Thema 51: Entwerfen Sie Methodensignaturen sorgfältig;259
14.4;8.4 Thema 52: Verwenden Sie Überladung mit Bedacht;261
14.5;8.5 Thema 53: Verwenden Sie varargs mit Bedacht;268
14.6;8.6 Thema 54: Geben Sie nicht null, sondern leere Sammlungen oder Arrays zurück;270
14.7;8.7 Thema 55: Verwenden Sie den Rückgabetyp Optional mit Bedacht;272
14.8;8.8 Thema 56: Schreiben Sie Doc-Kommentare für alle offengelegten API-Elemente;277
15;Kapitel 9 - Allgemeine Programmierung;285
15.1;9.1 Thema 57: Minimieren Sie den Gültigkeitsbereich lokaler Variablen;285
15.2;9.2 Thema 58: Ziehen Sie for-each-Schleifen den traditionellen for-Schleifen vor;288
15.3;9.3 Thema 59: Machen Sie sich mit den Bibliotheken vertraut und nutzen Sie sie;291
15.4;9.4 Thema 60: Vermeiden Sie float und double, wenn genaue Antworten benötigt werden;294
15.5;9.5 Thema 61: Ziehen Sie die elementaren Datentypen den Wrapper-Typen vor;297
15.6;9.6 Thema 62: Vermeiden Sie Strings, wenn andere Typen besser geeignet sind;300
15.7;9.7 Thema 63: Denken Sie an die Leistungseinbußen bei der String-Verkettung;303
15.8;9.8 Thema 64: Referenzieren Sie Objekte über ihre Schnittstellen;304
15.9;9.9 Thema 65: Ziehen Sie Schnittstellen der Java Reflection vor;306
15.10;9.10 Thema 66: Vorsicht bei der Arbeit mit nativen Methoden;309
15.11;9.11 Thema 67: Optimieren Sie mit Bedacht;310
15.12;9.12 Thema 68: Halten Sie sich an die allgemein anerkannten Namenskonventionen;314
16;Kapitel 10 - Ausnahmen;319
16.1;10.1 Thema 69: Verwenden Sie Ausnahmen nur für Ausnahmebedingungen;319
16.2;10.2 Thema 70: Verwenden Sie geprüfte Ausnahmen für behebbare Situationen und Laufzeitausnahmen für Programmierfehler;322
16.3;10.3 Thema 71: Vermeiden Sie den unnötigen Einsatz von geprüften Ausnahmen;324
16.4;10.4 Thema 72: Ziehen Sie Standardausnahmen vor;326
16.5;10.5 Thema 73: Werfen Sie Ausnahmen passend zur Abstraktion;328
16.6;10.6 Thema 74: Dokumentieren Sie alle Ausnahmen, die jede Methode auslöst;331
16.7;10.7 Thema 75: Geben Sie in Detailnachrichten Fehlerinformationen an;332
16.8;10.8 Thema 76: Streben Sie nach Fehleratomizität;334
16.9;10.9 Thema 77: Ignorieren Sie Ausnahmen nicht;336
17;Kapitel 11 - Nebenläufigkeit;339
17.1;11.1 Thema 78: Synchronisieren Sie den Zugriff auf gemeinsam genutzte, veränderliche Daten;339
17.2;11.2 Thema 79: Vermeiden Sie übermäßige Synchronisation;344
17.3;11.3 Thema 80: Ziehen Sie Exekutoren, Aufgaben und Streams den Threads vor;351
17.4;11.4 Thema 81: Ziehen Sie die Nebenläufigkeitsdienste den Methoden wait und notify vor;353
17.5;11.5 Thema 82: Dokumentieren Sie die Thread-Sicherheit;358
17.6;11.6 Thema 83: Verwenden Sie die späte Initialisierung mit Bedacht;361
17.7;11.7 Thema 84: Verlassen Sie sich nicht auf den Thread-Planer;365
18;Kapitel 12 - Serialisierung;367
18.1;12.1 Thema 85: Verwenden Sie statt der Java-Serialisierung besser deren Alternativen;367
18.2;12.2 Thema 86: Implementieren Sie Serializable mit großer Vorsicht;371
18.3;12.3 Thema 87: Verwenden Sie möglichst eine eigene serialisierte Form;375
18.4;12.4 Thema 88: Implementieren Sie readObject defensiv;381
18.5;12.5 Thema 89: Ziehen Sie zur Instanzenkontrolle die Aufzählungstypen der Methode readResolve vor;387
18.6;12.6 Thema 90: Verwenden Sie möglichst Serialisierungs-Proxys anstelle von serialisierten Instanzen;391
19;Index;395
20;Literatur;407


Joshua Bloch ist Professor an der Carnegie Mellon University. Er war früher Chief Java Architect bei Google, ein Distinguished Engineer bei Sun Microsystems sowie Senior System Designer bei Transarc. Er leitete das Design und die Implementierung zahlreicher Java- Plattformfunktionen, einschließlich der JDK-5.0-Spracherweiterungen und des Java-Collections-Frameworks. Er hat einen Ph.D. in Informatik von der Carnegie Mellon University und einen B.S. in Informatik von der Columbia University.


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.