Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Heidelberg
dpunkt.verlag
2018
|
Ausgabe: | 4., überarbeitete und aktualisierte Auflage |
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV044457192 | ||
003 | DE-604 | ||
005 | 20201102 | ||
007 | t| | ||
008 | 170822s2018 gw a||| |||| 00||| ger d | ||
015 | |a 17,N32 |2 dnb | ||
015 | |a 17,A46 |2 dnb | ||
016 | 7 | |a 1137524960 |2 DE-101 | |
020 | |a 9783864904837 |c Festeinband : EUR 49.90 (DE), circa EUR 51.30 (AT) |9 978-3-86490-483-7 | ||
020 | |a 3864904838 |9 3-86490-483-8 | ||
024 | 3 | |a 9783864904837 | |
035 | |a (OCoLC)1000295446 | ||
035 | |a (DE-599)DNB1137524960 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-BW | ||
049 | |a DE-91G |a DE-526 |a DE-1050 |a DE-523 |a DE-706 |a DE-83 |a DE-19 |a DE-29T |a DE-860 |a DE-859 |a DE-1043 |a DE-858 |a DE-1102 |a DE-573 |a DE-355 |a DE-20 |a DE-M347 |a DE-473 |a DE-703 |a DE-M490 |a DE-B768 |a DE-92 | ||
082 | 0 | |a 005.133 |2 22/ger | |
082 | 0 | |a 004 |2 23 | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a 004 |2 sdnb | ||
084 | |a DAT 362 |2 stub | ||
100 | 1 | |a Inden, Michael |d 1971- |e Verfasser |0 (DE-588)143426753 |4 aut | |
245 | 1 | 0 | |a Der Weg zum Java-Profi |b Konzepte und Techniken für die professionelle Java-Entwicklung |c Michael Inden |
250 | |a 4., überarbeitete und aktualisierte Auflage | ||
264 | 1 | |a Heidelberg |b dpunkt.verlag |c 2018 | |
300 | |a xxvi, 1389 Seiten |b Illustrationen, Diagramme | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Auf dem Cover: Aktuell zu Java 9 | ||
650 | 0 | 7 | |a Java Standard Edition 6 |0 (DE-588)7554591-3 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Java Standard Edition 8 |0 (DE-588)1049861094 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Java Standard Edition 9 |0 (DE-588)113696553X |2 gnd |9 rswk-swf |
653 | |a Informatikstudenten - Java-Programmierer - Entwickler | ||
653 | |a Java SE | ||
653 | |a Softwareentwicklung | ||
689 | 0 | 0 | |a Java Standard Edition 9 |0 (DE-588)113696553X |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Java Standard Edition 6 |0 (DE-588)7554591-3 |D s |
689 | 1 | |8 1\p |5 DE-604 | |
689 | 2 | 0 | |a Java Standard Edition 8 |0 (DE-588)1049861094 |D s |
689 | 2 | |8 2\p |5 DE-604 | |
710 | 2 | |a Dpunkt.Verlag (Heidelberg) |0 (DE-588)6085529-0 |4 pbl | |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, ePDF |z 978-3-96088-356-2 |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, Mobi |z 978-3-96088-358-6 |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, ePub |z 978-3-96088-357-9 |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=8a0f325843eb47a682975e8c295fce45&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m DNB Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029857967&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
883 | 1 | |8 1\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk | |
883 | 1 | |8 2\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk | |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-029857967 |
Datensatz im Suchindex
DE-BY-TUM_call_number | 0102 DAT 362f 2012 A 2928(4) |
---|---|
DE-BY-TUM_katkey | 2279622 |
DE-BY-TUM_location | 01 |
DE-BY-TUM_media_number | 040008164932 |
_version_ | 1820892410772717568 |
adam_text | INHALTSUEBERSICHT
1
EINLEITUNG................................................................................................................1
I JAVA-GRUNDLAGEN, ANALYSE UND DESIGN 11
2 PROFESSIONELLE ARBEITSUMGEBUNG
......................................................................
13
3 OBJEKTORIENTIERTES
DESIGN...................................................................................85
4
JAVA-GRUNDLAGEN...............................................................................................199
5 LAMBDAS, METHODENREFERENZEN UND DEFAULTMETHODEN
................................
303
II BAUSTEINE STABILER JAVA-APPLIKATIONEN 323
6 DAS
COLLECTIONS-FRAMEWORK...............................................................................325
7 BULK OPERATIONS ON COLLECTIONS
.......................................................................
439
8
APPLIKATIONSBAUSTEINE......................................................................................479
9
MULTITHREADING..................................................................................................
539
10 FORTGESCHRITTENE JAVA-THEMEN
.......................................................................
621
11 DATUMSVERARBEITUNG SEIT JDK 8
........................................................................
687
12 GUELS MIT
JAVAFX..................................................................................................
711
13 BASISWISSEN INTERNATIONALISIERUNG
779
III NEUERUNGEN IN JAVA 9 821
14 ERGAENZUNGEN IN JAVA 9
........................................................................................
823
15 MODULARISIERUNG MIT PROJECT
JIGSAW.................................................................
853
IV FALLSTRICKE UND LOESUNGEN IM PRAXISALLTAG 907
16 BAD
SMELLS...........................................................................................................
909
17
REFACTORINGS.........................................................................................................985
18 ENTWURFSMUSTER
..............................................................................................
1055
V QUALITAETSSICHERUNGSMASSNAHMEN 1131
19 PROGRAMMIERSTIL UND CODING CONVENTIONS
....................................................
1133
20 UNIT
TESTS...........................................................................................................1175
21
CODEREVIEWS.....................................................................................................
1275
22
OPTIMIERUNGEN................................................................................................
1283
23
SCHLUSSGEDANKEN............................................................................................
1355
VI ANHANG 1357
A GRUNDLAGEN ZUR JAVA VIRTUAL
MACHINE.............................................................
1359
LITERATURVERZEICHNIS.........................................................................................1363
INDEX
1367
INHALTSVERZEICHNIS
1
EINLEITUNG.........................................................................................
1
1.1 UEBER DIESES B UCH
............................................................................
1
1.1.1
MOTIVATION...........................................................................
1
1.1.2 WAS LEISTET DIESES BUCH UND WAS NICHT?
...........................
2
1.1.3 WIE UND WAS SOLL MITHILFE DES BUCHS GELERNT WERDEN?
__
2
1.1.4 WER SOLLTE DIESES BUCH
LESEN?........................................... 4
1.2 AUFBAU DES
BUCHS..............................................................................
4
1.3 KONVENTIONEN UND AUSFUEHRBARE
PROGRAMME...................................... 6
1 JAVA-GRUNDLAGEN, ANALYSE UND DESIGN 11
2 PROFESSIONELLE ARBEITSUMGEBUNG
.................................................
13
2.1 VORTEILE VON IDES AM BEISPIEL VON ECLIPSE
......................................
14
2.2
PROJEKTORGANISATION...........................................................................
16
2.2.1 PROJEKTSTRUKTUR IN
ECLIPSE................................................... 16
2.2.2 PROJEKTSTRUKTUR FUER MAVEN UND G RADLE
...............................
18
2.3 EINSATZ VON
VERSIONSVERWALTUNGEN...................................................
20
2.3.1 ARBEITEN MIT ZENTRALEN VERSIONSVERWALTUNGEN
..................
23
2.3.2 DEZENTRALE VERSIONSVERWALTUNGEN
....................................
28
2.3.3 VCS UND DVCS IM VERGLEICH
............................................ 34
2.4 EINSATZ EINES UNIT-TEST-FRAMEWORKS
...............................................
37
2.4.1 DAS JUNIT-FRAMEWORK
........................................................
37
2.4.2 VORTEILE VON UNIT TESTS
......................................................
42
2.5
DEBUGGING.......................................................................................
43
2.5.1 FEHLERSUCHE MIT EINEM DEBUGGER
....................................
45
2.5.2 REMOTE
DEBUGGING............................................................ 47
2.6 DEPLOYMENT VON JAVA-APPLIKATIONEN
...............................................
52
2.6.1 DAS JAR-TOOL IM KURZUEBERBLICK
........................................
54
2.6.2 JAR INSPIZIEREN UND AENDERN, INHALT EXTRAHIEREN
................
55
2.6.3 METAINFORMATIONEN UND DAS
MANIFEST................................. 56
2.6.4 INSPIZIEREN EINER JAR-DATEI
...............................................
59
2.7 EINSATZ EINES IDE-UNABHAENGIGEN
BUILD-PROZESSES.......................... 61
2.7.1 MAVEN IM UEBERBLICK
..........................................................
64
2.7.2 BUILDS MIT
GRADLE................................................................
69
2.7.3 VORTEILE VON MAVEN UND GRADLE
..........................................
82
2.8 WEITERFUEHRENDE
LITERATUR..................................................................
83
3 OBJEKTORIENTIERTES DESIGN
............................................................
85
3.1
OO-GRUNDLAGEN................................................................................
86
3.1.1 GRUNDBEGRIFFE
.....................................................................
86
3.1.2 BEISPIELENTWURF: EIN ZAEHLER
...............................................
98
3.1.3 VOM IMPERATIVEN ZUM OBJEKTORIENTIERTEN E NTW URF
.............
106
3.1.4 DISKUSSION DER OO-GRUNDGEDANKEN.................................
111
3.1.5 WISSENSWERTES ZUM
OBJEKTZUSTAND.................................... 114
3.2 GRUNDLEGENDE OO-TECHNIKEN
..........................................................
123
3.2.1 SCHNITTSTELLEN (INTERFACES)
.................................................
123
3.2.2 BASISKLASSEN UND ABSTRAKTE BASISKLASSEN
........................
128
3.2.3 INTERFACES UND ABSTRAKTE BASISKLASSEN
.............................
130
3.3 WISSENSWERTES ZU VERERBUNG
..........................................................
132
3.3.1 PROBLEME DURCH VERERBUNG
...............................................
132
3.3.2 DELEGATION STATT VERERBUNG
...............................................
138
3.4 FORTGESCHRITTENERE OO-TECHNIKEN
...................................................
142
3.4.1 READ-ONLY-LNTERFACE
.
.
........................................................ 142
3.4.2
IMMUTABLE-KLASSE..............................................................
148
3.4.3
MARKER-INTERFACE................................................................
153
3.4.4 KONSTANTENSAMMLUNGEN UND AUFZAEHLUNGEN...................... 154
3.4.5 VALUE OBJECT (DATA TRANSFER OBJECT)
................................. 160
3.5 PRINZIPIEN GUTEN
OO-DESIGNS...................................................... 162
3.5.1 GEHEIMNISPRINZIP NACH
PARNAS.......................................... 163
3.5.2 LAW OF
DEMETER..................................................................
163
3.5.3 SOLID-PRINZIPIEN
.............................................................. 166
3.6 FORMEN DER
VARIANZ.........................................................................
179
3.6.1 GRUNDLAGEN DER
VARIANZ..................................................... 179
3.6.2 KOVARIANTE
RUECKGABEWERTE............................................... 183
3.7 GENERISCHE TYPEN
(GENERICS).......................................................... 185
3.7.1
EINFUEHRUNG.........................................................................
185
3.7.2 GENERICS UND AUSWIRKUNGEN DER TYPE ERASURE
................
190
3.8 WEITERFUEHRENDE
LITERATUR..................................................................
198
4
JAVA-GRUNDLAGEN.............................................................................
199
4.1 DIE KLASSE OB JE C T
...........................................................................
199
4.1.1 DIE METHODE TO S TR IN G ()
...............................................
201
4.1.2 DIE METHODE EQUAIS ()
...................................................
205
4.2 PRIMITIVE TYPEN UND WRAPPER-KLASSEN
............................................ 217
4.2.1
GRUNDLAGEN.......................................................................
218
4.2.2 KONVERTIERUNG VON WERTEN
.................................................
225
4.2.3 WISSENSWERTES ZU AUTO-BOXING UND AUTO-UNBOXING
.........
228
4.2.4 AUSGABE UND VERARBEITUNG VON ZAHLEN
.............................
231
4.3 STRINGVERARBEITUNG
............................................................................
234
4.3.1 DIE KLASSE S T R IN G
............................................................
235
4.3.2 DIE KLASSEN S TR IN G B U FFE R UND S T R IN G B U ILD E R
.......
239
4.3.3 AUSGABEN MIT FO RM A T () UND P R I N T F ()
........................ 243
4.3.4 DIE METHODE S P I I T () UND REGULAERE AUSDRUECKE............... 244
4.4
DATUMSVERARBEITUNG.........................................................................
249
4.4.1 FALLSTRICKE DER
DATUMS-APIS.............................................. 249
4.4.2 DAS D ATE-A P I
...................................................................
251
4.4.3 DAS C A LE N D A R-A P I
..........................................................
253
4.5 VARIANTEN INNERER
KLASSEN................................................................
255
4.6 EIN- UND AUSGABE (I/O)
...................................................................
259
4.6.1 DATEIBEHANDLUNG UND DIE KLASSE F I L E
.............................
259
4.6.2 EIN- UND AUSGABESTREAMS IM UEBERBLICK
...........................
264
4.6.3 ZEICHENCODIERUNGEN BEI DER EIN- UND AUSGABE
................
267
4.6.4 SPEICHERN UND LADEN VON DATEN UND OBJEKTEN
................
269
4.6.5 DATEIVERARBEITUNG IN JDK 7
...............................................
277
4.6.6 ERWEITERUNGEN IM NIO UND DER KLASSE F ILE S IN JDK 8... 279
4.7 FEHLERBEHANDLUNG
............................................................................
281
4.7.1 EINSTIEG IN DIE FEHLERBEHANDLUNG
......................................
281
4.7.2 CHECKED EXCEPTIONS UND UNCHECKED EXCEPTIONS
.............
287
4.7.3 EXCEPTION HANDLING UND RESSOURCENFREIGABE
..................
288
4.7.4 BESONDERHEITEN BEIM EXCEPTION HANDLING MIT JDK 7
.......
294
4.7.5 ASSERTIONS
.........................................................................
298
4.8 WEITERFUEHRENDE LITERATUR
.................................................................
301
5 LAMBDAS, METHODENREFERENZEN UND DEFAULTMETHODEN
..............
303
5.1 EINSTIEG IN
LAMBDAS.........................................................................
303
5.1.1 SYNTAX VON LAMBDAS
........................................................
303
5.1.2 FUNCTIONAL INTERFACES UND SAM-TYPEN
................................
304
5.1.3 EXCEPTIONS IN
LAMBDAS..................................................... 308
5.2 SYNTAXERWEITERUNGEN IN
INTERFACES................................................... 312
5.2.1
DEFAULTMETHODEN................................................................
313
5.2.2 STATISCHE METHODEN IN INTERFACES
......................................
315
5.3 METHODENREFERENZEN
.......................................................................
317
5.4 EXTERNE VS. INTERNE ITERATION
............................................................ 318
5.5 WICHTIGE FUNCTIONAL INTERFACES FUER
COLLECTIONS................................. 319
5.5.1 DAS INTERFACE P RE D IC A TE T
.......................................... 319
5.5.2 DAS INTERFACE U N A RYO P E RA TO R T
................................. 321
5.5.3
FAZIT....................................................................................
322
II BAUSTEINE STABILER JAVA-APPLIKATIONEN 323
6 DAS
COLLECTIONS-FRAMEWORK...........................................................
325
6.1 DATENSTRUKTUREN UND
CONTAINERKLASSE.............................................. 325
6.1.1 WAHL EINER GEEIGNETEN DATENSTRUKTUR
...............................
326
6.1.2 ARRAYS
................................................................................
328
6.1.3 DAS INTERFACE C O LLE C TIO N
.............................................. 331
6.1.4 DAS INTERFACE I T E R A T O R
...................................................
333
6.1.5 LISTEN UND DAS INTERFACE L I S T
..........................................
336
6.1.6 MENGEN UND DAS INTERFACE S E
T........................................... 344
6.1.7 GRUNDLAGEN VON HASHBASIERTEN CONTAINERN
......................
349
6.1.8 GRUNDLAGEN AUTOMATISCH SORTIERENDER CONTAINER................ 358
6.1.9 DIE METHODEN EQUALS (), HASHCODE () UND COMPARETO ()
IM ZUSAMMENSPIEL
............................................................
366
6.1.10 SCHLUESSEL-WERT-ABBILDUNGEN UND DAS INTERFACE MAP
.........
368
6.1.11 ERWEITERUNGEN AM BEISPIEL DER KLASSE HASHMAP
..............
376
6.1.12 ERWEITERUNGEN IM INTERFACE MAP MIT JDK 8 ........................
380
6.1.13 ENTSCHEIDUNGSHILFE ZUR WAHL VON DATENSTRUKTUREN
...........
384
6.2 SUCHEN UND SORTIEREN
.....................................................................
385
6.2.1 SUCHEN
..............................................................................
385
6.2.2 SORTIEREN VON ARRAYS UND LISTEN
........................................
389
6.2.3 SORTIEREN MIT
KOMPARATOREN.............................................. 391
6.2.4 ERWEITERUNGEN IM INTERFACE COM PARATOR MIT JDK 8
.......
393
6.3 UTILITY-KLASSEN UND HILFSMETHODEN
...................................................
398
6.3.1 NUETZLICHE HILFSMETHODEN
...................................................
398
6.3.2 DEKORIERER SYNCHRON IZED, UNM ODIF IA B LE UND CHECKED401
6.3.3 VORDEFINIERTE ALGORITHMEN IN DER KLASSE C O IIE C TIO N S .. 406
6.4 CONTAINERKLASSEN: GENERICS UND VARIANZ
........................................
408
6.5 DIE KLASSE O P T IO N A L
.....................................................................
422
6.5.1 GRUNDLAGEN ZUR KLASSE O P TIO N A L
................................... 422
6.5.2 WEITERFUEHRENDES BEISPIEL UND DISKUSSION..........................
425
6.5.3 VERKETTETE
METHODENAUFRUFE.............................................. 428
6.6 FALLSTRICKE IM
COLLECTIONS-FRAMEWORK.............................................. 429
6.6.1 WISSENSWERTES ZU ARRAYS
.................................................
429
6.6.2 WISSENSWERTES ZU STA CK, QUEUE UND DEQUE
..................
433
6.7 WEITERFUEHRENDE
LITERATUR..................................................................
436
7 BULK OPERATIONS ON COIIECTIONS
...................................................
439
7.1 STREAM
S.............................................................................................
439
7.1.1 STREAMS ERZEUGEN - CREATE OPERATIONS
...........................
440
7.1.2 INTERMEDIATE UND TERMINAL OPERATIONS IM UEBERBLICK
...........
442
7.1.3 ZUSTANDSLOSE INTERMEDIATE OPERATIONS
.............................
444
7.1.4 ZUSTANDSBEHAFTETE INTERMEDIATE OPERATIONS
....................
451
7.1.5 TERMINAL OPERATIONS
..........................................................
452
7.1.6 WISSENSWERTES ZUR PARALLELVERARBEITUNG
...........................
460
7.2
FILTER-MAP-REDUCE...........................................................................
466
7.2.1 HERKOEMMLICHE
REALISIERUNG.............................................. 466
7.2.2 FILTER-MAP-REDUCE MIT JDK 8
............................................ 468
7.3 PRAXISBEISPIELE
................................................................................
471
7.3.1 AUFBEREITEN VON GRUPPIERUNGEN UND HISTOGRAMMEN
.........
471
7.3.2 MAPS NACH WERT SORTIEREN
.................................................
472
7.3.3 VERARBEITUNG VON
ZIP-DATEIEN............................................ 476
8 APPLIKATIONSBAUSTEINE
.................................................................. 479
8.1 EINSATZ VON BIBLIOTHEKEN
.................................................................
480
8.2 GOOGLE GUAVA IM
KURZUEBERBLICK....................................................... 483
8.2.1
STRING-AKTIONEN..................................................................
485
8.2.2 STRINGKONKATENATION UND -EXTRAKTION
................................. 486
8.2.3 ERWEITERUNGEN FUER
COLLECTIONS............................................ 490
8.2.4 WEITERE
UTILITY-FUNKTIONALITAETEN.......................................... 494
8.3 WERTEBEREICHS- UND PARAMETERPRUEFUNGEN
......................................
500
8.3.1 PRUEFUNG EINFACHER WERTEBEREICHE UND WERTEMENGEN
.......
501
8.3.2 PRUEFUNG KOMPLEXERER WERTEBEREICHE.................................
503
8.4
LOGGING-FRAMEWORKS.......................................................................
507
8.4.1 APACHE LOG4J2
...................................................................
507
8.4.2 TIPPS UND TRICKS ZUM EINSATZ VON LOGGING MIT LOG4J2
___
512
8.5 KONFIGURATIONSPARAMETER
UND-DATEIEN............................................ 516
8.5.1 EINLESEN VON KOMMANDOZEILENPARAMETERN
......................
516
8.5.2 VERARBEITUNG VON
PROPERTIES.............................................. 524
8.5.3 DIE KLASSE P RE FE RE N C E S
.................................................
531
8.5.4 WEITERE MOEGLICHKEITEN ZUR KONFIGURATIONSVERWALTUNG
.......
533
9
MULTITHREADING................................................................................
539
9.1 THREADS UND RUNNABLES
...................................................................
541
9.1.1 DEFINITION DER AUSZUFUEHRENDEN AUFGABE
...........................
541
9.1.2 START, AUSFUEHRUNG UND ENDE VON THREADS...........................
542
9.1.3 LEBENSZYKLUS VON THREADS UND THREAD-ZUSTAENDE
...........
546
9.1.4 UNTERBRECHUNGSWUENSCHE DURCH AUFRUF VON I N TE R R U P T () 549
9.2 ZUSAMMENARBEIT VON THREADS
........................................................
552
9.2.1 KONKURRIERENDE
DATENZUGRIFFE............................................ 552
9.2.2 LOOKS, MONITORS UND KRITISCHE BEREICHE
.............................
553
9.2.3 DEADLOCKS UND STARVATION
.................................................
560
9.2.4 KRITISCHE BEREICHE UND DAS INTERFACE LOCK
......................
562
9.3 KOMMUNIKATION VON THREADS
............................................................
564
9.3.1 KOMMUNIKATION MIT SYNCHRONISATION
.................................
564
9.3.2 KOMMUNIKATION UEBER DIE METHODEN W A IT (), N O T IF Y ()
UND N O T I F Y A L L ( )
............................................................
567
9.3.3 ABSTIMMUNG VON THREADS
.................................................
574
9.3.4 UNERWARTETE ILLE G A LM O N ITO RS TA TE E X C E P TIO N S
.......
577
9.4 DAS
JAVA-MEMORY-MODELL................................................................
578
9.4.1
SICHTBARKEIT.......................................................................
579
9.4.2
ATOMARITAET...........................................................................
579
9.4.3
REORDERINGS.......................................................................
581
9.5 BESONDERHEITEN BEI THREADS
............................................................
585
9.5.1 VERSCHIEDENE ARTEN VON THREADS
......................................
585
9.5.2 EXCEPTIONS IN
THREADS....................................................... 586
9.5.3 SICHERES BEENDEN VON THREADS
........................................
587
9.5.4 ZEITGESTEUERTE AUSFUEHRUNG
...............................................
591
9.6 DIE CONCURRENCY
UTILITIES..................................................................
595
9.6.1 CONCURRENT
COLLECTIONS....................................................... 596
9.6.2 DAS EXECUTOR-FRAMEWORK
.................................................
602
9.6.3 DAS FORK-JOIN-FRAMEWORK
.................................................
613
9.6.4 ERWEITERUNGEN IM BEREICH CONCURRENCY MIT JDK 8
...........
615
9.7 WEITERFUEHRENDE
LITERATUR..................................................................
619
10 FORTGESCHRITTENE JAVA-THEMEN
....................................................
621
10.1 CRASHKURS
REFLECTION.......................................................................
621
10.1.1 GRUNDLAGEN
.......................................................................
623
10.1.2 ZUGRIFF AUF METHODEN UND ATTRIBUTE
....................................
626
10.1.3
SPEZIALFAELLE.....................................................................
631
10.1.4 TYPE ERASURE UND TYPINFORMATIONEN BEI GENERICS
.............
634
10.2
ANNOTATIONS......................................................................................
636
10.2.1 EINFUEHRUNG IN ANNOTATIONS
.................................................
637
10.2.2 STANDARD-ANNOTATIONS DES JDKS
......................................
638
10.2.3 DEFINITION EIGENER ANNOTATIONS
...........................................
640
10.2.4 ANNOTATION ZUR LAUFZEIT AUSLESEN
.......................................
643
10.3
SERIALISIERUNG...................................................................................
644
10.3.1 GRUNDLAGEN DER
SERIALISIERUNG.......................................... 645
10.3.2 DIE SERIALISIERUNG
ANPASSEN.............................................. 650
10.3.3 VERSIONSVERWALTUNG DER SERIALISIERUNG
..............................
653
10.3.4 OPTIMIERUNG DER SERIALISIERUNG
..........................................
657
10.4 GARBAGE
COLLECTION...........................................................................
662
10.4.1 GRUNDLAGEN ZUR GARBAGE
COLLECTION................................. 662
10.4.2 HERKOEMMLICHE ALGORITHMEN ZUR GARBAGE COLLECTION
..........
666
10.4.3 EINFLUSSFAKTOREN AUF DIE GARBAGE COLLECTION
.....................
668
10.4.4 DER GARBAGE COLLECTOR G1
............................................ 670
10.4.5 MEMORY LEAKS: GIBT ES DIE AUCH IN JAVA?!
.........................
670
10.5 DYNAMIC PROXIES
..............................................................................
673
10.5.1 STATISCHER P RO
XY................................................................ 675
10.5.2 DYNAMISCHER
PROXY............................................................ 677
10.6 NASHORN - DIE JAVASCRIPT-ENGINE
...............................................
682
10.7 WEITERFUEHRENDE
LITERATUR..................................................................
685
11 DATUMSVERARBEITUNG SEIT JDK 8
...................................................
687
11.1 UEBERBLICK UEBER DIE NEU EINGEFUEHRTEN TYPEN
....................................
637
11.1.1 NEUE AUFZAEHLUNGEN, KLASSEN UND INTERFACES
....................
688
11.1.2 DIE AUFZAEHLUNGEN DAYOFWEEK UND M O N TH
......................
690
11.1.3 DIE KLASSEN MONTHDAY, YEARMONTH UND Y E A R
................
690
11.1.4 DIE KLASSE IN S TA N T
........................................................
691
11.1.5 DIE KLASSE D U R A T IO N
....................................................... 692
11.1.6 DIE AUFZAEHLUNG C H RO N O U N
IT............................................ 695
11.1.7 DIE KLASSEN LOCALD ATE, LOCALTIM E UND L O CA LD A TE -
T IM E
..................................................................................
696
11.1.8 DIE KLASSE P E RIO D
............................................................ 696
11.1.9 DIE KLASSE ZONEDDATETIM
E............................................ 699
11.1.10 ZEITZONEN UND DIE KLASSEN ZONE ID UND Z O N E O FFS E T ... 700
11.1.11 DIE KLASSE C LO C K
.............................................................. 702
11.1.12 FORMATIERUNG UND PARSING
.................................................
704
11.2 DATUMSARITHMETIK
............................................................................
705
11.3 INTEROPERABILITAET MIT
LEGACY-CODE................................................... 709
12 GUIS MIT
JAVAFX.............................................................................
711
12.1 EINFUEHRUNG - JAVAFX IM
UEBERBLICK................................................... 711
12.1.1 GRUNDSAETZLICHE
KONZEPTE................................................... 711
12.1.2 LAYOUTMANAGEMENT
..........................................................
715
12.2 DEKLARATIVER AUFBAU DES GUIS
........................................................
725
12.2.1 DEKLARATIVE BESCHREIBUNG VON G U IS
................................. 725
12.2.2 HELLO-WORLD-BEISPIEL MIT
FXML.......................................... 725
12.2.3 DISKUSSION: DESIGN UND FUNKTIONALITAET STRIKT TRENNEN
.......
728
12.3 RICH-CLIENT EXPERIENCE
..................................................................
730
12.3.1 GESTALTUNG MIT C S S
..........................................................
730
12.3.2
EFFEKTE................................................................................
736
12.3.3
ANIMATIONEN.......................................................................
738
12.3.4 ZEICHNEN IN
JAVAFX-KOMPONENTEN.................................... 740
12.4 PROPERTIES, BINDINGS UND OBSERVABLE COLLECTIONS
...........................
743
12.4.1 PROPERTIES
..........................................................................
743
12.4.2 BINDINGS
............................................................................
744
12.4.3 OBSERVABLE
COLLECTIONS..................................................... 748
12.4.4 DYNAMISCHES FILTERN VON O B S E RV A B LE L IS T
....................
751
12.5 WICHTIGE
BEDIENELEMENTE................................................................
754
12.5.1
DIALOGE...............................................................................
754
12.5.2 FORMATIERTE EINGABE IN T E X T F IE ID S
...............................
756
12.5.3 DIE BEDIENELEMENTE COMBOBOX UND L IS T V IE W ............... 758
12.5.4 TABELLEN UND DAS BEDIENELEMENT T A B IE V IE W
..................
762
12.5.5 DAS BEDIENELEMENT T RE E T A B IE V IE W
.............................
764
12.5.6 MENUES
................................................................................
769
12.6 MULTITHREADING IN
JAVAFX.................................................................
770
12.6.1 DAS INTERFACE W O RK E
R....................................................... 770
12.6.2 DIE KLASSE TASK V
......................................................... 771
12.7 VON SWING ZU
JAVAFX......................................................................
774
12.7.1 JAVAFX IN SWING EINBINDEN
...............................................
774
12.7.2 SWING IN JAVAFX EINBINDEN
...............................................
776
12.8 WEITERFUEHRENDE
LITERATUR..................................................................
778
13 BASISWISSEN
INTERNATIONALISIERUNG................................................
779
13.1 INTERNATIONALISIERUNG IM UEBERBLICK
...................................................
779
13.1.1 GRUNDLAGEN UND NORMEN
...................................................
780
13.1.2 DIE KLASSE L O C A LE
............................................................
781
13.1.3 DIE KLASSE PROPERTYR ESOURCEB UNDLE
........................
785
13.1.4 FORMATIERTE EIN-UND AUSGABE
..........................................
788
13.1.5 ZAHLEN UND DIE KLASSE NUM BERFORM AT
...........................
789
13.1.6 DATUMSWERTE UND DIE KLASSE D A TEF ORM AT
.......................
792
13.1.7 TEXTMELDUNGEN UND DIE KLASSE MESSAGEFORMAT
.............
797
13.1.8 STRINGVERGLEICHE MIT DER KLASSE C O I I A T O R
......................
799
13.2 PROGRAMMBAUSTEINE ZUR
INTERNATIONALISIERUNG................................. 804
13.2.1 UNTERSTUETZUNG MEHRERER DATUMSFORMATE
...........................
805
13.2.2 NUTZUNG MEHRERER SPRACHDATEIEN
....................................
810
III NEUERUNGEN IN JAVA 9 821
14 ERGAENZUNGEN IN JAVA 9
.................................................................. 823
14.1
SYNTAXERWEITERUNGEN.......................................................................
823
14.1.1 ANONYME INNERE KLASSEN UND DER DIAMOND OPERATOR
___
823
14.1.2 ERWEITERUNG DER SDEPRECATED-ANNOTATION
......................
823
14.1.3 PRIVATE METHODEN IN INTERFACES
..........................................
824
14.2 NEUES UND AENDERUNGEN IM
JDK....................................................... 826
14.2.1 DAS NEUE
PROCESS-API....................................................... 326
14.2.2 NEUERUNGEN IM
STREAM-API.............................................. 830
14.2.3 ERWEITERUNGEN RUND UM DIE KLASSE O P T IO N A L
................
833
14.2.4 ERWEITERUNGEN IN DER KLASSE IN P U TS TR E A M
....................
839
14.2.5 ERWEITERUNGEN IN DER KLASSE O B JE C TS
.............................
840
14.2.6 ERWEITERUNGEN IN DER KLASSE
COMPIETABIEFUTURE
.......
841
14.2.7
COLLECTION-FACTORY-METHODEN............................................
843
14.3 AENDERUNGEN IN DER JVM
...................................................................
845
14.3.1 GARBAGE
COLLECTION............................................................
845
14.3.2 BROWSER-PLUGIN IST
DEPRECATED.......................................... 847
14.3.3 AENDERUNG DES VERSIONSSCHEMAS
......................................
847
14.3.4 HTML5
JAVADOC................................................................
848
14.3.5 JAVA + REPL =
J SHELL
................................................... 849
14.4
FAZIT..................................................................................................
851
15 MODULARISIERUNG MIT PROJECT JIGSAW
............................................
853
15.1 GRUNDLAGEN
.....................................................................................
354
15.1.1
BEGRIFFLICHKEITEN..................................................................
854
15.1.2 ZIELE VON PROJECT JIG SAW
...................................................
855
15.2 MODULARISIERUNG IM UEBERBLICK
..........................................................
856
15.2.1 GRUNDLAGEN ZU PROJECT JIGSAW
.......................................... 356
15.2.2 BEISPIEL MIT ZWEI MODULEN
.................................................
863
15.2.3
PACKAGING............................................................................
872
15.2.4
LINKING................................................................................
874
15.2.5 ABHAENGIGKEITEN UND
MODULGRAPHEN................................... 877
15.2.6 MODULE DES JDKS EINBINDEN
.............................................
879
15.2.7 ARTEN VON
MODULEN............................................................ 886
15.3 SICHTBARKEITEN UND ZUGRIFFSSCHUTZ
..................................................
887
15.3.1 SICHTBARKEITEN
...................................................................
887
15.3.2 ZUGRIFFSSCHUTZ UND
REFLECTION............................................ 889
15.4 KOMPATIBILITAET UND
MIGRATION............................................................
891
15.4.1 KOMPATIBILITAETSMODUS
........................................................
892
15.4.2 MIGRATIONSSZENARIEN
..........................................................
894
15.4.3 FALLSTRICK BEI DER BOTTOM-UP-MIGRATION
................................
898
15.4.4 BEISPIEL: MIGRATION MIT AUTOMATIC MODULES........................
900
15.4.5 BEISPIEL: AUTOMATIC UND UNNAMED MODULE........................
902
15.4.6 MOEGLICHE SCHWIERIGKEITEN BEI MIGRATIONEN.........................
904
15.4.7
FAZIT....................................................................................
905
15.5
ZUSAMMENFASSUNG...........................................................................
905
IV FALLSTRICKE UND LOESUNGEN IM PRAXISALLTAG 907
16 BAD
SMELLS.....................................................................................
909
16.1 PROGRAMMDESIGN
.............................................................................
911
16.1.1 BAD SMELL: VERWENDEN VON MAGIC NUM BERS..................... 911
16.1.2 BAD SMELL: KONSTANTEN IN INTERFACES DEFINIEREN
................
912
16.1.3 BAD SMELL: ZUSAMMENGEHOERENDE KONSTANTEN NICHT ALS
TYP
DEFINIERT.......................................................................
914
16.1.4 BAD SMELL: PROGRAMMCODE IM LOGGING-CODE
..................
916
16.1.5 BAD SMELL: DOMINANTER LOGGING-CODE
.............................
917
16.1.6 BAD SMELL: UNVOLLSTAENDIGE BETRACHTUNG ALLER ALTERNATIVEN . 919
16.1.7 BAD SMELL: UNVOLLSTAENDIGE AENDERUNGEN NACH COPY-PASTE 920
16.1.8 BAD SMELL: CASTS AUF UNBEKANNTE SUBTYPEN
....................
922
16.1.9 BAD SMELL: PRE-ZPOST-INCREMENT IN KOMPLEXEREN STATEMENTS 923
16.1.10 BAD SMELL: KEINE KLAMMERN UM BLOECKE
...........................
925
16.1.11 BAD SMELL: MEHRERE AUFEINANDERFOLGENDE PARAMETER GLEI
CHEN
TYPS...........................................................................
927
16.1.12 BAD SMELL: GRUNDLOSER EINSATZ VON REFLECTION
................
928
16.1.13 BAD SMELL:
SYSTEM.EXIT
() MITTEN IM PROGRAMM
...........
930
16.1.14 BAD SMELL: VARIABLENDEKLARATION NICHT IM KLEINSTMOEGLICHEN
SICHTBARKEITSBEREICH
..........................................................
931
16.2
KLASSENDESIGN.................................................................................
933
16.2.1 BAD SMELL: UNNOETIGERWEISE VERAENDERLICHE ATTRIBUTE
.........
933
16.2.2 BAD SMELL: HERAUSGABE VON
THIS
IM KONSTRUKTOR
...........
935
16.2.3 BAD SMELL: AUFRUF ABSTRAKTER METHODEN IM KONSTRUKTOR. .. 937
16.2.4 BAD SMELL: REFERENZIERUNG VON SUBKLASSEN IN BASISKLASSEN 941
16.2.5 BAD SMELL: MIX ABSTRAKTER UND KONKRETER BASISKLASSEN ... 943
16.2.6 BAD SMELL: OEFFENTLICHER DEFAULTKONSTRUKTOR LEDIGLICH ZUM
ZUGRIFF AUF HILFSMETHODEN
...................................................
945
16.3 FEHLERBEHANDLUNG UND EXCEPTION
HANDLING.................................... 947
16.3.1 BAD SMELL: UNBEHANDELTE
EXCEPTION................................. 947
16.3.2 BAD SMELL: UNPASSENDER EXCEPTION-TYP
...........................
948
16.3.3 BAD SMELL: EXCEPTIONS ZUR STEUERUNG DES KONTROLLFLUSSES 950
16.3.4 BAD SMELL: FANGEN DER ALLGEMEINSTEN EXCEPTION
.............
951
16.3.5
BAD SMELL: RUECKGABE VON
NULL
STATT EXCEPTION IM FEH
LERFALL
..................................................................................
953
16.3.6
BAD SMELL: UNBEDACHTE RUECKGABE VON
N U L L
.........
954
16.3.7 BAD SMELL: SONDERBEHANDLUNG VON RANDFAELLEN
................
957
16.3.8 BAD SMELL: KEINE GUELTIGKEITSPRUEFUNG VON EINGABEPARAME
TERN
....................................................................................
958
16.3.9 BAD SMELL: FEHLERHAFTE FEHLERBEHANDLUNG........................
960
16.3.10 BAD SMELL: I/O OHNE
FINAIIY
ODER ARM ........................ 962
16.3.11 BAD SMELL: RESOURCE LEAKS DURCH EXCEPTIONS IM KON
STRUKTOR
..............................................................................
964
16.4 HAEUFIGE
FALLSTRICKE............................................................................
968
16.5 WEITERFUEHRENDE
LITERATUR..................................................................
983
17
REFACTORINGS....................................................................................
985
17.1 REFACTORINGS AM BEISPIEL
.................................................................
986
17.2 DAS STANDARDVORGEHEN
...................................................................
994
17.3 KOMBINATION VON
BASIS-REFACTORINGS............................................... 997
17.3.1 REFACTORING-BEISPIEL: AUSGANGSLAGE UND ZIEL
....................
997
17.3.2 AUFLOESEN DER ABHAENGIGKEITEN
............................................. 999
17.3.3
VEREINFACHUNGEN..................................................................
1006
17.3.4 VERLAGERN VON
FUNKTIONALITAET................................................1010
17.4 DER REFACTORING-KATALOG
.......................
1011
17.4.1 REDUZIERE DIE SICHTBARKEIT VON ATTRIBUTEN
.............................
1011
17.4.2 MINIMIERE VERAENDERLICHE
ATTRIBUTE..........................................1014
17.4.3 REDUZIERE DIE SICHTBARKEIT VON METHODEN
..........................
1018
17.4.4 ERSETZE MUTATOR-DURCH BUSINESS-METHODE
........................
1020
17.4.5 MINIMIERE ZUSTANDSAENDERUNGEN
.......................................
1021
17.4.6 FUEHRE EIN INTERFACE E IN
.........................................................1021
17.4.7 SPALTE EIN INTERFACE A U F
.......................................................
1022
17.4.8 FUEHRE EIN READ-ONLY-LNTERFACE E IN
.......................................1023
17.4.9 FUEHRE EIN READ-WRITE-INTERFACE E IN
.....................................1023
17.4.10 LAGERE FUNKTIONALITAET IN HILFSMETHODEN A U S
........................
1024
17.4.11 TRENNE INFORMATIONSBESCHAFFUNG UND-VERARBEITUNG
.........
1026
17.4.12 WANDLE KONSTANTENSAMMLUNG IN ENUM UM
..........................
1033
17.4.13 ENTFERNE EXCEPTIONS ZUR STEUERUNG DES KONTROLLFLUSSES. .. 1036
17.4.14 WANDLE IN UTILITY-KLASSE MIT STATISCHEN HILFSMETHODEN UM 1038
17.4.15 LOESE IF - E LS E / IN S TA N C E O F DURCH POLYMORPHIE A U F
__
1042
17.5 DEFENSIVES
PROGRAMMIEREN................................................................
1045
17.5.1 FUEHRE EINE ZUSTANDSPRUEFUNG EIN
.........................................
1045
17.5.2 UEBERPRUEFE
EINGABEPARAMETER.............................................1046
17.6 FALLLSTRICKE BEI
REFACTORINGS..............................................................
1051
17.7 WEITERFUEHRENDE LITERATUR
.................................................................
1053
18 ENTWURFSMUSTER
................................................................................
1055
18.1
ERZEUGUNGSMUSTER...........................................................................
1058
18.1.1 ERZEUGUNGSMETHODE
...........................................................1058
18.1.2 FABRIKMETHODE (FACTORY METHOD)
........................................
1061
18.1.3 ERBAUER
(BUILDER)................................................................
1064
18.1.4
SINGLETON............................................................................
1067
18.1.5 PROTOTYP (PROTOTYPE)
..........................................................
1072
18.2
STRUKTURMUSTER..................................................................................
1076
18.2.1 FASSADE
(FAGADE)..............................................................
1076
18.2.2
ADAPTER..............................................................................
1078
18.2.3 DEKORIERER (DECORATOR)
......................................................
1080
18.2.4 KOMPOSITUM (COMPOSITE)
...................................................
1084
13.3
VERHALTENSMUSTER...............................................................................
1088
13.3.1
ITERATOR...................................................................................1088
18.3.2 NULL-OBJEKT (NULL O BJECT)
.....................................................
1090
18.3.3 SCHABLONENMETHODE (TEMPLATE METHOD)
.............................
1093
18.3.4 STRATEGIE (STRATEGY)
.............................................................
1097
18.3.5 BEFEHL (COMMAND)
..............................................................
1109
18.3.6 PROXY
....................................................................................
1116
18.3.7 BEOBACHTER (OBSERVER)
..........................................................
1113
18.3.8
MVC-ARCHITEKTUR..................................................................
1127
18.4 WEITERFUEHRENDE
LITERATUR....................................................................1129
V QUALITAETSSICHERUNGSMASSNAHMEN 1131
19 PROGRAMMIERSTIL UND CODING CONVENTIONS
...................................
1133
19.1 GRUNDREGELN EINES GUTEN
PROGRAMMIERSTILS.......................................1133
19.1.1 KEEP LT HUMAN-READABLE
...................................................
1134
19.1.2 KEEP LT SIMPLE AND SHORT
(KISS).........................................1134
19.1.3 KEEP LT
NATURAL......................................................................1134
19.1.4 KEEP LT
CLEAN........................................................................1135
19.2 DIE PSYCHOLOGIE BEIM
SOURCECODE-LAYOUT.........................................1135
19.2.1 GESETZ DER AEHNLICHKEIT
..........................................................
1135
19.2.2 GESETZ DER NAEHE
...................................................................
1137
19.3 CODING CONVENTIONS
..........................................................................
1138
19.3.1 GRUNDLEGENDE NAMENS- UND FORMATIERUNGSREGELN
...........
1139
19.3.2
NAMENSGEBUNG....................................................................
1142
19.3.3 DOKUMENTATION
....................................................................
1145
19.3.4
PROGRAMMDESIGN..................................................................
1147
19.3.5
KLASSENDESIGN......................................................................1152
19.3.6 PARAMETERLISTEN
.....................................................................
1155
19.3.7 LOGIK UND
KONTROLLFLUSS.........................................................
1157
19.4 SOURCECODE-PRUEFUNG MIT
TOOLS...........................................................1159
19.4.1
METRIKEN...............................................................................1161
19.4.2 SOURCECODE-PRUEFUNG IM BUILD-PROZESS
...............................
1165
20 UNIT
TESTS..........................................................................................1175
20.1 TESTEN IM UEBERBLICK
..........................................................................
1175
20.1.1 WAS VERSTEHT MAN UNTER
TESTEN?..........................................1175
20.1.2 TESTARTEN IM
UEBERBLICK.........................................................1176
20.1.3 ZUSTAENDIGKEITEN BEIM TESTEN
..............................................
1179
20.1.4 TESTEN UND
QUALITAET................................................................1181
20.2 WISSENSWERTES ZU TESTFAELLEN
..............................................................
1185
20.2.1 TESTFAELLE MIT JUNIT 4 DEFINIEREN
............................................
1185
20.2.2 PROBLEM DER KOMBINATORIK
...................................................
1193
20.3 MOTIVATION FUER UNIT TESTS AUS DER PRAXIS
............................................
1197
20.4 JUNIT RULES UND PARAMETRIERTE
TESTS..................................................1206
20.4.1 JUNIT RULES IM UEBERBLICK
.....................................................
1206
20.4.2 PARAMETRIERTE TESTS
..............................................................
1210
20.5 FORTGESCHRITTENE
UNIT-TEST-TECHNIKEN................................................1215
20.5.1 STELLVERTRETEROBJEKTE / TEST-DOUBLES
.....................................
1218
20.5.2 VORARBEITEN FUER DAS TESTEN MIT STUBS UND MOCKS
.................
1222
20.5.3 DIE TECHNIK E
XTRACT
AND
O
VERRIDE
...............................
1224
20.5.4 EINSTIEG IN DAS TESTEN MIT MOCKS UND
MOCKITO.....................1231
20.5.5 ABHAENGIGKEITEN MIT MOCKITO AUFLOESEN
.................................
1239
20.5.6 UNIT TESTS VON PRIVATEN
METHODEN.......................................1242
20.6 UNIT TESTS MIT THREADS UND
TIMING...................................................1244
20.6.1 FUNKTIONALE ERWEITERUNG: AGGREGATION UND VERSAND
.........
1244
20.6.2 TEST DER AGGREGATION UND DES
VERSANDS..............................1246
20.6.3 TEST DES NEBENLAEUFIGEN VERSANDS
....................................
1249
20.7 TEST
SMELLS.......................................................................................
1251
20.8 NUETZLICHE TOOLS FUER UNIT TESTS
............................................................
1256
20.8.1
HAMCREST...........................................................................
1256
20.8.2 MOREUNIT
............................................................................
1262
20.8.3 INFINITEST
............................................................................
1262
20.8.4
JACOCO..............................................................................
1263
20.8.5
ECLEMMA...........................................................................
1266
20.9 AUSBLICK AUF JUNIT 5
.........................................................................
1268
20.9.1 EINFUEHRENDES
BEISPIEL...........................................................1263
20.9.2 WICHTIGE NEUERUNGEN IN JUNIT 5 IM
UEBERBLICK.....................1269
20.10 WEITERFUEHRENDE
LITERATUR....................................................................1273
21
CODEREVIEWS......................................................................................1275
21.1 DEFINITION
.........................................................................................
1275
21.2 PROBLEME UND TIPPS ZUR DURCHFUEHRUNG
.............................................
1277
21.3 VORTEILE VON CODEREVIEWS
................................................................ 1279
21.4
CODEREVIEW-CHECKLISTE.....................................................................
1282
22
OPTIMIERUNGEN..................................................................................
1283
22.1 GRUNDLAGEN
.....................................................................................
1284
22.1.1 OPTIMIERUNGSEBENEN UND EINFLUSSFAKTOREN
..........................
1285
22.1.2 OPTIMIERUNGSTECHNIKEN
..................................................... 1286
22.1.3 CPU-BOUND-OPTIMIERUNGSEBENEN AM BEISPIEL...................1288
22.1.4 MESSUNGEN - ERKENNEN KRITISCHER BEREICHE
.......................
1292
22.1.5 ABSCHAETZUNGEN MIT DER
O-NOTATION.....................................1299
22.2 EINSATZ GEEIGNETER DATENSTRUKTUREN
..................................................1302
22.2.1 EINFLUSS VON ARRAYS UND LISTEN
............................................
1303
22.2.2 OPTIMIERUNGEN FUER
SET
UND
MAP
..........................................
1307
22.2.3 DESIGN EINES ZUGRIFFSINTERFACE
............................................
1309
22.3 LAZY
INITIALIZATION.................................................................................1312
22.3.1 LAZY INITIALIZATION AM BEISPIEL
..............................................
1312
22.3.2 KONSEQUENZEN DES EINSATZES DER LAZY INITIALIZATION
...........
1315
22.3.3 LAZY INITIALIZATION MITHILFE DES PROXY-MUSTERS
...................
1317
22.4 OPTIMIERUNGEN AM BEISPIEL
................................................................
1320
22.5
L/O-BOUND-OPTIMIERUNGEN..................................................................
1327
22.5.1 TECHNIK - WAHL PASSENDER STRATEGIEN
...............................
1327
22.5.2 TECHNIK - CACHING UND POOLING
............................................
1331
22.5.3 TECHNIK - VERMEIDUNG UNNOETIGER AKTIONEN
..........................
1331
22.6
MEMORY-BOUND-OPTIMIERUNGEN...........................................................1334
22.6.1 TECHNIK - WAHL PASSENDER STRATEGIEN
.................................
1334
22.6.2 TECHNIK - CACHING UND POOLING
............................................
1337
22.6.3 OPTIMIERUNGEN DER STRINGVERARBEITUNG
.............................1343
22.6.4 TECHNIK - VERMEIDUNG UNNOETIGER AKTIONEN
...........................
1345
22.7 CPU-BOUND-OPTIMIERUNGEN
................................................................
1348
22.7.1 TECHNIK - WAHL PASSENDER STRATEGIEN
.................................
1348
22.7.2 TECHNIK - CACHING UND POOLING
............................................
1350
22.7.3 TECHNIK - VERMEIDUNG UNNOETIGER AKTIONEN
...........................
1351
22.8 WEITERFUEHRENDE
LITERATUR....................................................................
1354
23 SCHLUSSGEDANKEN
............................................................................
1355
VI ANHANG 1357
A GRUNDLAGEN ZUR JAVA VIRTUAL MACHINE
...........................................
1359
A.1 WISSENSWERTES RUND UM DIE JAVA VIRTUAL MACHINE
...........................
1359
A.1.1 AUSFUEHRUNG EINES
JAVA-PROGRAMMS......................................1359
A.1.2 SICHERHEIT UND SPEICHERVERWALTUNG
......................................
1360
A.1.3 SICHERHEIT UND
CLASSLOADING.................................................1361
LITERATURVERZEICHNIS
................................................................................
1363
INDEX
1367
|
any_adam_object | 1 |
author | Inden, Michael 1971- |
author_GND | (DE-588)143426753 |
author_facet | Inden, Michael 1971- |
author_role | aut |
author_sort | Inden, Michael 1971- |
author_variant | m i mi |
building | Verbundindex |
bvnumber | BV044457192 |
classification_rvk | ST 250 |
classification_tum | DAT 362 |
ctrlnum | (OCoLC)1000295446 (DE-599)DNB1137524960 |
dewey-full | 005.133 004 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security 004 - Computer science |
dewey-raw | 005.133 004 |
dewey-search | 005.133 004 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 4., überarbeitete und aktualisierte Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02976nam a2200649 c 4500</leader><controlfield tag="001">BV044457192</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20201102 </controlfield><controlfield tag="007">t|</controlfield><controlfield tag="008">170822s2018 gw a||| |||| 00||| ger d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">17,N32</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">17,A46</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1137524960</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783864904837</subfield><subfield code="c">Festeinband : EUR 49.90 (DE), circa EUR 51.30 (AT)</subfield><subfield code="9">978-3-86490-483-7</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3864904838</subfield><subfield code="9">3-86490-483-8</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783864904837</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1000295446</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1137524960</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-BW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-91G</subfield><subfield code="a">DE-526</subfield><subfield code="a">DE-1050</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-1043</subfield><subfield code="a">DE-858</subfield><subfield code="a">DE-1102</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-355</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-M347</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-M490</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-92</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield><subfield code="2">22/ger</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">004</subfield><subfield code="2">23</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 362</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Inden, Michael</subfield><subfield code="d">1971-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)143426753</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Der Weg zum Java-Profi</subfield><subfield code="b">Konzepte und Techniken für die professionelle Java-Entwicklung</subfield><subfield code="c">Michael Inden</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">4., überarbeitete und aktualisierte Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Heidelberg</subfield><subfield code="b">dpunkt.verlag</subfield><subfield code="c">2018</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xxvi, 1389 Seiten</subfield><subfield code="b">Illustrationen, Diagramme</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Auf dem Cover: Aktuell zu Java 9</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java Standard Edition 6</subfield><subfield code="0">(DE-588)7554591-3</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java Standard Edition 8</subfield><subfield code="0">(DE-588)1049861094</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java Standard Edition 9</subfield><subfield code="0">(DE-588)113696553X</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Informatikstudenten - Java-Programmierer - Entwickler</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Java SE</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Softwareentwicklung</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Java Standard Edition 9</subfield><subfield code="0">(DE-588)113696553X</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Java Standard Edition 6</subfield><subfield code="0">(DE-588)7554591-3</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="2" ind2="0"><subfield code="a">Java Standard Edition 8</subfield><subfield code="0">(DE-588)1049861094</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="2" ind2=" "><subfield code="8">2\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Dpunkt.Verlag (Heidelberg)</subfield><subfield code="0">(DE-588)6085529-0</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, ePDF</subfield><subfield code="z">978-3-96088-356-2</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, Mobi</subfield><subfield code="z">978-3-96088-358-6</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, ePub</subfield><subfield code="z">978-3-96088-357-9</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=8a0f325843eb47a682975e8c295fce45&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">DNB Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029857967&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">2\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-029857967</subfield></datafield></record></collection> |
id | DE-604.BV044457192 |
illustrated | Illustrated |
indexdate | 2024-12-24T06:08:40Z |
institution | BVB |
institution_GND | (DE-588)6085529-0 |
isbn | 9783864904837 3864904838 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-029857967 |
oclc_num | 1000295446 |
open_access_boolean | |
owner | DE-91G DE-BY-TUM DE-526 DE-1050 DE-523 DE-706 DE-83 DE-19 DE-BY-UBM DE-29T DE-860 DE-859 DE-1043 DE-858 DE-1102 DE-573 DE-355 DE-BY-UBR DE-20 DE-M347 DE-473 DE-BY-UBG DE-703 DE-M490 DE-B768 DE-92 |
owner_facet | DE-91G DE-BY-TUM DE-526 DE-1050 DE-523 DE-706 DE-83 DE-19 DE-BY-UBM DE-29T DE-860 DE-859 DE-1043 DE-858 DE-1102 DE-573 DE-355 DE-BY-UBR DE-20 DE-M347 DE-473 DE-BY-UBG DE-703 DE-M490 DE-B768 DE-92 |
physical | xxvi, 1389 Seiten Illustrationen, Diagramme |
publishDate | 2018 |
publishDateSearch | 2018 |
publishDateSort | 2018 |
publisher | dpunkt.verlag |
record_format | marc |
spellingShingle | Inden, Michael 1971- Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung Java Standard Edition 6 (DE-588)7554591-3 gnd Java Standard Edition 8 (DE-588)1049861094 gnd Java Standard Edition 9 (DE-588)113696553X gnd |
subject_GND | (DE-588)7554591-3 (DE-588)1049861094 (DE-588)113696553X |
title | Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung |
title_auth | Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung |
title_exact_search | Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung |
title_full | Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung Michael Inden |
title_fullStr | Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung Michael Inden |
title_full_unstemmed | Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung Michael Inden |
title_short | Der Weg zum Java-Profi |
title_sort | der weg zum java profi konzepte und techniken fur die professionelle java entwicklung |
title_sub | Konzepte und Techniken für die professionelle Java-Entwicklung |
topic | Java Standard Edition 6 (DE-588)7554591-3 gnd Java Standard Edition 8 (DE-588)1049861094 gnd Java Standard Edition 9 (DE-588)113696553X gnd |
topic_facet | Java Standard Edition 6 Java Standard Edition 8 Java Standard Edition 9 |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=8a0f325843eb47a682975e8c295fce45&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=029857967&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT indenmichael derwegzumjavaprofikonzepteundtechnikenfurdieprofessionellejavaentwicklung AT dpunktverlagheidelberg derwegzumjavaprofikonzepteundtechnikenfurdieprofessionellejavaentwicklung |