Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.]
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Bonn
Galileo Pr.
2012
|
Ausgabe: | 1. Aufl. |
Schriftenreihe: | Galileo Computing
|
Schlagworte: | |
Online-Zugang: | kostenfrei Inhaltsverzeichnis |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV039550206 | ||
003 | DE-604 | ||
005 | 20221108 | ||
007 | t | ||
008 | 110829s2012 gw ad|| |||| 00||| ger d | ||
016 | 7 | |a 1013798112 |2 DE-101 | |
020 | |a 9783836215077 |9 978-3-8362-1507-7 | ||
020 | |a 3836215071 |9 3-8362-1507-1 | ||
035 | |a (OCoLC)750966170 | ||
035 | |a (DE-599)DNB1013798112 | ||
040 | |a DE-604 |b ger |e rakddb | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-NW | ||
049 | |a DE-91G |a DE-M347 |a DE-1051 |a DE-1050 |a DE-573 |a DE-Aug4 |a DE-20 |a DE-706 |a DE-858 |a DE-634 |a DE-29T |a DE-91 |a DE-739 |a DE-1046 |a DE-384 |a DE-863 |a DE-B768 |a DE-473 |a DE-M382 |a DE-83 |a DE-862 | ||
082 | 0 | |a 005.133 |2 22/ger | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a 68N15 |2 msc | ||
084 | |a 004 |2 sdnb | ||
084 | |a DAT 362f |2 stub | ||
100 | 1 | |a Ullenboom, Christian |e Verfasser |0 (DE-588)123404738 |4 aut | |
245 | 1 | 0 | |a Java 7 - mehr als eine Insel |b das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] |c Christian Ullenboom |
246 | 1 | 3 | |a Java sieben - mehr als eine Insel |
250 | |a 1. Aufl. | ||
264 | 1 | |a Bonn |b Galileo Pr. |c 2012 | |
300 | |a 1433 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Galileo Computing | |
500 | |a 2. Aufl. u.d.T.: Ullenboom, Christian: Java SE 8 Standard-Bibliothek | ||
650 | 0 | 7 | |a Java Standard Edition 7 |0 (DE-588)7751205-4 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Java Standard Edition 7 |0 (DE-588)7751205-4 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 1 | |u https://www.heise.de/download/product/java-7-mehr-als-eine-insel-85729/download |x Verlag |z kostenfrei |3 Volltext |
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=024402097&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
912 | |a ebook |
Datensatz im Suchindex
DE-473_call_number | 60/ST 250j35 GA 11703 |
---|---|
DE-473_location | 0 |
DE-BY-FWS_katkey | 418153 |
DE-BY-TUM_call_number | 0102/DAT 362f 2011 A 8708 |
DE-BY-TUM_katkey | 1779954 |
DE-BY-TUM_media_number | 040071380073 |
DE-BY-UBG_katkey | 2972933 |
DE-BY-UBG_local_notation | ST 250j35 |
DE-BY-UBG_media_number | 013907098229 |
_version_ | 1816713639981219840 |
adam_text |
IMAGE 1
AUF EINEN BLICK
1 NEUES IN JAVA 7 41
2 THREADS UND NEBENLAEUFIGE PROGRAMMIERUNG 65
3 DATENSTRUKTUREN UND ALGORITHMEN 175
4 RAUM UND ZEIT 305
5 DATEIEN, VERZEICHNISSE UND DATEIZUGRIFFE 357
6 DATENSTROEME 427
7 DIE EXTENSIBLE MARKUP LANGUAGE (XML) 531
8 DATEIFORMATE 617
9 GRAFISCHE OBERFLAECHEN MIT SWING 645
10 GRAFIKPROGRAMMIERUNG 865
11 NETZWERKPROGRAMMIERUNG 955
12 VERTEILTE PROGRAMMIERUNG MIT RMI 1035
13 RESTFUI UND SOAP WEB-SERVICES 1057
14 JAVASERVER PAGES UND SERVLETS 1079
15 APPLETS 1123
16 DATENBANKMANAGEMENT MIT JDBC 1139
17 TECHNOLOGIEN FUER DIE INFRASTRUKTUR 1207
18 REFLECTION UND ANNOTATIONEN 1227
19 DYNAMISCHE UEBERSETZUNG UND SKRIPTSPRACHEN 1289
20 LOGGING UND MONITORING 1315
21 JAVA NATIVE INTERFACE (JNI) 1337
22 SICHERHEITSKONZEPTE 1355
23 DIENSTPROGRAMME FUER DIE JAVA-UMGEBUNG 1381
BIBLIOGRAFISCHE INFORMATIONEN HTTP://D-NB.INFO/1013798112
DIGITALISIERT DURCH
IMAGE 2
INHALT
VORWORT 35
1 NEUES IN JAVA 7
1.1 SPRACHAENDERUNGEN 41
1.1.1 ZAHLEN IM BINAERSYSTEM SCHREIBEN 41
1.1.2 UNTERSTRICHE BEI GANZZAHLEN 41
1.1.3 SWITCH (STRING) 42
1.1.4 ZUSAMMENFASSEN GLEICHER CATCH-BLOECKE MIT DEM MULTI-CATCH 43 1.1.5
PRAEZISIERTES RETHROWS 47
1.1.6 AUTOMATISCHES RESSOURCEN-MANAGEMENT (TRY MIT RESSOURCEN) 51 1.1.7
TRY MIT RESSOURCEN 51
1.1.8 AUSNAHMEN VOM CLOSE() BLEIBEN BESTEHEN 53
1.1.9 DIE SCHNITTSTELLE AUTOCLOSEABLE 53
1.1.10 MEHRERE RESSOURCEN NUTZEN 55
1.1.11 UNTERDRUECKTE AUSNAHMEN * 56
1.2 JVM-AENDERUNGEN 59
1.2.1 INVOKEDYNAMIC 60
1.3 NEUE PAKETE UND KLASSEN 63
1.3.1 WEITERE AENDERUNGEN 63
2 THREADS UND NEBENLAEUFIGE PROGRAMMIERUNG
2.1 THREADS ERZEUGEN 65
2.1.1 THREADS UEBER DIE SCHNITTSTELLE RUNNABLE IMPLEMENTIEREN 65
2.1.2 THREAD MIT RUNNABLE STARTEN 66
2.1.3 DIE KLASSE THREAD ERWEITERN 68
2.2 THREAD-EIGENSCHAFTEN UND -ZUSTAENDE 71
2.2.1 DER NAME EINES THREADS 71
2.2.2 WER BIN ICH? 72
2.2.3 DIE ZUSTAENDE EINES THREADS * 72
IMAGE 3
2.2.4 SCHLAEFER GESUCHT 73
2.2.5 MITYIELD() AUF RECHENZEIT VERZICHTEN 75
2.2.6 DER THREAD ALS DAEMON 76
2.2.7 DAS ENDE EINES THREADS 78
2.2.8 EINEN THREAD HOEFLICH MIT INTERRUPT BEENDEN 79
2.2.9 UNCAUGHTEXCEPTIONHANDLER FUER UNBEHANDELTE AUSNAHMEN 81 2.2.10 DER
STOP() VON AUSSEN UND DIE RETTUNG MIT THREADDEATH * 82 2.2.11 EIN
RENDEZVOUS MIT JOIN() * 84
2.2.12 ARBEIT NIEDERLEGEN UND WIEDER AUFNEHMEN * 87
2.2.13 PRIORITAET* 87
2.3 DER AUSFUEHRER (EXECUTOR) KOMMT 88
2.3.1 DIE SCHNITTSTELLE EXECUTOR 89
2.3.2 DIE THREAD-POOLS 91
2.3.3 THREADS MIT RUECKGABE UEBER CALLABLE 92
2.3.4 MEHRERE CALLABLE ABARBEITEN 96
2.3.5 SCHEDULEDEXECUTORSERVICE FUER WIEDERHOLENDE AUSGABEN UND
ZEITSTEUERUNGEN NUTZEN 97
2.4 SYNCHRONISATION UEBER KRITISCHE ABSCHNITTE 98
2.4.1 GEMEINSAM GENUTZTE DATEN 98
2.4.2 PROBLEME BEIM GEMEINSAMEN ZUGRIFF UND KRITISCHE ABSCHNITTE 98
2.4.3 PUNKTE PARALLEL INITIALISIEREN 100
2.4.4 I++ SIEHT ATOMAR AUS, IST ES ABER NICHT * 102
2.4.5 KRITISCHE ABSCHNITTE SCHUETZEN 103
2.4.6 KRITISCHE ABSCHNITTE MIT REENTRANTLOCK SCHUETZEN 106
2.4.7 SYNCHRONISIEREN MIT SYNCHRONIZED 113
2.4.8 SYNCHRONIZED-METHODEN DER KLASSE STRINGBUFFER * 114
2.4.9 MIT SYNCHRONIZED SYNCHRONISIERTE BLOECKE 115
2.4.10 DANN MACHEN WIR DOCH GLEICH ALLES SYNCHRONISIERT! 117
2.4.11 LOCK-FREIGABE IM FALL VON EXCEPTIONS 118
2.4.12 DEADLOCKS 119
2.4.13 MIT SYNCHRONIZED NACHTRAEGLICH SYNCHRONISIEREN * 121
2.4.14 MONITORE SIND REENTRANT - GUT FUER DIE GESCHWINDIGKEIT * 122
2.4.15 SYNCHRONISIERTE METHODENAUFRUFE ZUSAMMENFASSEN * 123
2.5 SYNCHRONISATION UEBER WARTEN UND BENACHRICHTIGEN 124
2.5.1 DIE SCHNITTSTELLE CONDITION 125
2.5.2 IT'S DISCO-TIME * 129
IMAGE 4
2.5.3 WARTEN MIT WAIT() UND AUFWECKEN MIT NOTIFYQ * 135
2.5.4 FALLS DER LOCK FEHLT: ILLEGALMONITORSTATEEXCEPTION * 136
2.6 DATENSYNCHRONISATION DURCH BESONDERE CONCURRENCY-KLASSEN * 138 2.6.1
SEMAPHOR 138
2.6.2 BARRIER UND AUSTAUSCH 143
2.6.3 STOP AND GO MIT EXCHANGER 145
2.7 ATOMARE OPERATIONEN UND FRISCHE WERTE MIT VOLATILE * 145
2.7.1 DER MODIFIZIERER VOLATILE BEI OBJEKT-/KLASSENVARIABLEN 146
2.7.2 DAS PAKET JAVA.UTIL.CONCURRENT.ATOMIC 148
2.8 TEILE UND HERRSCHE MIT FORK UND JOIN * 149
2.8.1 ALGORITHMENDESIGN PER »TEILE UND HERRSCHE 149
2.8.2 PARALLELES LOESEN VON D&C-ALGORITHMEN 151
2.8.3 FORK UND JOIN 152
2.9 MIT DEM THREAD VERBUNDENE VARIABLEN * 156
2.9.1 THREADLOCAL 156
2.9.2 INHERITABLETHREADLOCAL 159
2.9.3 THREADLOCALRANDOM ALS ZUFALLSZAHLENGENERATOR 160
2.9.4 THREADLOCAL BEI DER PERFORMANCE-OPTIMIERUNG 161
2.10 THREADS IN EINER THREAD-GRUPPE * 162
2.10.1 AKTIVE THREADS IN DER UMGEBUNG 162
2.10.2 ETWAS UEBER DIE AKTUELLE THREAD-GRUPPE HERAUSFINDEN 163 2.10.3
THREADS IN EINER THREAD-GRUPPE ANLEGEN 166
2.10.4 METHODEN VON THREAD UND THREADGROUP IM VERGLEICH 169
2.11 ZEITGESTEUERTE ABLAEUFE 170
2.11.1 DIE TYPEN TIMER UND TIMERTASK 171
2.11.2 JOB-SCHEDULER QUARTZ 172
2.12 EINEN ABBRUCH DER VIRTUELLEN MASCHINE ERKENNEN 173
2.13 ZUM WEITERLESEN 174
3 DATENSTRUKTUREN UND ALGORITHMEN
3.1 DATENSTRUKTUREN UND DIE COLLECTION-API 175
3.1.1 DESIGNPRINZIP MIT SCHNITTSTELLEN, ABSTRAKTEN UND KONKRETEN KLASSEN
176
3.1.2 DIE BASIS-SCHNITTSTELLEN COLLECTION UND MAP 176
3.1.3 DIE UTILITY-KLASSEN COLLECTIONS UND ARRAYS 177
IMAGE 5
3.1.4 DAS ERSTE PROGRAMM MIT CONTAINER-KLASSEN 177
3.1.5 DIE SCHNITTSTELLE COLLECTION UND KERNKONZEPTE 178
3.1.6 SCHNITTSTELLEN, DIE COLLECTION ERWEITERN, UND MAP 182
3.1.7 KONKRETE CONTAINER-KLASSEN 185
3.1.8 GENERISCHE DATENTYPEN IN DER COLLECTION-API 187
3.1.9 DIE SCHNITTSTELLE ITERABLE UND DAS ERWEITERTE FOR 187
3.2 LISTEN 188
3.2.1 ERSTES LISTEN-BEISPIEL 189
3.2.2 AUSWAHLKRITERIUM ARRAYLIST ODER LINKEDLIST 190
3.2.3 DIE SCHNITTSTELLE LIST 191
3.2.4 ARRAYLIST 197
3.2.5 LINKEDLIST 200
3.2.6 DER FELD-ADAPTER ARRAYS.ASLISTQ 201
3.2.7 LISTLTERATOR * 202
3.2.8 TOARRAY() VON COLLECTION VERSTEHEN - DIE GEFAHR EINER FALLE
ERKENNEN 204 3.2.9 PRIMITIVE ELEMENTE IN DATENSTRUKTUREN VERWALTEN 207
3.3 MENGEN (SETS) 208
3.3.1 EIN ERSTES MENGEN-BEISPIEL 209
3.3.2 METHODEN DER SCHNITTSTELLE SET 212
3.3.3 HASHSET 213
3.3.4 TREESET - DIE SORTIERTE MENGE 214
3.3.5 DIE SCHNITTSTELLEN NAVIGABLESET UND SORTEDSET 216
3.3.6 LINKEDHASHSET 218
3.4 STACK (KELLERSPEICHER, STAPEL) 218
3.4.1 DIE METHODEN VON STACK 219
3.5 QUEUES (SCHLANGEN) UND DEQUES 220
3.5.1 QUEUE-KLASSEN 221
3.5.2 DEQUE-KLASSEN 222
3.5.3 BLOCKIERENDE QUEUES UND PRIORITAETSWARTESCHLANGEN 223
3.5.4 PRIORITYQUEUE 223
3.6 ASSOZIATIVE SPEICHER 228
3.6.1 DIE KLASSEN HASHMAP UND TREEMAP 228
3.6.2 EINFUEGEN UND ABFRAGEN DER DATENSTRUKTUR 231
3.6.3 UEBER DIE BEDEUTUNG VON EQUALS() UND HASHCODE() 234
3.6.4 EIGENE OBJEKTE HASHEN 235
3.6.5 IDENTITYHASHMAP 237
3.6.6 DAS PROBLEM VON VERAENDERTEN ELEMENTEN 237
IMAGE 6
3.6.7 AUFZAEHLUNGEN UND ANSICHTEN DES ASSOZIATIVSPEICHERS 237
3.6.8 DIE ARBEITSWEISE EINER HASH-TABELLE * 241
3.7 DIE PROPERTIES-KLASSE 243
3.7.1 PROPERTIES SETZEN UND LESEN 243
3.7.2 PROPERTIES VERKETTEN 244
3.7.3 HIERARCHISCHE EIGENSCHAFTEN 245
3.7.4 EIGENSCHAFTEN AUF DER KONSOLE AUSGEBEN * 245
3.7.5 PROPERTIES LADEN UND SPEICHERN 246
3.7.6 KLASSENBEZIEHUNGEN: PROPERTIES UND HASHTABLE * 248
3.8 MIT EINEM ITERATOR DURCH DIE DATEN WANDERN 249
3.8.1 DIE SCHNITTSTELLE ITERATOR 249
3.8.2 DER ITERATOR KANN (EVENTUELL AUCH) LOESCHEN 251
3.8.3 EINEN ZUFALLSZAHLENITERATOR SCHREIBEN 252
3.8.4 ITERATOREN VON SAMMLUNGEN, DAS ERWEITERTE FOR UND ITERABLE 254
3.8.5 FAIL-FAST-ITERATOR UND DIE CONCURRENTMODIFICATIONEXCEPTION 258
3.8.6 DIE SCHNITTSTELLE ENUMERATOR * 260
3.9 ALGORITHMEN IN COLLECTIONS 261
3.9.1 DIE BEDEUTUNG VON ORDNUNG MIT COMPARATOR UND COMPARABLE 263 3.9.2
SORTIEREN 264
3.9.3 DEN GROESSTEN UND KLEINSTEN WERT EINER COLLECTION FINDEN 267 3.9.4
NICHT-AENDERBARE DATENSTRUKTUREN, IMMUTABLE ODER NUR-LESEN? 270 3.9.5
NULL OBJECT PATTERN UND LEERE SAMMLUNGEN/ITERATOREN ZURUECKGEBEN 274
3.9.6 MIT DER HALBIERUNGSSUCHE NACH ELEMENTEN FAHNDEN 278
3.9.7 ERSETZEN, KOPIEREN, FUELLEN, UMDREHEN, ROTIEREN * 279
3.9.8 LISTEN DURCHWUERFELN * 281
3.9.9 HAEUFIGKEIT EINES ELEMENTS * 282
3.9.10 SINGLETONS* 282
3.9.11 NCOPIES()* 283
3.10 SPEZIELLE THREAD-SICHERE DATENSTRUKTUREN 284
3.10.1 WAIT-FREE-ALGORITHMEN 284
3.10.2 NEBENLAEUFIGER ASSOZIATIVSPEICHER UND DIE SCHNITTSTELLE
CONCURRENTMAP 284
3.10.3 CONCURRENTLINKEDQUEUE 285
3.10.4 COPYONWRITEARRAYLIST UND COPYONWRITEARRAYSET 285 3.10.5 WRAPPER
ZUR SYNCHRONISATION 286
3.10.6 BLOCKIERENDE WARTESCHLANGEN 287
IMAGE 7
3.10.7 ARRAYBLOCKINGQUEUE UND LINKEDBLOCKINGQUEUE 287
3.10.8 PRIORITYBLOCKINGQUEUE 290
3.11 GOOGLE GUAVA (AKA GOOGLE COLLECTIONS LIBRARY) 294
3.11.1 BEISPIEL MULTI-SET UND MULTI-MAP 294
3.11.2 DATENSTRUKTUREN AUS GUAVA 295
3.11.3 UTILITY-KLASSEN VON GUAVA 297
3.11.4 PRAEDIKATE 298
3.11.5 TRANSFORMATIONEN 299
3.12 DIE KLASSE BITSET FUER BITMENGEN * 299
3.12.1 EIN BITSET ANLEGEN, FUELLEN UND ERFRAGEN 300
3.12.2 MENGENORIENTIERTE OPERATIONEN 301
3.12.3 METHODENUEBERSICHT 302
3.12.4 PRIMZAHLEN IN EINEM BITSET VERWALTEN 304
3.13 ZUM WEITERLESEN 304
4 RAUM UND ZEIT
4.1 WELTZEIT* 305
4.2 WICHTIGE DATUM-KLASSEN IM UEBERBLICK 306
4.2.1 DER 1.1.1970 307
4.2.2 SYSTEM.CURRENTTIMEMILLIS() 307
4.2.3 EINFACHE ZEITUMRECHNUNGEN DURCH TIMEUNIT 307
4.3 SPRACHEN DER LAENDER 308
4.3.1 SPRACHEN UND REGIONEN UEBER LOCALE-OBJEKTE 309
4.4 INTERNATIONALISIERUNG UND LOKALISIERUNG 312
4.4.1 RESOURCEBUNDLE-OBJEKTE UND RESSOURCE-DATEIEN 313
4.4.2 RESSOURCE-DATEIEN ZUR LOKALISIERUNG 314
4.4.3 DIE KLASSE RESOURCEBUNDLE 314
4.4.4 LADESTRATEGIE FUER RESOURCEBUNDLE-OBJEKTE 316
4.5 DIE KLASSE DATE 317
4.5.1 OBJEKTE ERZEUGEN UND METHODEN NUTZEN 317
4.5.2 DATE-OBJEKTE SIND NICHT IMMUTABLE 319
4.6 CALENDAR UND GREGORIANCALENDAR 320
4.6.1 DIE ABSTRAKTE KLASSE CALENDAR 320
4.6.2 DER GREGORIANISCHE KALENDER 322
10
IMAGE 8
4.6.3 CALENDAR NACH DATE UND MILLISEKUNDEN FRAGEN 325
4.6.4 OSTERTAGE* 326
4.6.5 ABFRAGEN UND SETZEN VON DATUMSELEMENTEN UEBER FELDBEZEICHNER 328
4.6.6 WIE VIELE TAGE HAT DER MONAT, ODER WIE VIELE MONATE HAT EIN JAHR?
* 333 4.6.7 WANN BEGINNT DIE WOCHE UND WANN DIE ERSTE WOCHE IM JAHR? *
335
4.7 ZEITZONEN IN JAVA * 336
4.7.1 ZEITZONEN DURCH DIE KLASSE TIMEZONE REPRAESENTIEREN 337
4.7.2 SIMPLETIMEZONE 337
4.7.3 METHODEN VON TIMEZONE 339
4.8 ZEITDAUERN UND DER XML-DATENTYP DURATION * 340
4.8.1 DATATYPEFACTORY ALS FABRIK 341
4.8.2 DIE DURATION-KLASSE UND IHRE METHODEN 342
4.9 FORMATIEREN UND PARSEN VON DATUMSANGABEN 345
4.9.1 AUSGABEN MIT PRINTF() 345
4.9.2 MIT DATEFORMAT UND SIMPLEDATEFORMAT FORMATIEREN 346
4.9.3 PARSEN VON DATUMSWERTEN 352
4.10 ZUM WEITERLESEN 355
5 DATEIEN, VERZEICHNISSE UND DATEIZUGRIFFE
5.1 DATEI UND VERZEICHNIS 357
5.1.1 DATEIEN UND VERZEICHNISSE MIT DER KLASSE FILE 358
5.1.2 VERZEICHNIS ODER DATEI? EXISTIERT ES? 361
5.1.3 VERZEICHNIS- UND DATEIEIGENSCHAFTEN/-ATTRIBUTE 362
5.1.4 UMBENENNEN UND VERZEICHNISSE ANLEGEN 365
5.1.5 VERZEICHNISSE AUFLISTEN UND DATEIEN FILTERN 365
5.1.6 DATEIEN BERUEHREN, NEUE DATEIEN ANLEGEN, TEMPORAERE DATEIEN 369
5.1.7 DATEIEN UND VERZEICHNISSE LOESCHEN 370
5.1.8 VERZEICHNISSE NACH DATEIEN ITERATIV DURCHSUCHEN * 372
5.1.9 WURZELVERZEICHNIS, LAUFWERKSNAMEN, PLATTENSPEICHER * 373 5.1.10
URL-, URI- UND PATH-OBJEKTE AUS EINEM FILE-OBJEKT ABLEITEN * 376 5.1.11
MIT LOCKING DATEIEN SPERREN * 376
5.1.12 SICHERHEITSPRUEFUNG* 377
5.1.13 ZUGRIFF AUF SMB-SERVER MIT JCIFS * 378
11
IMAGE 9
5.2 DATEIEN MIT WAHLFREIEM ZUGRIFF 378
5.2.1 EIN RANDOMACCESSFILE ZUM LESEN UND SCHREIBEN OEFFNEN 379
5.2.2 AUS DEM RANDOMACCESSFILE LESEN 380
5.2.3 SCHREIBEN MIT RANDOMACCESSFILE 383
5.2.4 DIE LAENGE DES RANDOMACCESSFILE 384
5.2.5 HIN UND HER IN DER DATEI 384
5.3 DATEISYSTEME UNTER NIO.2 385
5.3.1 FILESYSTEM UND PATH 386
5.3.2 DIE UTILITY-KLASSE FILES 392
5.3.3 DATEIEN KOPIEREN UND VERSCHIEBEN 395
5.3.4 DATEIATTRIBUTE* 397
5.3.5 NEUE DATEIEN, VERZEICHNISSE, SYMBOLISCHE VERKNUEPFUNGEN ANLEGEN UND
LOESCHEN 406
5.3.6 MIME-TYPEN TESTEN * 408
5.3.7 VERZEICHNISLISTINGS (DIRECTORYSTREAM) UND FILTER * 410
5.3.8 REKURSIVE ABLAEUFE DES VERZEICHNISBAUMS (FILEVISITOR) * 412
5.3.9 DATEISYSTEME UND DATEISYSTEMATTRIBUTE * 416
5.3.10 VERZEICHNISSE IM DATEISYSTEM UEBERWACHEN * 420
5.4 WAHLFREIER ZUGRIFF MIT SEEKABLEBYTECHANNEL UND BYTEBUFFER * 422
5.4.1 SEEKABLEBYTECHANNEL 422
5.4.2 BYTEBUFFER 423
5.4.3 BEISPIEL MIT PATH + SEEKABLEBYTECHANNEL + BYTEBUFFER 423
5.4.4 FILECHANNEL 424
5.5 ZUM WEITERLESEN 426
6 DATENSTROEME
6.1 STREAM-KLASSEN UND READER/WRITER AM BEISPIEL VON DATEIEN 427
6.1.1 MIT DEM FILEWRITER TEXTE IN DATEIEN SCHREIBEN 428
6.1.2 ZEICHEN MIT DER KLASSE FILEREADER LESEN 430
6.1.3 KOPIEREN MIT FILEOUTPUTSTREAM UND FILELNPUTSTREAM 431
6.1.4 DAS FILEDESCRIPTOR-OBJEKT * 435
6.1.5 DATENSTROEME UEBER FILES MIT NIO.2 BEZIEHEN 436
6.2 BASISKLASSEN FUER DIE EIN-/AUSGABE 438
6.2.1 DIE ABSTRAKTEN BASISKLASSEN 438
6.2.2 UEBERSICHT UEBER EIN-/AUSGABEKLASSEN 439
12
IMAGE 10
6.2.3 DIE ABSTRAKTE BASISKLASSE OUTPUTSTREAM 441
6.2.4 DIE SCHNITTSTELLEN CLOSEABLE, AUTOCLOSEABLE UND FLUSHABLE 443
6.2.5 EIN DATENSCHLUCKER * 444
6.2.6 DIE ABSTRAKTE BASISKLASSE INPUTSTREAM 445
6.2.7 RESSOURCEN AUS DEM KLASSENPFAD UND AUS JAR-ARCHIVEN LADEN 446
6.2.8 STROEME MIT SEQUENCELNPUTSTREAM ZUSAMMENSETZEN * 447
6.2.9 DIE ABSTRAKTE BASISKLASSE WRITER 449
6.2.10 DIE SCHNITTSTELLE APPENDABLE * 451
6.2.11 DIE ABSTRAKTE BASISKLASSE READER 451
6.3 FORMATIERTE TEXTAUSGABEN 454
6.3.1 DIE KLASSEN PRINTWRITER UND PRINTSTREAM 455
6.3.2 SYSTEM.OUT, SYSTEM.ERR UND SYSTEM.IN 460
6.4 SCHREIBEN UND LESEN AUS STRINGS UND BYTE-FELDERN 462
6.4.1 MIT DEM STRINGWRITER EIN STRING-OBJEKT FUELLEN 463
6.4.2 CHARARRAYWRITER 464
6.4.3 STRINGREADER UND CHARARRAYREADER 465
6.4.4 MIT BYTEARRAYOUTPUTSTREAM IN EIN BYTE-FELD SCHREIBEN 467 6.4.5 MIT
BYTEARRAYLNPUTSTREAM AUS EINEM BYTE-FELD LESEN 467
6.5 DATENSTROEME FILTERN UND VERKETTEN 468
6.5.1 STREAMS ALS FILTER VERKETTEN (VERSCHACHTELN) 469
6.5.2 GEPUFFERTE AUSGABEN MIT BUFFEREDWRITER UND BUFFEREDOUTPUTSTREAM
469 6.5.3 GEPUFFERTE EINGABEN MIT BUFFEREDREADER/BUFFEREDLNPUTSTREAM 471
6.5.4 LINENUMBERREADER ZAEHLT AUTOMATISCH ZEILEN MIT * 474
6.5.5 DATEN MIT DER KLASSE PUSHBACKREADER ZURUECKLEGEN * 474
6.5.6 DATAOUTPUTSTREAM/DATALNPUTSTREAM * 478
6.5.7 BASISKLASSEN FUER FILTER * 478
6.5.8 DIE BASISKLASSE FILTERWRITER * 479
6.5.9 EIN LOWERCASEWRITER * 480
6.5.10 EINGABEN MIT DER KLASSE FILTERREADER FILTERN * 482
6.5.11 ANWENDUNGEN FUER FILTERREADER UND FILTERWRITER * 483
6.6 VERMITTLER ZWISCHEN BYTE-STREAMS UND UNICODE-STROEMEN 491
6.6.1 DATENKONVERTIERUNG DURCH DEN OUTPUTSTREAMWRITER 491
6.6.2 AUTOMATISCHE KONVERTIERUNGEN MIT DEM INPUTSTREAMREADER 492
6.7 KOMMUNIKATION ZWISCHEN THREADS MIT PIPES * 493
6.7.1 PIPEDOUTPUTSTREAM UND PIPEDLNPUTSTREAM 494
6.7.2 PIPEDWRITER UND PIPEDREADER 496
13
IMAGE 11
6.8 PRUEFSUMMEN 4 98
6.8.1 DIE SCHNITTSTELLE CHECKSUM 498
6.8.2 DIE KLASSE CRC32 499
6.8.3 DIE ADLER32-KLASSE 501
6.9 PERSISTENTE OBJEKTE UND SERIALISIERUNG 502
6.9.1 OBJEKTE MIT DER STANDARD-SERIALISIERUNG SPEICHERN UND LESEN 503
6.9.2 ZWEI EINFACHE ANWENDUNGEN DER SERIALISIERUNG * 506
6.9.3 DIE SCHNITTSTELLE SERIALIZABLE 507
6.9.4 NICHT SERIALISIERBARE ATTRIBUTE AUSSPAREN 509
6.9.5 DAS ABSPEICHERN SELBST IN DIE HAND NEHMEN 511
6.9.6 TIEFE OBJEKTKOPIEN * 515
6.9.7 VERSIONENVERWALTUNG UND DIE SUID 517
6.9.8 WIE DIE ARRAYLIST SERIALISIERT * 519
6.9.9 PROBLEME MIT DER SERIALISIERUNG 520
6.10 ALTERNATIVE DATENAUSTAUSCHFORMATE 522
6.10.1 SERIALISIEREN IN XML-DATEIEN 522
6.10.2 XML-SERIALISIERUNG VON JAVABEANS MIT JAVABEANS PERSISTENCE * 522
6.10.3 DIE OPEN-SOURCE-BIBLIOTHEK XSTREAM * 525
6.10.4 BINAERE SERIALISIERUNG MIT GOOGLE PROTOCOL BUFFERS * 526
6.11 TOKENIZER* 526
6.11.1 STREAMTOKENIZER 526
6.12 ZUM WEITERLESEN 529
7 DIE EXTENSIBLE MARKUP LANGUAGE (XML)
7.1 AUSZEICHNUNGSSPRACHEN 531
7.1.1 DIE STANDARD GENERALIZED MARKUP LANGUAGE (SGML) 532
7.1.2 EXTENSIBLE MARKUP LANGUAGE (XML) 532
7.2 EIGENSCHAFTEN VON XML-DOKUMENTEN 533
7.2.1 ELEMENTE UND ATTRIBUTE 533
7.2.2 BESCHREIBUNGSSPRACHE FUER DEN AUFBAU VON XML-DOKUMENTEN 535 7.2.3
SCHEMA - EINE ALTERNATIVE ZU DTD 539
7.2.4 NAMENSRAUM (NAMESPACE) 542
7.2.5 XML-APPLIKATIONEN* 543
14
IMAGE 12
7.3 DIE JAVA-APIS FUER XML 544
7.3.1 DAS DOCUMENT OBJECT MODEL (DOM) 545
7.3.2 SIMPLE API FOR XML PARSING (SAX) 545
7.3.3 PULL-API STAX 545
7.3.4 JAVA DOCUMENT OBJECT MODEL (JDOM) 545
7.3.5 JAXP ALS JAVA-SCHNITTSTELLE ZU XML 546
7.3.6 DOM-BAEUME EINLESEN MIT JAXP * 547
7.4 JAVA ARCHITECTURE FOR XML BINDING (JAXB) 548
7.4.1 BEAN FUER JAXB AUFBAUEN 548
7.4.2 JAXBCONTEXT UND DIE MARSHALLER 549
7.4.3 GANZE OBJEKTGRAPHEN SCHREIBEN UND LESEN 550
7.4.4 VALIDIERUNG 553
7.4.5 WEITERE JAXB-ANNOTATIONEN * 557
7.4.6 BEANS AUS XML-SCHEMA-DATEI GENERIEREN 565
7.5 SERIELLE VERARBEITUNG MIT STAX 570
7.5.1 UNTERSCHIEDE DER VERARBEITUNGSMODELLE 571
7.5.2 XML-DATEIEN MIT DEM CURSOR-VERFAHREN LESEN 572
7.5.3 XML-DATEIEN MIT DEM ITERATOR-VERFAHREN VERARBEITEN * 576
7.5.4 MIT FILTERN ARBEITEN * 578
7.5.5 XML-DOKUMENTE SCHREIBEN 579
7.6 SERIELLE VERARBEITUNG VON XML MIT SAX * 582
7.6.1 SCHNITTSTELLEN VON SAX 583
7.6.2 SAX-PARSER ERZEUGEN 584
7.6.3 OPERATIONEN DER SCHNITTSTELLE CONTENTHANDLER 584
7.6.4 ERRORHANDLER UND ENTITYRESOLVER 587
7.7 XML-DATEIEN MIT JDOM VERARBEITEN 588
7.7.1 JDOM BEZIEHEN 588
7.7.2 PAKETUEBERSICHT* 588
7.7.3 DIE DOCUMENT-KLASSE 590
7.7.4 EINGABEN AUS DER DATEI LESEN 591
7.7.5 DAS DOKUMENT IM XML-FORMAT AUSGEBEN 592
7.7.6 DER DOKUMENTTYP * 593
7.7.7 ELEMENTE 594
7.7.8 ZUGRIFF AUF ELEMENTINHALTE '. 597
7.7.9 LISTE MIT UNTERELEMENTEN ERZEUGEN * 599
7.7.10 NEUE ELEMENTE EINFUEGEN UND AENDERN 600
15
IMAGE 13
7.7.11 ATTRIBUTINHALTE LESEN UND AENDERN 603
7.7.12 XPATH 606
7.8 TRANSFORMATIONEN MIT XSLT * 610
7.8.1 TEMPLATES UND XPATH ALS KERNELEMENTE VON XSLT 610
7.8.2 UMWANDLUNG VON XML-DATEIEN MIT JDOM UND JAXP 613
7.9 XML-SCHEMA-VALIDIERUNG* 614
7.9.1 SCHEMAFACTORY UND SCHEMA 614
7.9.2 VALIDATOR 614
7.9.3 VALIDIERUNG UNTERSCHIEDLICHER DATENQUELLEN DURCHFUEHREN 615
7.10 ZUM WEITERLESEN 615
8 DATEIFORMATE
8.1 EINFACHE DATEIFORMATE FUER STRUKTURIERTE DATEN 618
8.1.1 PROPERTY-DATEIEN 618
8.1.2 CSV-DATEIEN. 618
8.1.3 JSON-SERIALISIERUNG MIT JACKSON 619
8.2 DOKUMENTENFORMATE 620
8.2.1 (X)HTML 620
8.2.2 PDF-DOKUMENTE . 622
8.2.3 MICROSOFT OFFICE-DOKUMENTE 622
8.2.4 OASIS OPEN DOCUMENT FORMAT 624
8.3 DATENKOMPRESSION* 624
8.3.1 JAVA-UNTERSTUETZUNG BEIM KOMPRIMIEREN 625
8.3.2 DATEN PACKEN UND ENTPACKEN 626
8.3.3 DATENSTROEME KOMPRIMIEREN 627
8.3.4 ZIP-ARCHIVE 632
8.3.5 JAR-ARCHIVE 640
8.4 BILD-FORMATE 640
8.5 AUDIO-DATEIEN 640
8.5.1 DIE ARBEIT MIT AUDIOCLIP 640
8.5.2 MIDI-DATEIEN ABSPIELEN 641
16
IMAGE 14
GRAFISCHE OBERFLAECHEN MIT SWING
9.1 FENSTER ZUR WELT 645
9.1.1 SWING-FENSTER MIT JAVAX.SWING.JFRAME DARSTELLEN 645
9.1.2 FENSTER SCHLIESSBAR MACHEN - SETDEFAULTCLOSEOPERATION() 647
9.1.3 SICHTBARKEIT DES FENSTERS 648
9.1.4 GROESSE UND POSITION DES FENSTERS VERAENDERN 648
9.1.5 FENSTER- UND DIALOG-DEKORATION, TRANSPARENZ * 649
9.1.6 DIE KLASSE TOOLKIT * 650
9.1.7 DYNAMISCHES LAYOUT WAEHREND EINER GROESSENAENDERUNG * 651
9.1.8 ZUM VERGLEICH: AWT-FENSTER DARSTELLEN * 651
9.2 BESCHRIFTUNGEN (JLABEL) 653
9.2.1 MEHRZELLIGER TEXT, HTML IN DER DARSTELLUNG 656
9.3 ICON UND IMAGELCON FUER BILDER AUF SWING-KOMPONENTEN 657
9.3.1 DIE KLASSE IMAGELCON 657
9.3.2 DIE SCHNITTSTELLE ICON UND EIGENE ICONS ZEICHNEN * 659
9.4 ES TUT SICH WAS - EREIGNISSE BEIM AWT 661
9.4.1 DIE EREIGNISQUELLEN UND HORCHER (LISTENER) VON SWING 662
9.4.2 LISTENER IMPLEMENTIEREN 663
9.4.3 LISTENER BEI DEM EREIGNISAUSLOESER ANMELDEN/ABMELDEN 666
9.4.4 ADAPTERKLASSEN NUTZEN 668
9.4.5 INNERE MITGLIEDSKLASSEN UND INNERE ANONYME KLASSEN 670
9.4.6 AUFRUFEN DER LISTENER IM AWT-EVENT-THREAD 672
9.4.7 EREIGNISSE, ETWAS GENAUER BETRACHTET * 673
9.5 SCHALTFLAECHEN 676
9.5.1 NORMALE SCHALTFLAECHEN (JBUTTON) 676
9.5.2 DER AUFMERKSAME ACTIONLISTENER 678
9.5.3 SCHALTFLAECHEN-EREIGNISSE VOM TYP ACTIONEVENT 679
9.5.4 BASISKLASSE ABSTRACTBUTTON 680
9.5.5 WECHSELKNOPF (JTOGGLEBUTTON) 682
9.6 TEXTKOMPONENTEN 683
9.6.1 TEXT IN EINER EINGABEZEILE 684
9.6.2 DIE OBERKLASSE DER TEXT-KOMPONENTEN (JTEXTCOMPONENT) 685
9.6.3 GESCHUETZTE EINGABEN (JPASSWORDFIELD) 686
9.6.4 VALIDIERENDE EINGABEFELDER (JFORMATTEDTEXTFIELD) 687
9.6.5 EINFACHE MEHRZEILIGE TEXTFELDER (JTEXTAREA) 688
9.6.6 EDITOR-KLASSE (JEDITORPANE) * 692
17
IMAGE 15
9.7 SWING ACTION * 694
9.8 JCOMPONENT UND COMPONENT ALS BASIS ALLER KOMPONENTEN 697
9.8.1 HINZUFUEGEN VON KOMPONENTEN 697
9.8.2 TOOLTIPS (KURZHINWEISE) 698
9.8.3 RAHMEN (BORDER) * 699
9.8.4 FOKUS UND NAVIGATION * 701
9.8.5 EREIGNISSE JEDER KOMPONENTE * 702
9.8.6 DIE GROESSE UND POSITION EINER KOMPONENTE * 706
9.8.7 KOMPONENTEN-EREIGNISSE * 707
9.8.8 UI-DELEGATE - DER WAHRE ZEICHNER * 708
9.8.9 UNDURCHSICHTIGE (OPAKE) KOMPONENTE * 711
9.8.10 PROPERTIES UND LISTENER FUER AENDERUNGEN * 711
9.9 CONTAINER 711
9.9.1 STANDARDCONTAINER (JPANEL) 712
9.9.2 BEREICH MIT AUTOMATISCHEN ROLLBALKEN (JSCROLLPANE) 713
9.9.3 REITER (JTABBEDPANE) 714
9.9.4 TEILUNGSKOMPONENTE (JSPLITPANE) 715
9.10 ALLES AUSLEGUNGSSACHE: DIE LAYOUTMANAGER 716
9.10.1 UEBERSICHT UEBER LAYOUTMANAGER 717
9.10.2 ZUWEISEN EINES LAYOUTMANAGERS 717
9.10.3 IM FLUSS MIT FLOWLAYOUT 718
9.10.4 BOXLAYOUT 720
9.10.5 MIT BORDERLAYOUT IN ALLE HIMMELSRICHTUNGEN 721
9.10.6 RASTERANORDNUNG MIT GRIDLAYOUT 724
9.10.7 DER GRIDBAGLAYOUTMANAGER * 725
9.10.8 NULL-LAYOUT* 731
9.10.9 WEITERE LAYOUTMANAGER 732
9.11 ROLLBALKEN UND SCHIEBEREGLER 733
9.11.1 SCHIEBEREGLER (JSLIDER) 733
9.11.2 ROLLBALKEN (JSCROLLBAR) * 734
9.12 KONTROLLFELDER, OPTIONSFELDER, KONTROLLFELDGRUPPEN 739
9.12.1 KONTROLLFELDER (JCHECKBOX) 740
9.12.2 ITEMSELECTABLE, ITEMLISTENER UND DAS ITEMEVENT 741
9.12.3 SICH GEGENSEITIG AUSSCHLIESSENDE OPTIONEN (JRADIOBUTTON) 743
9.13 FORTSCHRITTE BEI OPERATIONEN UEBERWACHEN * 745
9.13.1 FORTSCHRITTSBALKEN (JPROGRESSBAR) 745
9.13.2 DIALOG MIT FORTSCHRITTSANZEIGE (PROGRESSMONITOR) 748
18
IMAGE 16
9.14 MENUES UND SYMBOLLEISTEN 748
9.14.1 DIE MENUELEISTEN UND DIE EINTRAEGE 748
9.14.2 MENUEEINTRAEGE DEFINIEREN 750
9.14.3 EINTRAEGE DURCH ACTION-OBJEKTE BESCHREIBEN 751
9.14.4 MIT DER TASTATUR: MNEMONICS UND SHORTCUT 752
9.14.5 DERTASTATUR-SHORTCUT (ACCELERATOR) 753
9.14.6 TASTENKUERZEL (MNEMONICS) 755
9.14.7 SYMBOLLEISTEN ALIAS TOOLBARS 756
9.14.8 POPUP-MENUES 759
9.14.9 SYSTEM-TRAY NUTZEN * 764
9.15 DAS MODEL-VIEW-CONTROLLER-KONZEPT 765
9.16 AUSWAHLMENUES, LISTEN UND SPINNER 767
9.16.1 LISTEN (JLIST) 767
9.16.2 AUSWAHLMENUE (JCOMBOBOX) 775
9.16.3 DREHFELD (JSPINNER) * 787
9.16.4 DATUMSAUSWAHL* 789
9.17 TABELLEN (JTABLE) 789
9.17.1 EIN EIGENES TABELLEN-MODEL 791
9.17.2 BASISKLASSE FUER EIGENE MODELLE (ABSTRACTTABLEMODEL) 792
9.17.3 EIN VORGEFERTIGTES STANDARD-MODELL (DEFAULTTABLEMODEL) 796 9.17.4
EIN EIGENER RENDERER FUER TABELLEN 798
9.17.5 ZEIL-EDITOREN 801
9.17.6 GROESSE UND UMRANDUNG DER ZELLEN * 803
9.17.7 SPALTENINFORMATIONEN* 803
9.17.8 TABELLENKOPF VON SWING-TABELLEN * 804
9.17.9 SELEKTIONEN EINER TABELLE * 805
9.17.10 AUTOMATISCHES SORTIEREN UND FILTERN MIT ROWSORTER * 806
9.18 BAEUME (JTREE) 809
9.18.1 JTREE UND SEIN TREEMODEL UND TREENODE 809
9.18.2 SELEKTIONEN BEMERKEN 811
9.18.3 DAS TREEMODEL VON JTREE * 811
9.19 JROOTPANE UND JDESKTOPPANE * 815
9.19.1 WURZELKOMPONENTE DER TOP-LEVEL-KOMPONENTEN (JROOTPANE) 815
9.19.2 JDESKTOPPANE UND DIE KINDER VON JINTERNALFRAME 815
9.19.3 JLAYEREDPANE 817
9.20 DIALOGE UND WINDOW-OBJEKTE 818
9.20.1 JWINDOW UND JDIALOG 818
19
IMAGE 17
9.20.2 MODAL ODER NICHT-MODAL? 819
9.20.3 STANDARDDIALOGE MIT JOPTIONPANE 820
9.20.4 DER DATEIAUSWAHLDIALOG 823
9.20.5 DER FARBAUSWAHLDIALOG JCOLORCHOOSER * 827
9.21 FLEXIBLES JAVA-LOOK-AND-FEEL 830
9.21.1 LOOK AND FEEL GLOBAL SETZEN 830
9.21.2 UIMANAGER 830
9.21.3 DIE WINDOWS-OPTIK MIT JGOODIES LOOKS VERBESSERN * 833
9.22 SWING-KOMPONENTEN NEU ERSTELLEN ODER VERAENDERN * 833
9.22.1 UEBERLAGERUNGEN MIT DEM SWING-KOMPONENTEN-DEKORATOR JLAYER 834
9.23 DIE ZWISCHENABLAGE (CLIPBOARD) 836
9.23.1 CLIPBOARD-OBJEKTE 836
9.23.2 MIT TRANSFERABLE AUF DEN INHALT ZUGREIFEN 837
9.23.3 DATAFLAVOR IST DAS FORMAT DER DATEN IN DER ZWISCHENABLAGE 838
9.23.4 EINFUEGUNGEN IN DER ZWISCHENABLAGE ERKENNEN 840
9.23.5 DRAG & DROP 841
9.24 UNDO DURCHFUEHREN * 842
9.25 AWT, SWING UND DIE THREADS 844
9.25.1 EREIGNISSCHLANGE (EVENTQUEUE) UND AWT-EVENT-THREAD 844
9.25.2 SWING IST NICHT THREAD-SICHER 845
9.25.3 INVOKELATER() UND INVOKEANDWAIT() 848
9.25.4 SWINGWORKER 851
9.25.5 EIGENE EREIGNISSE IN DIE QUEUE SETZEN * 853
9.25.6 AUF ALLE EREIGNISSE HOEREN * 854
9.26 BARRIEREFREIHEIT MIT DER JAVA ACCESSIBILITY API 854
9.27 ZEITLICHES AUSFUEHREN MIT DEM JAVAX.SWING.TIMER 855
9.28 DIE ZUSATZKOMPONENTENBIBLIOTHEK SWINGX 856
9.28.1 IM ANGEBOT: ERWEITERTE UND NEUE SWING-KOMPONENTEN 857
9.28.2 UEBERBLICK UEBER ERWEITERTE STANDARD-SWING-KLASSEN 857
9.28.3 NEUE SWING-KLASSEN 858
9.28.4 WEITERE SWINGX-KLASSEN 859
9.28.5 SWINGX-INSTALLATION 860
9.29 ALTERNATIVEN ZU PROGRAMMIERTEN OBERFLAECHEN, AWT UND SWING * 860
9.29.1 DEKLARATIVE BESCHREIBUNGEN DER OBERFLAECHE: SWING JAVABUILDER,
SWIXML 860
9.29.2 SWT (STANDARD WIDGET TOOLKIT) 862
9.30 ZUM WEITERLESEN 864
20
IMAGE 18
10 GRAFIKPROGRAMMIERUNG
10.1 GRUNDLEGENDES ZUM ZEICHNEN 865
10.1.1 DIE PAINT()-METHODE FUER DAS AWT-FRAME 865
10.1.2 ZEICHNEN VON INHALTEN AUF EIN JFRAME 867
10.1.3 AUFFORDERN ZUM NEUZEICHNEN MIT REPAINT() 869
10.1.4 JAVA2D-API 869
10.2 EINFACHE ZEICHENMETHODEN 870
10.2.1 LINIEN 870
10.2.2 RECHTECKE 871
10.2.3 OVALE UND KREISBOEGEN 872
10.2.4 POLYGONE UND POLYLINES 874
10.3 ZEICHENKETTEN SCHREIBEN UND FONTS 876
10.3.1 ZEICHENFOLGEN SCHREIBEN 877
10.3.2 DIE FONT-KLASSE 878
10.3.3 EINEN NEUEN FONT AUS EINEM GEGEBENEN FONT ABLEITEN 880
10.3.4 ZEICHENSAETZE DES SYSTEMS ERMITTELN * 880
10.3.5 NEUE TRUETYPE-FONTS IN JAVA NUTZEN 881
10.3.6 FONT-METADATEN DURCH FONTMETRICS * 882
10.4 GEOMETRISCHE OBJEKTE 886
10.4.1 DIE SCHNITTSTELLE SHAPE 888
10.4.2 KREISFOERMIGES 889
10.4.3 KURVIGES* 890
10.4.4 AREA UND DIE KONSTRUKTIVE FLAECHENGEOMETRIE * 890
10.4.5 PFADE* 891
10.4.6 PUNKT IN EINER FORM, SCHNITT VON LINIEN, ABSTAND PUNKT/LINIE *
895
10.5 DAS INNERE UND AEUSSERE EINER FORM 896
10.5.1 FARBEN UND DIE PAINT-SCHNITTSTELLE 896
10.5.2 FARBEN MIT DER KLASSE COLOR 897
10.5.3 DIE FARBEN DES SYSTEMS UEBER SYSTEMCOLOR * 903
10.5.4 COMPOSITE UND XOR * 907
10.5.5 DICKE UND ART DER LINIEN VON FORMEN BESTIMMEN UEBER STROKE * 908
10.6 BILDER 913
10.6.1 EINE UEBERSICHT UEBER DIE BILDER-BIBLIOTHEKEN 914
10.6.2 BILDER MIT IMAGELO LESEN 915
10.6.3 EIN BILD ZEICHNEN 917
10.6.4 PROGRAMM-ICON/FENSTER-ICON SETZEN 921
21
IMAGE 19
10.6.5 SPLASH-SCREEN* 922
10.6.6 BILDER IM SPEICHER ERZEUGEN * 922
10.6.7 PIXEL FUER PIXEL AUSLESEN UND SCHREIBEN * 925
10.6.8 BILDER SKALIEREN * 927
10.6.9 SCHREIBEN MIT IMAGELO 929
10.6.10 ASYNCHRONES LADEN MIT GETLMAGE() UND DEM MEDIATRACKER * 934
10.7 WEITERE EIGENSCHAFTEN VON GRAPHICS * 935
10.7.1 EINE KOPIE VON GRAPHICS ERSTELLEN 935
10.7.2 KOORDINATENSYSTEM VERSCHIEBEN 936
10.7.3 BESCHNITT (CLIPPING) 937
10.7.4 ZEICHENHINWEISE DURCH RENDERINGHINTS 941
10.7.5 TRANSFORMATIONEN MIT EINEM AFFINETRANSFORM-OBJEKT 941
10.8 DRUCKEN* 944
10.8.1 DRUCKEN DER INHALTE 944
10.8.2 BEKANNTE DRUCKER 946
10.9 BENUTZERINTERAKTIONEN AUTOMATISIEREN, ROBOT UND SCREENSHOTS * 947
10.9.1 DER ROBOTER 947
10.9.2 AUTOMATISCH IN DIE TASTEN HAUEN 948
10.9.3 AUTOMATISIERTE MAUSOPERATIONEN 949
10.9.4 METHODEN ZUR ZEITSTEUERUNG 949
10.9.5 BILDSCHIRMABZUEGE (SCREENSHOTS) 950
10.9.6 FUNKTIONSWEISE UND BESCHRAENKUNGEN 952
10.9.7 MOUSELNFO UND POINTERLNFO 952
10.10 ZUM WEITERLESEN 953
11 NETZWERKPROGRAMMIERUNG
11.1 GRUNDLEGENDE BEGRIFFE 955
11.2 URI UND URL 957
11.2.1 DIE KLASSE URI 957
11.2.2 DIE KLASSE URL 958
11.2.3 INFORMATIONEN UEBER EINE URL * 961
11.2.4 DER ZUGRIFF AUF DIE DATEN UEBER DIE KLASSE URL 963
11.3 DIE KLASSE URLCONNECTION * 965
11.3.1 METHODEN UND ANWENDUNG VON URLCONNECTION 965
11.3.2 PROTOKOLL- UND CONTENT-HANDLER 967
22
IMAGE 20
11.3.3 IM DETAIL: VOM URL ZUR URLCONNECTION 968
11.3.4 DER PROTOKOLL-HANDLER FUER JAR-DATEIEN 969
11.3.5 BASIC AUTHENTICATION UND PROXY-AUTHENTIFIZIERUNG 971
11.4 MIT GET UND POST DATEN UEBERGEBEN * 973
11.4.1 KODIEREN DER PARAMETER FUER SERVERPROGRAMME 974
11.4.2 EINE SUCHMASCHINE MIT GET-REQUEST ANSPRECHEN 975
11.4.3 POST-REQUEST ABSENDEN 976
11.5 HOST- UND IP-ADRESSEN 977
11.5.1 LEBT DER RECHNER? 980
11.5.2 IP-ADRESSE DES LOKALEN HOSTS 980
11.5.3 DAS NETZ IST KLASSE 981
11.5.4 NETWORKINTERFACE 981
11.6 MIT DEM SOCKET ZUM SERVER 983
11.6.1 DAS NETZWERK IST DER COMPUTER 983
11.6.2 SOCKETS 983
11.6.3 EINE VERBINDUNG ZUM SERVER AUFBAUEN 984
11.6.4 SERVER UNTER SPANNUNG: DIE STROEME 985
11.6.5 DIE VERBINDUNG WIEDER ABBAUEN 986
11.6.6 INFORMATIONEN UEBER DEN SOCKET * 986
11.6.7 REINE VERBINDUNGSDATEN UEBER SOCKETADDRESS * 988
11.7 CLIENT-SERVER-KOMMUNIKATION 989
11.7.1 WARTEN AUF VERBINDUNGEN 990
11.7.2 EIN MULTIPLIKATIONSSERVER 991
11.7.3 BLOCKIERENDES LESEN 995
11.7.4 VON AUSSEN ERREICHBAR SEIN * 996
11.8 APACHE HTTPCOMPONENTS UND COMMONS NET * 997
11.8.1 HTTPCOMPONENTS 997
11.8.2 APACHE COMMONS NET 998
11.9 ARBEITSWEISE EINES WEBSERVERS * 998
11.9.1 DAS HYPERTEXT TRANSFER PROTOCOL (HTTP) 998
11.9.2 ANFRAGEN AN DEN SERVER 999
11.9.3 DIE ANTWORTEN VOM SERVER 1002
11.9.4 WEBSERVER MIT COM.SUN.NET.HTTPSERVER.HTTPSERVER 1006
11.10 VERBINDUNGEN DURCH EINEN PROXY-SERVER * 1007
11.10.1 SYSTEM-PROPERTIES 1008
11.10.2 VERBINDUNGEN DURCH DIE PROXY-API 1008
23
IMAGE 21
11.11 DATAGRAM-SOCKETS* 1010
11.11.1 DIE KLASSE DATAGRAMSOCKET 1012
11.11.2 DATAGRAMME UND DIE KLASSE DATAGRAMPACKET 1013
11.11.3 AUF EIN HEREINKOMMENDES PAKET WARTEN 1014
11.11.4 EIN PAKET ZUM SENDEN VORBEREITEN 1015
11.11.5 METHODEN DER KLASSE DATAGRAMPACKET 1016
11.11.6 DAS PAKET SENDEN 1017
11.12 E-MAIL* 1019
11.12.1 WIE EINE E-MAIL UM DIE WELT GEHT 1019
11.12.2 DAS SIMPLE MAIL TRANSFER PROTOCOL UND RFC 822 1019
11.12.3 POP (POST OFFICE PROTOCOL) 1020
11.12.4 DIE JAVAMAIL API 1020
11.12.5 E-MAILS MITTELS POP3 ABRUFEN 1023
11.12.6 MULTIPART-NACHRICHTEN VERARBEITEN 1025
11.12.7 E-MAILS VERSENDEN 1027
11.12.8 EREIGNISSE UND SUCHEN 1030
11.13 TIEFER LIEGENDE NETZWERKEIGENSCHAFTEN * 1031
11.13.1 INTERNET CONTROL MESSAGE PROTOCOL (ICMP) 1031
11.13.2 MAC-ADRESSE 1032
11.14 ZUM WEITERLESEN 1033
12 VERTEILTE PROGRAMMIERUNG MIT RMI
12.1 ENTFERNTE OBJEKTE UND METHODEN 1035
12.1.1 STELLVERTRETER HELFEN BEI ENTFERNTEN METHODENAUFRUFEN 1035 12.1.2
STANDARDS FUER ENTFERNTE OBJEKTE 1037
12.2 JAVA REMOTE METHOD INVOCATION 1038
12.2.1 ZUSAMMENSPIEL VON SERVER, REGISTRY UND CLIENT 1038
12.2.2 WIE DIE STELLVERTRETER DIE DATEN UEBERTRAGEN 1038
12.2.3 PROBLEME MIT ENTFERNTEN METHODEN 1039
12.2.4 NUTZEN VON RMI BEI MIDDLEWARE-LOESUNGEN 1040
12.2.5 ZENTRALE KLASSEN UND SCHNITTSTELLEN 1041
12.2.6 ENTFERNTE UND LOKALE OBJEKTE IM VERGLEICH 1042
12.3 AUF DER SERVERSEITE 1042
12.3.1 ENTFERNTE SCHNITTSTELLE DEKLARIEREN 1042
12.3.2 REMOTE-OBJEKT-IMPLEMENTIERUNG 1043
24
IMAGE 22
12.3.3 STELLVERTRETEROBJEKTE 1044
12.3.4 DER NAMENSDIENST (REGISTRY) 1045
12.3.5 REMOTE-OBJEKT-IMPLEMENTIERUNG EXPORTIEREN UND BEIM NAMENSDIENST
ANMELDEN 1047
12.3.6 EINFACHES LOGGING 1049
12.3.7 AUFRAEUMEN MIT DEM DGC * 1050
12.4 AUF DER CLIENTSEITE 1051
12.5 ENTFERNTE OBJEKTE UEBERGEBEN UND LADEN 1052
12.5.1 KLASSEN VOM RMI-KLASSENLADER NACHLADEN 1052
12.6 WEITERE EIGENSCHAFTEN VON RMI 1053
12.6.1 RMI UND CORBA 1053
12.6.2 RMI UEBER HTTP GETUNNELT 1054
12.6.3 AUTOMATISCHE REMOTE-OBJEKT-AKTIVIERUNG 1054
12.7 JAVA MESSAGE SERVICE (JMS) 1055
12.8 ZUM WEITERLESEN 1055
13 RESTFUI UND SOAP WEB-SERVICES
13.1 WEB-SERVICES 1057
13.2 RESTFUI WEB-SERVICES 1059
13.2.1 AUS PRINZIP REST 1059
13.2.2 JERSEY 1060
13.2.3 JAX-RS-ANNOTATIONEN FUER DEN ERSTEN REST-SERVICE 1061
13.2.4 TEST-SERVER STARTEN 1062
13.2.5 REST-SERVICES KONSUMIEREN 1063
13.2.6 CONTENT-HANDER, MARSHALLER UND VERSCHIEDENE MIME-TYPEN 1064
13.2.7 REST-PARAMETER 1067
13.2.8 REST-SERVICES MIT PARAMETERN UEBER DIE JERSEY-CLIENT-API AUFRUFEN
1069 13.2.9 PUT-ANFORDERUNGEN UND DAS SENDEN VON DATEN 1070
13.2.10 PUT/POST/DELETE-SENDUNGEN MIT DER JERSEY-CLIENT-API ABSETZEN
1071
13.3 DAILY SOAP UND DAS SOAP-PROTOKOLL 1071
13.3.1 DIE TECHNISCHE REALISIERUNG 1072
13.3.2 WEB-SERVICE-APIS UND IMPLEMENTIERUNGEN 1072
13.3.3 @WEBSERVICE IN JAVA 6 1073
13.3.4 EINEN WEB-SERVICE DEFINIEREN 1074
25
IMAGE 23
13.3.5 WEB-SERVICES VEROEFFENTLICHEN 1075
13.3.6 EINEN JAX-WS-CLIENT IMPLEMENTIEREN 1076
13.4 ZUM WEITERLESEN 1078
14 JAVASERVER PAGES UND SERVLETS
14.1 DYNAMISCH GENERIERTE WEBSEITEN 1079
14.1.1 WAS SIND SERVLETS? 1080
14.1.2 WAS SIND JAVASERVER PAGES? 1081
14.2 SERVLETS UND JSPS MIT TOMCAT ENTWICKELN 1082
14.2.1 SERVLET-CONTAINER 1082
14.2.2 ENTWICKLUNG DER SERVLET/JSP-SPEZIFIKATIONEN 1083
14.2.3 WEBSERVER MIT SERVLET-FUNKTIONALITAET 1083
14.2.4 TOMCAT INSTALLIEREN 1084
14.2.5 ABLAGEORT FUER EIGENE JSPS 1086
14.2.6 WEBAPPLIKATIONEN 1087
14.2.7 ZUORDNUNG VON WEBAPPLIKATIONEN ZU PHYSIKALISCHEN VERZEICHNISSEN
. 1088 14.2.8 WEB-PROJEKT MIT ECLIPSE IDE FOR JAVA EE DEVELOPERS 1088
14.3 STATISCHES UND DYNAMISCHES 1090
14.3.1 STATISCHER TEMPLATE-CODE 1090
14.3.2 DYNAMISCHE INHALTE 1090
14.3.3 KOMMENTARE 1091
14.4 DIE EXPRESSION LANGUAGE (EL) 1091
14.4.1 OPERATOREN DER EL 1092
14.4.2 LITERALE 1092
14.4.3 IMPLIZITE EL-OBJEKTE 1093
14.5 FORMULARDATEN 1094
14.5.1 EINEN PARAMETER AUSLESEN 1094
14.5.2 HTML-FORMULARE 1095
14.6 AUF BEANS ZURUECKGREIFEN 1096
14.6.1 BEANS IN JSPS ANLEGEN 1097
14.6.2 PROPERTIES EINER BEAN IM EL-AUSDRUCK ERFRAGEN 1097
14.6.3 PROPERTIES MIT JSP:SETPROPERTY SETZEN 1097
14.6.4 BEAN-KLASSE ZUM TESTEN VON E-MAIL-ADRESSEN 1098
14.6.5 PARAMETERWERTE IN BEAN UEBERTRAGEN 1100
26
IMAGE 24
14.7 JSP-TAG-LIBRARIES 1101
14.7.1 STANDARD TAG LIBRARY (JSTL) 1101
14.8 SKRIPTING-ELEMENTE IN JSPS 1105
14.8.1 SCRIPTLETS 1106
14.8.2 JSP-AUSDRUECKE 1106
14.8.3 JSP-DEKLARATIONEN 1107
14.8.4 QUOTING 1107
14.8.5 ENTSPRECHENDE XML-TAGS 1108
14.8.6 IMPLIZITE OBJEKTE FUER SCRIPTLETS UND JSP-AUSDRUECKE 1108
14.9 SITZUNGSVERFOLGUNG (SESSION TRACKING) 1109
14.9.1 LOESUNGEN FUER DIE SITZUNGSVERFOLGUNG 1109
14.9.2 SITZUNGEN IN JSPS 1110
14.9.3 AUF SESSION-DATEIEN ZURUECKGREIFEN 1111
14.10 SERVLETS 1111
14.10.1 SERVLETS COMPILIEREN 1115
14.10.2 SERVLET-MAPPING 1116
14.10.3 DER LEBENSZYKLUS EINES SERVLETS 1117
14.10.4 MEHRERE ANFRAGEN BEIM SERVLET UND DIE THREAD-SICHERHEIT 1118
14.10.5 SERVLETS UND SESSIONS 1118
14.10.6 WEITERLEITEN UND EINBINDEN VON SERVLET-INHALTEN 1119
14.11 ZUM WEITERLESEN 1120
15 APPLETS
15.1 APPLETS IN DER WIEGE VON JAVA 1123
15.1.1 APPLETS HEUTE 1123
15.1.2 (J)APPLET UND APPLIKATIONEN 1124
15.1.3 DAS ERSTE HALLO-APPLET 1125
15.2 DIE APPLET-API 1127
15.2.1 DIE ZYKLEN EINES APPLETS 1127
15.2.2 PARAMETER AN DAS APPLET UEBERGEBEN 1127
15.2.3 WIE DAS APPLET DEN BROWSER-INHALT AENDERN KANN * 1129
15.2.4 DEN URSPRUNG DES APPLETS ERFRAGEN 1130
15.2.5 DATENAUSTAUSCH ZWISCHEN APPLETS * 1131
15.2.6 WAS EIN APPLET ALLES DARF * 1134
27
IMAGE 25
15.2.7 IST JAVA IM BROWSER AKTIVIERT? * 1135
15.2.8 APPLET UNTER FIREFOX (NETSCAPE) ODER MICROSOFT INTERNET EXPLORER?
* 1135
15.3 WEBSTART 1137
15.4 ZUM WEITERLESEN 1137
16 DATENBANKMANAGEMENT MIT JDBC
16.1 RELATIONALE DATENBANKEN 1139
16.1.1 DAS RELATIONALE MODELL 1139
16.2 DATENBANKEN UND TOOLS 1140
16.2.1 HSQLDB 1141
16.2.2 WEITERE DATENBANKEN * 1142
16.2.3 ECLIPSE-PLUGINS ZUM DURCHSCHAUEN VON DATENBANKEN 1145
16.3 JDBC UND DATENBANKTREIBER 1148
16.3.1 TREIBERTYPEN* 1149
16.3.2 JDBC-VERSIONEN * 1151
16.4 EINE BEISPIELABFRAGE 1152
16.4.1 SCHRITTE ZUR DATENBANKABFRAGE 1152
16.4.2 EIN CLIENT FUER DIE HSQLDB-DATENBANK 1153
16.4.3 DATENBANKBROWSER UND EINE BEISPIELABFRAGE UNTER NETBEANS 1155
16.5 MIT JAVA AN EINE DATENBANK ANDOCKEN 1159
16.5.1 DER TREIBER-MANAGER * 1160
16.5.2 DEN TREIBER LADEN 1160
16.5.3 EINE AUFZAEHLUNG ALLER TREIBER * 1162
16.5.4 LOG-INFORMATIONEN* 1162
16.5.5 VERBINDUNG ZUR DATENBANK AUF- UND ABBAUEN 1163
16.6 DATENBANKABFRAGEN 1167
16.6.1 ABFRAGEN UEBER DAS STATEMENT-OBJEKT 1168
16.6.2 ERGEBNISSE EINER ABFRAGE IN RESULTSET 1169
16.6.3 JAVA UND SQL-DATENTYPEN 1170
16.6.4 DATE, TIME UND TIMESTAMP 1173
16.6.5 UNICODE IN DER SPALTE KORREKT AUSLESEN 1175
16.6.6 EINE SQL-NULL UND WASNULL() BEI RESULTSET 1175
16.6.7 WIE VIELE ZEILEN HAT EIN RESULTSET? * 1176
28
IMAGE 26
16.7 ELEMENTE EINER DATENBANK HINZUFUEGEN UND AKTUALISIEREN 1176
16.7.1 BATCH-UPDATES 1177
16.7.2 DIE AUSNAHMEN BEI JDBC, SQLEXCEPTION UND UNTERKLASSEN 1179
16.8 RESULTSET UND ROWSET * 1182
16.8.1 DIE SCHNITTSTELLE ROWSET 1182
16.8.2 IMPLEMENTIERUNGEN VON ROWSET 1182
16.8.3 DER TYP CACHEDROWSET 1183
16.8.4 DER TYP WEBROWSET 1184
16.9 VORBEREITETE ANWEISUNGEN (PREPARED STATEMENTS) 1187
16.9.1 PREPAREDSTATEMENT-OBJEKTE VORBEREITEN 1187
16.9.2 WERTE FUER DIE PLATZHALTER EINES PREPAREDSTATEMENT 1189
16.10 TRANSAKTIONEN 1190
16.11 METADATEN* 1190
16.11.1 METADATEN UEBER DIE TABELLE 1190
16.11.2 INFORMATIONEN UEBER DIE DATENBANK 1194
16.12 VORBEREITETE DATENBANKVERBINDUNGEN 1195
16.12.1 DATASOURCE 1195
16.12.2 GEPOOLTE VERBINDUNGEN 1198
16.13 JPA-BEISPIEL MIT DER NETBEANS-IDE 1199
16.13.1 ENTITY-BEANS GENERIEREN 1199
16.13.2 DIE QUELLEN IM UEBERBLICK 1201
16.13.3 PERSISTENCE UNIT 1203
16.13.4 EIN JPA-BEISPIELPROGRAMM 1204
16.14 ZUM WEITERLESEN 1205
17 TECHNOLOGIEN FUER DIE INFRASTRUKTUR
17.1 PROPERTY-VALIDIERUNG DURCH BEAN VALIDATION 1207
17.1.1 TECHNISCHE ABHAENGIGKEITEN UND POJOS 1218
17.2 WIE EINE IMPLEMENTIERUNG AN DIE RICHTIGE STELLE KOMMT 1220
17.2.1 ARBEITEN MIT DEM SERVICELOADER 1221
17.2.2 DIE UTILITY-KLASSE LOOKUP ALS SERVICELOADER-FASSADE 1223
17.2.3 CONTEXTS AND DEPENDENCY INJECTION (CDI) AUS DEM JSR-299 1224
17.3 ZUM WEITERLESEN 1226
29
IMAGE 27
18 REFLECTION UND ANNOTATIONEN
18.1 METADATEN 1227
18.1.1 METADATEN DURCH JAVADOC-TAGS 1227
18.2 METADATEN DER KLASSEN MIT DEM CLASS-OBJEKT 1228
18.2.1 AN EIN CLASS-OBJEKT KOMMEN 1228
18.2.2 WAS DAS CLASS-OBJEKT BESCHREIBT * 1231
18.2.3 DER NAME DER KLASSE 1233
18.2.4 INSTANCEOF MIT CLASS-OBJEKTEN * 1235
18.2.5 OBERKLASSEN FINDEN * 1236
18.2.6 IMPLEMENTIERTE INTERFACES EINER KLASSE ODER EINES INTERFACES *
1237 18.2.7 MODIFIZIERER UND DIE KLASSE MODIFIER * 1238
18.2.8 DIE ARBEIT AUF DEM FELD * 1240
18.3 ATTRIBUTE, METHODEN UND KONSTRUKTOREN 1241
18.3.1 REFLECTIONS - GESPUER FUER DIE ATTRIBUTE EINER KLASSE 1243
18.3.2 METHODEN EINER KLASSE ERFRAGEN 1246
18.3.3 PROPERTIES EINER BEAN ERFRAGEN 1250
18.3.4 KONSTRUKTOREN EINER KLASSE 1250
18.3.5 ANNOTATIONEN 1253
18.4 OBJEKTE ERZEUGEN UND MANIPULIEREN 1253
18.4.1 OBJEKTE ERZEUGEN 1253
18.4.2 DIE BELEGUNG DER VARIABLEN ERFRAGEN 1255
18.4.3 EINE GENERISCHE EIGENE TOSTRING()-METHODE * 1257
18.4.4 VARIABLEN SETZEN 1260
18.4.5 BEAN-ZUSTAENDE KOPIEREN * 1262
18.4.6 PRIVATE ATTRIBUTE AENDERN 1262
18.4.7 METHODEN AUFRUFEN 1263
18.4.8 STATISCHE METHODEN AUFRUFEN 1265
18.4.9 DYNAMISCHE METHODENAUFRUFE BEI FESTEN METHODEN BESCHLEUNIGEN
*. 1266
18.5 EIGENE ANNOTATIONSTYPEN * 1268
18.5.1 ANNOTATIONEN ZUM LADEN VON RESSOURCEN 1268
18.5.2 NEUE ANNOTATIONEN DEKLARIEREN 1269
18.5.3 ANNOTATIONEN MIT GENAU EINEM ATTRIBUT 1270
18.5.4 ELEMENT-WERTE-PAARE (ATTRIBUTE) HINZUFUEGEN 1271
18.5.5 ANNOTATIONSATTRIBUTE VOM TYP EINER AUFZAEHLUNG 1272
30
IMAGE 28
18.5.6 FELDER VON ANNOTATIONSATTRIBUTEN 1273
18.5.7 VORBELEGTE ATTRIBUTE 1274
18.5.8 L ANNOTIEREN VON ANNOTATIONSTYPEN 1276
18.5.9 DEKLARATIONEN FUER UNSERE RESSOURCEN-ANNOTATIONEN 1280
18.5.10 ANNOTIERTE ELEMENTE AUSLESEN 1282
18.5.11 AUF DIE ANNOTATIONSATTRIBUTE ZUGREIFEN 1283
18.5.12 KOMPLETTBEISPIEL ZUM INITIALISIEREN VON RESSOURCEN 1284
18.5.13 MOEGLICHE NACHTEILE VON ANNOTATIONEN 1287
18.6 ZUM WEITERLESEN 1288
19 DYNAMISCHE UEBERSETZUNG UND SKRIPTSPRACHEN
19.1 CODEGENERIERUNG 1290
19.1.1 GENERIERUNG VON JAVA-QUELLCODE 1291
19.1.2 CODETRANSFORMATIONEN 1294
19.1.3 ERSTELLEN VON JAVA-BYTECODE 1294
19.2 PROGRAMME MIT DER COMPILER API UEBERSETZEN 1295
19.2.1 JAVA COMPILER API 1295
19.2.2 FEHLER-DIAGNOSE 1298
19.2.3 EINE IM STRING ANGEGEBENE COMPILIATIONSEINHEIT UEBERSETZEN 1300
19.2.4 WENN QUELLE UND ZIEL DER SPEICHER SIND 1302
19.3 AUSFUEHREN VON SKRIPTEN 1306
19.3.1 JAVASCRIPT-PROGRAMME AUSFUEHREN 1306
19.3.2 GROOVY 1308
19.4 ZUM WEITERLESEN .* 1314
20 LOGGING UND MONITORING
20.1 LOGGING MIT JAVA 1315
20.1.1 LOGGING-APIS 1315
20.1.2 LOGGING MIT JAVA.UTIL.LOGGING 1316
20.1.3 LOGGING MIT IOG4J * 1320
20.1.4 DIE SIMPLE LOGGING FACADE 1323
20.2 SYSTEMZUSTAENDE UEBERWACHEN 1324
31
IMAGE 29
20.3 MBEAN-TYPEN, MBEAN-SERVER UND WEITERE BEGRIFFE 1325
20.3.1 MXBEANS DES SYSTEMS 1325
20.4 GESCHWAETZIGE PROGRAMME UND JCONSOLE 1328
20.4.1 JCONSOLE 1328
20.5 DER MBEANSERVER 1330
20.6 EINE EIGENE STANDARD-MBEAN 1331
20.6.1 MANAGEMENT-SCHNITTSTELLE 1332
20.6.2 IMPLEMENTIERUNG DER MANAGED-RESSOURCE 1332
20.6.3 ANMELDUNG BEIM SERVER 1333
20.6.4 EINE EIGENE BEAN IN JCONSOLE EINBRINGEN 1333
20.7 ZUM WEITERLESEN 1336
21 JAVA NATIVE INTERFACE (JNI)
21.1 JAVA NATIVE INTERFACE UND INVOCATION-API 1337
21.2 EINE C-FUNKTION IN EIN JAVA-PROGRAMM EINBINDEN 1338
21.2.1 DEN JAVA-CODE SCHREIBEN 1338
21.3 DYNAMISCHE BIBLIOTHEKEN ERZEUGEN 1340
21.3.1 DIE HEADER-DATEI ERZEUGEN 1340
21.3.2 IMPLEMENTIERUNG DER FUNKTION IN C 1342
21.3.3 DIE C-PROGRAMME UEBERSETZEN UND DIE DYNAMISCHE BIBLIOTHEK
UEBERZEUGEN 1343
21.4 NATIV DIE STRINGLAENGE ERMITTELN 1345
21.5 ERWEITERTE JNI-EIGENSCHAFTEN 1347
21.5.1 KLASSENDEFINITIONEN 1347
21.5.2 ZUGRIFF AUF ATTRIBUTE 1348
21.5.3 METHODEN AUFRUFEN 1350
21.5.4 THREADS UND SYNCHRONISATION 1352
21.6 EINFACHE ANBINDUNG VON EXISTIERENDEN BIBLIOTHEKEN 1352
21.6.1 GENERIEREN VON JNI-WRAPPERN AUS C++-KLASSEN UND C-HEADERN 1352
21.6.2 COM-SCHNITTSTELLEN ANZAPFEN 1353
21.7 INVOCATION-API 1353
21.8 ZUM WEITERLESEN 1354
32
IMAGE 30
22 SICHERHEITSKONZEPTE
22.1 ZENTRALE ELEMENTE DER JAVA-SICHERHEIT 1355
22.1.1 SECURITY-API DER JAVA SE 1355
22.1.2 CRYPTOGRAPHIE SERVICE PROVIDERS 1356
22.2 DER SANDKASTEN (SANDBOX) 1357
22.3 SICHERHEITSMANAGER (SECURITY MANAGER) 1358
22.3.1 DER SICHERHEITSMANAGER BEI APPLETS 1359
22.3.2 SICHERHEITSMANAGER AKTIVIEREN 1361
22.3.3 RECHTE DURCH POLICY-DATEIEN VERGEBEN 1363
22.3.4 ERSTELLEN VON RECHTEDATEIEN MIT DEM GRAFISCHEN POLICY-TOOL 1365
22.3.5 KRITIK AN DEN POLICIES 1366
22.4 SIGNIERUNG 1368
22.4.1 WARUM SIGNIEREN? 1368
22.4.2 DIGITALE AUSWEISE UND DIE ZERTIFIZIERUNGSSTELLE 1368
22.4.3 MIT KEYTOOL SCHLUESSEL ERZEUGEN 1369
22.4.4 SIGNIEREN MIT JARSIGNER 1370
22.5 DIGITALE UNTERSCHRIFTEN * 1371
22.5.1 DIEMDX-REIHE 1371
22.5.2 SECURE HASH ALGORITHM (SHA) 1372
22.5.3 MIT DER SECURITY-API EINEN FINGERABDRUCK BERECHNEN 1372
22.5.4 DIE KLASSE MESSAGEDIGEST 1373
22.6 VERSCHLUESSELN VON DATEN(-STROEMEN) * 1375
22.6.1 DEN SCHLUESSEL, BITTE 1375
22.6.2 VERSCHLUESSELN MIT CIPHER 1377
22.6.3 VERSCHLUESSELN VON DATENSTROEMEN 1377
22.7 ZUM WEITERLESEN 1379
23 DIENSTPROGRAMME FUER DIE JAVA-UMGEBUNG
23.1 PROGRAMME DES JDK 1381
23.2 MONITORINGPROGRAMME VOM JDK 1381
23.2.1 JPS 1381
23.2.2 JSTAT 1382
23.2.3 JMAP 1382
33
IMAGE 31
23.2.4 JSTACK 1383
23.2.5 VISUALVM 1385
23.3 PROGRAMMIEREN MIT DER TOOLS-API 1390
23.3.1 EIGENE DOCLETS 1390
23.4 ANT 1393
23.4.1 BEZUG UND INSTALLATION VON ANT 1393
23.4.2 DAS BUILD-SKRIPT BUILD.XML 1394
23.4.3 BUILD DEN BUILD 1394
23.4.4 PROPERTIES 1395
23.4.5 EXTERNE UND VORDEFINIERTE PROPERTIES 1396
23.4.6 WEITERE ANT-TASKS 1397
23.5 DISASSEMBLER, DECOMPILER UND OBFUSCATOR 1398
23.5.1 DER DIASSEMBIER JAVAP 1399
23.5.2 DECOMPILER 1404
23.5.3 OBFUSCATOREN 1406
23.6 WEITERE DIENSTPROGRAMME 1408
23.6.1 SOURCECODE BEAUTIFIER 1408
23.6.2 JAVA-PROGRAMME ALS SYSTEMDIENST AUSFUEHREN 1409
23.7 ZUM WEITERLESEN 1410
INDEX 1411 |
any_adam_object | 1 |
author | Ullenboom, Christian |
author_GND | (DE-588)123404738 |
author_facet | Ullenboom, Christian |
author_role | aut |
author_sort | Ullenboom, Christian |
author_variant | c u cu |
building | Verbundindex |
bvnumber | BV039550206 |
classification_rvk | ST 250 |
classification_tum | DAT 362f |
collection | ebook |
ctrlnum | (OCoLC)750966170 (DE-599)DNB1013798112 |
dewey-full | 005.133 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.133 |
dewey-search | 005.133 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 1. Aufl. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV039550206</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20221108</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">110829s2012 gw ad|| |||| 00||| ger d</controlfield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1013798112</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783836215077</subfield><subfield code="9">978-3-8362-1507-7</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3836215071</subfield><subfield code="9">3-8362-1507-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)750966170</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1013798112</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rakddb</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-NW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-91G</subfield><subfield code="a">DE-M347</subfield><subfield code="a">DE-1051</subfield><subfield code="a">DE-1050</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-858</subfield><subfield code="a">DE-634</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-91</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-1046</subfield><subfield code="a">DE-384</subfield><subfield code="a">DE-863</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-M382</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-862</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield><subfield code="2">22/ger</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">68N15</subfield><subfield code="2">msc</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 362f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Ullenboom, Christian</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)123404738</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Java 7 - mehr als eine Insel</subfield><subfield code="b">das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.]</subfield><subfield code="c">Christian Ullenboom</subfield></datafield><datafield tag="246" ind1="1" ind2="3"><subfield code="a">Java sieben - mehr als eine Insel</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1. Aufl.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Bonn</subfield><subfield code="b">Galileo Pr.</subfield><subfield code="c">2012</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1433 S.</subfield><subfield code="b">Ill., graph. Darst.</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="490" ind1="0" ind2=" "><subfield code="a">Galileo Computing</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">2. Aufl. u.d.T.: Ullenboom, Christian: Java SE 8 Standard-Bibliothek</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java Standard Edition 7</subfield><subfield code="0">(DE-588)7751205-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Java Standard Edition 7</subfield><subfield code="0">(DE-588)7751205-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="1"><subfield code="u">https://www.heise.de/download/product/java-7-mehr-als-eine-insel-85729/download</subfield><subfield code="x">Verlag</subfield><subfield code="z">kostenfrei</subfield><subfield code="3">Volltext</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=024402097&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">ebook</subfield></datafield></record></collection> |
id | DE-604.BV039550206 |
illustrated | Illustrated |
indexdate | 2024-11-25T17:37:10Z |
institution | BVB |
isbn | 9783836215077 3836215071 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-024402097 |
oclc_num | 750966170 |
open_access_boolean | 1 |
owner | DE-91G DE-BY-TUM DE-M347 DE-1051 DE-1050 DE-573 DE-Aug4 DE-20 DE-706 DE-858 DE-634 DE-29T DE-91 DE-BY-TUM DE-739 DE-1046 DE-384 DE-863 DE-BY-FWS DE-B768 DE-473 DE-BY-UBG DE-M382 DE-83 DE-862 DE-BY-FWS |
owner_facet | DE-91G DE-BY-TUM DE-M347 DE-1051 DE-1050 DE-573 DE-Aug4 DE-20 DE-706 DE-858 DE-634 DE-29T DE-91 DE-BY-TUM DE-739 DE-1046 DE-384 DE-863 DE-BY-FWS DE-B768 DE-473 DE-BY-UBG DE-M382 DE-83 DE-862 DE-BY-FWS |
physical | 1433 S. Ill., graph. Darst. |
psigel | ebook |
publishDate | 2012 |
publishDateSearch | 2012 |
publishDateSort | 2012 |
publisher | Galileo Pr. |
record_format | marc |
series2 | Galileo Computing |
spellingShingle | Ullenboom, Christian Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] Java Standard Edition 7 (DE-588)7751205-4 gnd |
subject_GND | (DE-588)7751205-4 |
title | Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] |
title_alt | Java sieben - mehr als eine Insel |
title_auth | Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] |
title_exact_search | Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] |
title_full | Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] Christian Ullenboom |
title_fullStr | Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] Christian Ullenboom |
title_full_unstemmed | Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] Christian Ullenboom |
title_short | Java 7 - mehr als eine Insel |
title_sort | java 7 mehr als eine insel das handbuch zu den java se bibliotheken nebenlaufigkeit datenstrukturen und algorithmen ein ausgabe xml swing grafik und netzwerkprogrammierung rmi javaserver pages und servlets jdbc reflection u v m |
title_sub | das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m.] |
topic | Java Standard Edition 7 (DE-588)7751205-4 gnd |
topic_facet | Java Standard Edition 7 |
url | https://www.heise.de/download/product/java-7-mehr-als-eine-insel-85729/download http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024402097&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT ullenboomchristian java7mehralseineinseldashandbuchzudenjavasebibliothekennebenlaufigkeitdatenstrukturenundalgorithmeneinausgabexmlswinggrafikundnetzwerkprogrammierungrmijavaserverpagesundservletsjdbcreflectionuvm AT ullenboomchristian javasiebenmehralseineinsel |