Der Weg zum Java-Profi Konzepte und Techniken für die professionelle Java-Entwicklung

Gespeichert in:
Bibliographische Detailangaben
1. Verfasser: Inden, Michael 1971- (VerfasserIn)
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&amp;prov=M&amp;dok_var=1&amp;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&amp;doc_library=BVB01&amp;local_base=BVB01&amp;doc_number=029857967&amp;sequence=000001&amp;line_number=0001&amp;func_code=DB_RECORDS&amp;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