Inhalt Inhalt Vorwort ...................................................................................................................................................... 35 1 Neues in Java 7 1.1 Sprachänderungen ........................................................................................................................ 41 1.1.1 Zahlen im Binärsystem schreiben .......................................................................... 41 1.1.2 Unterstriche bei Ganzzahlen .................................................................................... 41 1.1.3 switch (String) ................................................................................................................ 42 1.1.4 Zusammenfassen gleicher catch-Blöcke mit dem multi-catch ...................... 43 1.1.5 Präzisiertes 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 Unterdrückte Ausnahmen * ...................................................................................... 56 JVM-Änderungen ........................................................................................................................... 59 1.2.1 invokedynamic ............................................................................................................. 60 Neue Pakete und Klassen ............................................................................................................ 63 1.3.1 63 1.2 1.3 Weitere Änderungen ................................................................................................... 2 Threads und nebenläufige Programmierung 2.1 Threads erzeugen .......................................................................................................................... 2.2 65 2.1.1 Threads über die Schnittstelle Runnable implementieren ............................. 65 2.1.2 Thread mit Runnable starten ................................................................................... 66 2.1.3 Die Klasse Thread erweitern ..................................................................................... 68 Thread-Eigenschaften und -Zustände ..................................................................................... 71 2.2.1 Der Name eines Threads ............................................................................................ 71 2.2.2 Wer bin ich? .................................................................................................................... 72 2.2.3 Die Zustände eines Threads * .................................................................................... 72 5 Inhalt 2.3 2.4 2.5 6 2.2.4 Schläfer gesucht ........................................................................................................... 73 2.2.5 Mit yield() auf Rechenzeit verzichten ................................................................... 75 2.2.6 Der Thread als Dämon ................................................................................................ 76 2.2.7 Das Ende eines Threads ............................................................................................. 78 2.2.8 Einen Thread höflich mit Interrupt beenden ..................................................... 79 2.2.9 UncaughtExceptionHandler für unbehandelte Ausnahmen ........................ 81 2.2.10 Der stop() von außen 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 Priorität * ........................................................................................................................ 87 Der Ausführer (Executor) kommt ............................................................................................. 88 2.3.1 89 Die Schnittstelle Executor ......................................................................................... 2.3.2 Die Thread-Pools .......................................................................................................... 91 2.3.3 Threads mit Rückgabe über Callable ..................................................................... 92 2.3.4 Mehrere Callable abarbeiten .................................................................................... 96 2.3.5 ScheduledExecutorService für wiederholende Ausgaben und Zeitsteuerungen nutzen ............................................................................................ 97 Synchronisation über 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 schützen ................................................................................. 103 2.4.6 Kritische Abschnitte mit ReentrantLock schützen ........................................... 106 2.4.7 Synchronisieren mit synchronized ....................................................................... 113 2.4.8 Synchronized-Methoden der Klasse StringBuffer * .......................................... 114 2.4.9 Mit synchronized synchronisierte Blöcke ........................................................... 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 nachträglich synchronisieren * ............................................ 121 2.4.14 Monitore sind reentrant – gut für die Geschwindigkeit * ............................... 122 2.4.15 Synchronisierte Methodenaufrufe zusammenfassen * .................................. 123 Synchronisation über Warten und Benachrichtigen .......................................................... 124 2.5.1 Die Schnittstelle Condition ...................................................................................... 125 2.5.2 It’s Disco-Time * ........................................................................................................... 129 Inhalt 2.6 2.7 2.8 2.9 2.5.3 Warten mit wait() und Aufwecken mit notify() * ................................................ 135 2.5.4 Falls der Lock fehlt: IllegalMonitorStateException * ......................................... 136 Datensynchronisation durch besondere Concurrency-Klassen * ..................................... 138 2.6.1 138 Semaphor ........................................................................................................................ 2.6.2 Barrier und Austausch ................................................................................................ 143 2.6.3 Stop and go mit Exchanger ....................................................................................... 145 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 Teile und herrsche mit Fork und Join * .................................................................................... 149 2.8.1 Algorithmendesign per »teile und herrsche« ..................................................... 149 2.8.2 Paralleles Lösen von D&C-Algorithmen ............................................................... 151 2.8.3 Fork und Join ................................................................................................................. 152 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 über 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 Abläufe ................................................................................................................ 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 7 Inhalt 3.2 3.3 3.4 3.5 3.6 8 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 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.asList() ............................................................................. 201 3.2.7 ListIterator * ................................................................................................................... 202 3.2.8 toArray() von Collection verstehen – die Gefahr einer Falle erkennen ...... 204 3.2.9 Primitive Elemente in Datenstrukturen verwalten .......................................... 207 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 Stack (Kellerspeicher, Stapel) .................................................................................................... 218 3.4.1 Die Methoden von Stack ........................................................................................... 219 Queues (Schlangen) und Deques .............................................................................................. 220 3.5.1 Queue-Klassen .............................................................................................................. 221 3.5.2 Deque-Klassen .............................................................................................................. 222 3.5.3 Blockierende Queues und Prioritätswarteschlangen ....................................... 223 3.5.4 PriorityQueue ............................................................................................................... 223 Assoziative Speicher .................................................................................................................... 228 3.6.1 Die Klassen HashMap und TreeMap ...................................................................... 228 3.6.2 Einfügen und Abfragen der Datenstruktur ......................................................... 231 3.6.3 Über 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 veränderten Elementen .......................................................... 237 Inhalt 3.7 3.8 3.9 3.6.7 Aufzählungen und Ansichten des Assoziativspeichers ................................... 237 3.6.8 Die Arbeitsweise einer Hash-Tabelle * ................................................................... 241 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 Mit einem Iterator durch die Daten wandern ....................................................................... 249 3.8.1 Die Schnittstelle Iterator ............................................................................................ 249 3.8.2 Der Iterator kann (eventuell auch) löschen ......................................................... 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 Algorithmen in Collections ......................................................................................................... 261 3.9.1 263 Die Bedeutung von Ordnung mit Comparator und Comparable ................. 3.9.2 Sortieren .......................................................................................................................... 264 3.9.3 Den größten und kleinsten Wert einer Collection finden ............................... 267 3.9.4 Nicht-änderbare Datenstrukturen, immutable oder nur-lesen? ................... 270 3.9.5 Null Object Pattern und leere Sammlungen/Iteratoren zurückgeben ........ 274 3.9.6 Mit der Halbierungssuche nach Elementen fahnden ....................................... 278 3.9.7 Ersetzen, Kopieren, Füllen, Umdrehen, Rotieren * ............................................ 279 3.9.8 Listen durchwürfeln * ................................................................................................. 281 3.9.9 Häufigkeit eines Elements * ...................................................................................... 282 3.9.10 Singletons * ..................................................................................................................... 282 3.9.11 nCopies() * ....................................................................................................................... 283 3.10 Spezielle thread-sichere Datenstrukturen ............................................................................. 3.10.1 Wait-free-Algorithmen ............................................................................................... 3.10.2 Nebenläufiger Assoziativspeicher und die Schnittstelle 284 284 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 9 Inhalt 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 Prädikate ......................................................................................................................... 298 3.11.5 Transformationen ....................................................................................................... 299 3.12 Die Klasse BitSet für Bitmengen * ............................................................................................ 299 3.12.1 Ein BitSet anlegen, füllen und erfragen ................................................................ 300 3.12.2 Mengenorientierte Operationen ............................................................................ 301 3.12.3 Methodenübersicht .................................................................................................... 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 Überblick .................................................................................. 306 4.3 4.4 4.5 4.6 10 4.2.1 Der 1.1.1970 ................................................................................................................... 307 4.2.2 System.currentTimeMillis() ..................................................................................... 307 4.2.3 Einfache Zeitumrechnungen durch TimeUnit ................................................... 307 Sprachen der Länder .................................................................................................................... 308 4.3.1 Sprachen und Regionen über Locale-Objekte ..................................................... 309 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 für ResourceBundle-Objekte ......................................................... 316 Die Klasse Date .............................................................................................................................. 317 4.5.1 Objekte erzeugen und Methoden nutzen ............................................................ 317 4.5.2 Date-Objekte sind nicht immutable ...................................................................... 319 Calendar und GregorianCalendar ............................................................................................ 320 4.6.1 Die abstrakte Klasse Calendar .................................................................................. 320 4.6.2 Der gregorianische Kalender ................................................................................... 322 Inhalt 4.7 4.8 4.9 4.6.3 Calendar nach Date und Millisekunden fragen .................................................. 325 4.6.4 Ostertage * ...................................................................................................................... 326 4.6.5 Abfragen und Setzen von Datumselementen über 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 Zeitzonen in Java * ........................................................................................................................ 336 4.7.1 Zeitzonen durch die Klasse TimeZone repräsentieren ..................................... 337 4.7.2 SimpleTimeZone .......................................................................................................... 337 4.7.3 Methoden von TimeZone .......................................................................................... 339 Zeitdauern und der XML-Datentyp Duration * ..................................................................... 340 4.8.1 DatatypeFactory als Fabrik ........................................................................................ 341 4.8.2 Die Duration-Klasse und ihre Methoden .............................................................. 342 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 berühren, neue Dateien anlegen, temporäre Dateien ...................... 369 5.1.7 Dateien und Verzeichnisse löschen ........................................................................ 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 Sicherheitsprüfung * ................................................................................................... 377 5.1.13 Zugriff auf SMB-Server mit jCIFS * .......................................................................... 378 11 Inhalt 5.2 5.3 5.4 Dateien mit wahlfreiem Zugriff ............................................................................................... 378 5.2.1 Ein RandomAccessFile zum Lesen und Schreiben öffnen .............................. 379 5.2.2 Aus dem RandomAccessFile lesen ......................................................................... 380 5.2.3 Schreiben mit RandomAccessFile .......................................................................... 383 5.2.4 Die Länge des RandomAccessFile ........................................................................... 384 5.2.5 Hin und her in der Datei ............................................................................................ 384 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 397 5.3.4 Dateiattribute * ............................................................................................................. 5.3.5 Neue Dateien, Verzeichnisse, symbolische Verknüpfungen anlegen und löschen ................................................................................................................... 406 5.3.6 MIME-Typen testen * .................................................................................................. 408 5.3.7 Verzeichnislistings (DirectoryStream) und Filter * ........................................... 410 5.3.8 Rekursive Abläufe des Verzeichnisbaums (FileVisitor) * ................................ 412 5.3.9 Dateisysteme und Dateisystemattribute * .......................................................... 416 5.3.10 Verzeichnisse im Dateisystem überwachen * ..................................................... 420 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 Datenströme 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 FileInputStream ................................... 431 6.2 12 6.1.4 Das FileDescriptor-Objekt * ...................................................................................... 435 6.1.5 Datenströme über Files mit NIO.2 beziehen ....................................................... 436 Basisklassen für die Ein-/Ausgabe ........................................................................................... 438 6.2.1 Die abstrakten Basisklassen ..................................................................................... 438 6.2.2 Übersicht über Ein-/Ausgabeklassen .................................................................... 439 Inhalt 6.3 6.4 6.5 6.6 6.7 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 Ströme mit SequenceInputStream 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 Formatierte Textausgaben ......................................................................................................... 454 6.3.1 Die Klassen PrintWriter und PrintStream ............................................................ 455 6.3.2 System.out, System.err und System.in .................................................................. 460 Schreiben und Lesen aus Strings und Byte-Feldern ............................................................. 462 6.4.1 Mit dem StringWriter ein String-Objekt füllen ................................................... 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 ByteArrayInputStream aus einem Byte-Feld lesen .................................... 467 Datenströme 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/BufferedInputStream ................ 471 6.5.4 LineNumberReader zählt automatisch Zeilen mit * .......................................... 474 6.5.5 Daten mit der Klasse PushbackReader zurücklegen * ....................................... 474 6.5.6 DataOutputStream/DataInputStream * ................................................................ 478 6.5.7 Basisklassen für 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 für FilterReader und FilterWriter * ............................................ 483 Vermittler zwischen Byte-Streams und Unicode-Strömen ............................................... 491 6.6.1 Datenkonvertierung durch den OutputStreamWriter ..................................... 491 6.6.2 Automatische Konvertierungen mit dem InputStreamReader .................... 492 Kommunikation zwischen Threads mit Pipes * .................................................................... 493 6.7.1 PipedOutputStream und PipedInputStream ....................................................... 494 6.7.2 PipedWriter und PipedReader .................................................................................. 496 13 Inhalt 6.8 6.9 Prüfsummen ................................................................................................................................... 498 6.8.1 Die Schnittstelle Checksum ...................................................................................... 498 6.8.2 Die Klasse CRC32 .......................................................................................................... 499 6.8.3 Die Adler32-Klasse ....................................................................................................... 501 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 Binäre 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 Eigenschaften von XML-Dokumenten .................................................................................... 533 7.2.1 Elemente und Attribute ............................................................................................. 533 7.2.2 Beschreibungssprache für 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 7.2 14 Inhalt 7.3 7.4 7.5 7.6 7.7 Die Java-APIs für 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-Bäume einlesen mit JAXP * ............................................................................ 547 Java Architecture for XML Binding (JAXB) .............................................................................. 548 7.4.1 Bean für 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 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 Serielle Verarbeitung von XML mit SAX * .............................................................................. 582 7.6.1 583 Schnittstellen von SAX ............................................................................................... 7.6.2 SAX-Parser erzeugen ................................................................................................... 584 7.6.3 Operationen der Schnittstelle ContentHandler ................................................. 584 7.6.4 ErrorHandler und EntityResolver ........................................................................... 587 XML-Dateien mit JDOM verarbeiten ....................................................................................... 588 7.7.1 JDOM beziehen .............................................................................................................. 588 7.7.2 Paketübersicht * ............................................................................................................ 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 einfügen und ändern .................................................................... 600 15 Inhalt 7.8 7.9 7.7.11 Attributinhalte lesen und ändern .......................................................................... 603 7.7.12 XPath ............................................................................................................................... 606 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 XML-Schema-Validierung * ........................................................................................................ 614 7.9.1 SchemaFactory und Schema .................................................................................... 614 7.9.2 Validator ......................................................................................................................... 614 7.9.3 Validierung unterschiedlicher Datenquellen durchführen ........................... 615 7.10 Zum Weiterlesen .......................................................................................................................... 615 8 Dateiformate 8.1 Einfache Dateiformate für strukturierte Daten ................................................................... 618 8.1.1 618 8.2 8.3 Property-Dateien ......................................................................................................... 8.1.2 CSV-Dateien ................................................................................................................... 618 8.1.3 JSON-Serialisierung mit Jackson ............................................................................. 619 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 Datenkompression * .................................................................................................................... 624 8.3.1 Java-Unterstützung beim Komprimieren ............................................................ 625 8.3.2 Daten packen und entpacken .................................................................................. 626 8.3.3 Datenströme 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 Inhalt 9 Grafische Oberflächen mit Swing 9.1 Fenster zur Welt ............................................................................................................................ 645 9.1.1 Swing-Fenster mit javax.swing.JFrame darstellen ............................................. 645 9.1.2 Fenster schließbar machen – setDefaultCloseOperation() .............................. 647 9.1.3 Sichtbarkeit des Fensters ........................................................................................... 648 9.1.4 Größe und Position des Fensters verändern ....................................................... 648 9.1.5 Fenster- und Dialog-Dekoration, Transparenz * ................................................. 649 9.1.6 Die Klasse Toolkit * ...................................................................................................... 650 9.1.7 Dynamisches Layout während einer Größenänderung * ................................ 651 9.1.8 Zum Vergleich: AWT-Fenster darstellen * ............................................................. 651 Beschriftungen (JLabel) ............................................................................................................... 653 9.2.1 Mehrzeiliger Text, HTML in der Darstellung ....................................................... 656 Icon und ImageIcon für Bilder auf Swing-Komponenten .................................................. 657 9.3.1 Die Klasse ImageIcon .................................................................................................. 657 9.3.2 Die Schnittstelle Icon und eigene Icons zeichnen * ........................................... 659 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 Ereignisauslöser 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.2 9.3 9.4 9.5 9.6 Schaltflächen .................................................................................................................................. 676 9.5.1 Normale Schaltflächen (JButton) ............................................................................. 676 9.5.2 Der aufmerksame ActionListener ........................................................................... 678 9.5.3 Schaltflächen-Ereignisse vom Typ ActionEvent ................................................. 679 9.5.4 Basisklasse AbstractButton ....................................................................................... 680 9.5.5 Wechselknopf (JToggleButton) ................................................................................ 682 Textkomponenten ........................................................................................................................ 683 9.6.1 Text in einer Eingabezeile ......................................................................................... 684 9.6.2 Die Oberklasse der Text-Komponenten (JTextComponent) .......................... 685 9.6.3 Geschützte 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 Inhalt 9.7 Swing Action * ............................................................................................................................... 694 9.8 JComponent und Component als Basis aller Komponenten ............................................ 697 9.9 9.8.1 Hinzufügen 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 Größe 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 für Änderungen * .......................................................... 711 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 Übersicht über 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 .......................................................... Kontrollfelder (JCheckBox) ....................................................................................... 740 9.12.2 ItemSelectable, ItemListener und das ItemEvent ............................................. 741 9.12.3 Sich gegenseitig ausschließende Optionen (JRadioButton) ........................... 743 9.13 Fortschritte bei Operationen überwachen * ......................................................................... 18 739 9.12.1 745 9.13.1 Fortschrittsbalken (JProgressBar) ........................................................................... 745 9.13.2 Dialog mit Fortschrittsanzeige (ProgressMonitor) ........................................... 748 Inhalt 9.14 Menüs und Symbolleisten .......................................................................................................... 9.14.1 Die Menüleisten und die Einträge .......................................................................... 748 748 9.14.2 Menüeinträge definieren ........................................................................................... 750 9.14.3 Einträge durch Action-Objekte beschreiben ........................................................ 751 9.14.4 Mit der Tastatur: Mnemonics und Shortcut ........................................................ 752 9.14.5 Der Tastatur-Shortcut (Accelerator) ....................................................................... 753 9.14.6 Tastenkürzel (Mnemonics) ........................................................................................ 755 9.14.7 Symbolleisten alias Toolbars .................................................................................... 756 9.14.8 Popup-Menüs ................................................................................................................ 759 9.14.9 System-Tray nutzen * .................................................................................................. 764 9.15 Das Model-View-Controller-Konzept ...................................................................................... 765 9.16 Auswahlmenüs, Listen und Spinner ......................................................................................... 767 9.16.1 Listen (JList) .................................................................................................................... 767 9.16.2 Auswahlmenü (JComboBox) ..................................................................................... 775 9.16.3 Drehfeld (JSpinner) * .................................................................................................... 787 9.16.4 Datumsauswahl * .......................................................................................................... 789 9.17 Tabellen (JTable) ............................................................................................................................ 9.17.1 789 Ein eigenes Tabellen-Model ...................................................................................... 791 9.17.2 Basisklasse für eigene Modelle (AbstractTableModel) ..................................... 792 9.17.3 Ein vorgefertigtes Standard-Modell (DefaultTableModel) .............................. 796 9.17.4 Ein eigener Renderer für Tabellen .......................................................................... 798 9.17.5 Zell-Editoren .................................................................................................................. 801 9.17.6 Größe 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 Bäume (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 Inhalt 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 verändern * ....................................................... 833 9.22.1 Überlagerungen 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 Einfügungen in der Zwischenablage erkennen .................................................. 840 9.23.5 Drag & Drop ................................................................................................................... 841 9.24 Undo durchführen * ..................................................................................................................... 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 hören * ........................................................................................ 854 9.26 Barrierefreiheit mit der Java Accessibility API ..................................................................... 854 9.27 Zeitliches Ausführen 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 Überblick über 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 Oberflächen, AWT und Swing * ................................. 860 9.29.1 Deklarative Beschreibungen der Oberfläche: Swing JavaBuilder, Swixml 860 9.29.2 SWT (Standard Widget Toolkit) ............................................................................... 862 9.30 Zum Weiterlesen .......................................................................................................................... 864 20 Inhalt 10 Grafikprogrammierung 10.1 Grundlegendes zum Zeichnen ................................................................................................. 865 10.1.1 Die paint()-Methode für 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 Java 2D-API ................................................................................................................... 869 10.2 Einfache Zeichenmethoden ...................................................................................................... 870 10.2.1 Linien ............................................................................................................................. 870 10.2.2 Rechtecke ...................................................................................................................... 871 10.2.3 Ovale und Kreisbögen ............................................................................................... 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 Zeichensätze 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 Kreisförmiges .............................................................................................................. 889 10.4.3 Kurviges * ...................................................................................................................... 890 10.4.4 Area und die konstruktive Flächengeometrie * ................................................ 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 Äußere einer Form ........................................................................................ 10.5.1 Farben und die Paint-Schnittstelle ....................................................................... 896 896 10.5.2 Farben mit der Klasse Color .................................................................................... 897 10.5.3 Die Farben des Systems über SystemColor * ..................................................... 903 10.5.4 Composite und Xor * ................................................................................................. 907 10.5.5 Dicke und Art der Linien von Formen bestimmen über Stroke * ............... 908 10.6 Bilder ............................................................................................................................................... 913 10.6.1 Eine Übersicht über die Bilder-Bibliotheken ..................................................... 914 10.6.2 Bilder mit ImageIO lesen ......................................................................................... 915 10.6.3 Ein Bild zeichnen ........................................................................................................ 917 10.6.4 Programm-Icon/Fenster-Icon setzen ................................................................... 921 21 Inhalt 10.6.5 Splash-Screen * ........................................................................................................... 922 10.6.6 Bilder im Speicher erzeugen * ................................................................................ 922 10.6.7 Pixel für Pixel auslesen und schreiben * ............................................................ 925 10.6.8 Bilder skalieren * ........................................................................................................ 927 10.6.9 Schreiben mit ImageIO ............................................................................................ 929 10.6.10 Asynchrones Laden mit getImage() und dem MediaTracker * .................... 934 10.7 Weitere Eigenschaften von Graphics * ................................................................................. 935 10.7.1 Eine Kopie von Graphics erstellen ....................................................................... 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 * ....................................................................................................................................... 935 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 Bildschirmabzüge (Screenshots) ........................................................................... 950 10.9.6 Funktionsweise und Beschränkungen ................................................................ 952 10.9.7 MouseInfo und PointerInfo ................................................................................... 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 ............................................................................................................. 11.2.2 Die Klasse URL ............................................................................................................ 958 11.2.3 Informationen über eine URL * ............................................................................. 961 11.2.4 Der Zugriff auf die Daten über die Klasse URL ................................................. 963 11.3 Die Klasse URLConnection * ..................................................................................................... 965 22 957 11.3.1 Methoden und Anwendung von URLConnection ........................................... 965 11.3.2 Protokoll- und Content-Handler .......................................................................... 967 Inhalt 11.3.3 Im Detail: vom URL zur URLConnection ............................................................ 968 11.3.4 Der Protokoll-Handler für Jar-Dateien ................................................................ 969 11.3.5 Basic Authentication und Proxy-Authentifizierung ....................................... 971 11.4 Mit GET und POST Daten übergeben * .................................................................................. 973 11.4.1 Kodieren der Parameter für 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 Ströme ..................................................................... 985 11.6.5 Die Verbindung wieder abbauen ........................................................................... 986 11.6.6 Informationen über den Socket * .......................................................................... 986 11.6.7 Reine Verbindungsdaten über 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 außen 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 Inhalt 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 für 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 übertragen ..................................................... 1038 12.2.3 Probleme mit entfernten Methoden ................................................................... 1039 12.2.4 Nutzen von RMI bei Middleware-Lösungen ...................................................... 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 24 12.3.1 Entfernte Schnittstelle deklarieren ...................................................................... 1042 12.3.2 Remote-Objekt-Implementierung ....................................................................... 1043 Inhalt 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 Aufräumen mit dem DGC * ..................................................................................... 1050 12.4 Auf der Clientseite ...................................................................................................................... 1051 12.5 Entfernte Objekte übergeben 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 über HTTP getunnelt ........................................................................................ 1054 12.6.3 Automatische Remote-Objekt-Aktivierung ....................................................... 1054 12.7 Java Message Service (JMS) ...................................................................................................... 1055 12.8 Zum Weiterlesen ......................................................................................................................... 1055 13 RESTful und SOAP Web-Services 13.1 Web-Services ................................................................................................................................ 1057 13.2 RESTful Web-Services ................................................................................................................. 1059 13.2.1 Aus Prinzip REST ......................................................................................................... 1059 13.2.2 Jersey .............................................................................................................................. 1060 13.2.3 JAX-RS-Annotationen für 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 über 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 Inhalt 13.3.5 Web-Services veröffentlichen ................................................................................ 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-Funktionalität ................................................................ 1083 14.2.4 Tomcat installieren ................................................................................................... 1084 14.2.5 Ablageort für 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 zurückgreifen .......................................................................................................... 1096 14.6.1 26 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 übertragen ................................................................... 1100 Inhalt 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-Ausdrücke ............................................................................................................. 1106 14.8.3 JSP-Deklarationen ...................................................................................................... 1107 14.8.4 Quoting .......................................................................................................................... 1107 14.8.5 Entsprechende XML-Tags ........................................................................................ 1108 14.8.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke ........................................ 1108 14.9 Sitzungsverfolgung (Session Tracking) ................................................................................. 1109 14.9.1 Lösungen für die Sitzungsverfolgung .................................................................. 1109 14.9.2 Sitzungen in JSPs ........................................................................................................ 1110 14.9.3 Auf Session-Dateien zurückgreifen ...................................................................... 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 übergeben .................................................................... 1127 15.2.3 Wie das Applet den Browser-Inhalt ändern 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 Inhalt 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 ........................................................................................................ 16.1.1 1139 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 für 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 Aufzählung aller Treiber * .............................................................................. 1162 16.5.4 Log-Informationen * ................................................................................................. 1162 16.5.5 Verbindung zur Datenbank auf- und abbauen ................................................ 1163 16.6 Datenbankabfragen ................................................................................................................... 1167 28 16.6.1 Abfragen über 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 Inhalt 16.7 Elemente einer Datenbank hinzufügen 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 für die Platzhalter eines PreparedStatement ........................................ 1189 16.10 Transaktionen .............................................................................................................................. 1190 16.11 Metadaten * .................................................................................................................................. 1190 16.11.1 Metadaten über die Tabelle ..................................................................................... 1190 16.11.2 Informationen über 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 Überblick ......................................................................................... 1201 16.13.3 Persistence Unit .......................................................................................................... 1203 16.13.4 Ein JPA-Beispielprogramm ...................................................................................... 1204 16.14 Zum Weiterlesen ......................................................................................................................... 1205 17 Technologien für die Infrastruktur 17.1 Property-Validierung durch Bean Validation ...................................................................... 1207 17.1.1 Technische Abhängigkeiten 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 Inhalt 18 Reflection und Annotationen 18.1 Metadaten .................................................................................................................................... 18.1.1 Metadaten durch JavaDoc-Tags ............................................................................. 18.2 Metadaten der Klassen mit dem Class-Objekt ................................................................... 1227 1227 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 – Gespür für 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-Zustände kopieren * ....................................................................................... 1262 18.4.6 Private Attribute ändern ......................................................................................... 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 30 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) hinzufügen .................................................. 1271 18.5.5 Annotationsattribute vom Typ einer Aufzählung .......................................... 1272 Inhalt 18.5.6 Felder von Annotationsattributen ....................................................................... 1273 18.5.7 Vorbelegte Attribute ................................................................................................. 1274 18.5.8 Annotieren von Annotationstypen ...................................................................... 1276 18.5.9 Deklarationen für 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 Mögliche Nachteile von Annotationen ............................................................... 1287 18.6 Zum Weiterlesen ......................................................................................................................... 1288 19 Dynamische Übersetzung 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 übersetzen .................................................................... 1295 19.2.1 Java Compiler API ....................................................................................................... 1295 19.2.2 Fehler-Diagnose .......................................................................................................... 1298 19.2.3 Eine im String angegebene Compiliationseinheit übersetzen .................... 1300 19.2.4 Wenn Quelle und Ziel der Speicher sind ............................................................. 1302 19.3 Ausführen von Skripten ............................................................................................................ 1306 19.3.1 JavaScript-Programme ausführen ........................................................................ 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 log4j * ..................................................................................................... 1320 20.1.4 Die Simple Logging Facade ...................................................................................... 1323 20.2 Systemzustände überwachen .................................................................................................. 1324 31 Inhalt 20.3 MBean-Typen, MBean-Server und weitere Begriffe ......................................................... 20.3.1 1325 MXBeans des Systems .............................................................................................. 1325 20.4 Geschwätzige 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 ........................................................................... 21.2 Eine C-Funktion in ein Java-Programm einbinden ............................................................ 21.2.1 Den Java-Code schreiben ......................................................................................... 21.3 Dynamische Bibliotheken erzeugen ..................................................................................... 21.3.1 1337 1338 1338 1340 Die Header-Datei erzeugen ..................................................................................... 1340 21.3.2 Implementierung der Funktion in C ................................................................... 1342 21.3.3 Die C-Programme übersetzen und die dynamische Bibliothek überzeugen .................................................................................................................. 1343 21.4 Nativ die Stringlänge 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 Inhalt 22 Sicherheitskonzepte 22.1 Zentrale Elemente der Java-Sicherheit ................................................................................. 1355 22.1.1 Security-API der Java SE ............................................................................................ 1355 22.1.2 Cryptographic 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 Schlüssel erzeugen ............................................................................. 1369 22.4.4 Signieren mit jarsigner ............................................................................................. 1370 22.5 Digitale Unterschriften * ........................................................................................................... 1371 22.5.1 Die MDx-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 Verschlüsseln von Daten(-strömen) * .................................................................................... 1375 22.6.1 Den Schlüssel, bitte .................................................................................................... 1375 22.6.2 Verschlüsseln mit Cipher ......................................................................................... 1377 22.6.3 Verschlüsseln von Datenströmen ......................................................................... 1377 22.7 Zum Weiterlesen ......................................................................................................................... 1379 23 Dienstprogramme für 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 Inhalt 23.2.4 jstack .............................................................................................................................. 1383 23.2.5 VisualVM ...................................................................................................................... 1385 23.3 Programmieren mit der Tools-API ......................................................................................... 1390 23.3.1 Eigene Doclets ............................................................................................................. 23.4 Ant .................................................................................................................................................. 1390 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 Diassembler 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 ausführen ................................................. 1409 23.7 Zum Weiterlesen ........................................................................................................................ 1410 Index ............................................................................................................................................................ 1411 34 Kapitel 1 1 Neues in Java 7 »Jede Lösung eines Problems ist ein neues Problem.« – Johann Wolfgang von Goethe (1749–1832) 1.1 Sprachänderungen Die folgenden Abschnitte stellen Sprachänderungen aus Java 7 vor. 1.1.1 Zahlen im Binärsystem schreiben Die Literale für Ganzzahlen lassen sich in vier unterschiedlichen Stellenwertsystemen angeben. Das natürlichste ist das Dezimalsystem (auch Zehnersystem genannt), bei dem die Literale aus den Ziffern »0« bis »9« bestehen. Zusätzlich existieren Oktal- und Hexadezimalsysteme, und seit Java 7 die Binärschreibweise. Bis auf Dezimalzahlen beginnen die Zahlen in anderen Formaten mit einem besonderen Präfix. Präfix Stellenwertsystem Basis Darstellung von 1 0b oder 0B Binär 2 0b1 oder 0B1 0 Oktal 8 01 Kein Dezimal 10 1 0x oder 0X Hexadezimal 16 0x1 oder 0X1 Tabelle 1.1: Die Stellenwertsysteme und ihre Schreibweise 1.1.2 Unterstriche bei Ganzzahlen Um eine Anzahl von Millisekunden in Tage zu konvertieren, muss einfach eine Division vorgenommen werden. Um Millisekunden in Sekunden umzurechnen, brauchen wir eine Division durch 1000, von Sekunden auf Minuten eine Division durch 60, von Minuten auf Stun- 41 1 Neues in Java 7 den eine Division durch 60, und die Stunden auf Tage bringt die letzte Division durch 24. Schreiben wir das auf: long millis = 10 * 24*60*60*1000L; long days = millis / 86400000L; System.out.println( days ); // 10 Eine Sache fällt bei der Zahl 86400000 auf: Besonders gut lesbar ist sie nicht. Die eine Lösung ist, es erst gar nicht zu so einer Zahl kommen zu lassen und sie wie in der ersten Zeile durch eine Reihe von Multiplikationen aufzubauen – mehr Laufzeit kostet das nicht, da dieser konstante Ausdruck zur Übersetzungszeit feststeht. Die zweite Variante ist eine neue Schreibweise, die Java 7 einführt: Unterstriche in Zahlen. Anstatt ein numerisches Literal als 86400000 zu schreiben, ist in Java 7 auch Folgendes erlaubt: long millis = 10 * 86_400_000L; long days = millis / 86_400_000L; System.out.println( days ); // 10 Die Unterstriche machen die 1000er-Blöcke gut sichtbar. Hilfreich ist die Schreibweise auch bei Literalen in Binär- und Hexdarstellung, da die Unterstriche hier ebenfalls Blöcke absetzen können.1 Beispiel Unterstriche verdeutlichen Blöcke bei Binär- und Hexadezimalzahlen. int i = 0b01101001_01001101_11100101_01011110; long l = 0x7fff_ffff_ffff_ffffL; Der Unterstrich darf in jedem Literal stehen, zwei aufeinanderfolgende Unterstriche sind aber nicht erlaubt. 1.1.3 switch (String) Seit Java 7 sind switch-Anweisungen auf String-Objekten möglich. String input = javax.swing.JOptionPane.showInputDialog( "Eingabe" ); switch ( input.toLowerCase() ) 1 42 Bei Umrechnungen zwischen Stunden, Minuten und so weiter hilft auch die Klasse TimeUnit mit einigen statischen toXXX()-Methoden. 1.1 Sprachänderungen { 1 case "kekse": System.out.println( "Ich mag Keeeekse" ); break; case "kuchen": System.out.println( "Ich mag Kuchen" ); break; case "scholokade": case "lakritze": System.out.println( "Hm. lecker" ); break; default: System.out.printf( "Kann man %s essen?", input ); } Obwohl Zeichenkettenvergleiche nun möglich sind, fallen Überprüfungen auf reguläre Ausdrücke leider heraus, die insbesondere Skriptsprachen anbieten. Wie auch beim switch mit Ganzzahlen können die Zeichenketten beim String-case-Zweig aus finalen (also nicht änderbaren) Variablen stammen. Ist etwa String KEKSE = "kekse"; vordefiniert, ist case KEKSE: erlaubt. 1.1.4 Zusammenfassen gleicher catch-Blöcke mit dem multi-catch Greift ein Programm auf Teile zurück, die scheitern können, so ergeben sich in komplexeren Abläufen schnell Situationen, in denen unterschiedliche Ausnahmen auftreten können. Entwickler sollten versuchen, den Programmcode in einem try-Block durchzuschreiben, und dann in catch-Blöcken auf alle möglichen Fehler zu reagieren, die den Block vom korrekten Durchlaufen abgehalten haben. Oftmals kommt es zu dem Phänomen, dass die aufgerufenen Programmteile unterschiedliche Ausnahmetypen auslösen, aber die Behandlung der Fehler gleich aussieht. Um Quellcodeduplizierung zu vermeiden, sollte der Programmcode zusammengefasst werden. Nehmen wir an, die Behandlung der Ausnahmen SQLException und IOException soll gleich sein. Wir haben schon gesehen, dass ein catch(Exception e) keine gute Lösung ist und nie im Programmcode vorkommen sollte, denn dann würden auch andere Ausnahmen mitgefangen. Zum Glück gibt es in Java 7 eine elegante Lösung. 43 1 Neues in Java 7 Multi-catch Java 7 führt eine neue Schreibweise für catch-Anweisungen ein, um mehrere Ausnahmen auf einmal aufzufangen; sie heißt multi-catch. In der abgewandelten Variante von catch steht dann nicht mehr nur eine Ausnahme, sondern eine Sammlung von Ausnahmen, die ein »|« trennt. Der Schrägstrich ist schon als Oder-Operator bekannt und wurde daher auch hier eingesetzt, denn die Ausnahmen sind ja auch als eine Oder-Verknüpfung zu verstehen. Die allgemeine Syntax ist: try { ... } catch ( E1 | E2 | ... | En exception ) Die Variable exception ist implizit final. Um das multi-catch zu demonstrieren, nehmen wir ein Programm an, das eine Farbtabelle einliest. Die Datei besteht aus mehreren Zeilen, wobei in jeder Zeile die erste Zahl einen Index repräsentiert und die zweite Zahl den hexadezimalen RGB-Farbwert. Listing 1.1: basiscolors.txt 0 000000 1 ff0000 8 00ff00 9 ffff00 Eine eigene Methode readColorTable() soll die Datei einlesen und ein int-Feld der Größe 256 als Rückgabe liefern, wobei an den in der Datei angegebeen Positionen jeweils die Farbwerte eingetragen sind. Nicht belegte Positionen bleiben 0. Gibt es einen Ladefehler, soll die Rückgabe null sein und die Methode eine Meldung auf dem Fehlerausgabekanal ausgeben. Das Einlesen soll die Scanner-Klasse übernehmen. Bei der Verarbeitung der Daten und der Füllung des Feldes sind diverse Fehler denkbar: Þ IOException: Die Datei ist nicht vorhanden, oder während des Einlesens kommt es zu Pro- blemen. Þ InputMismatchException: Der Index oder die Hexadezimalzahl sind keine Zahlen (einmal zur Basis 10, und dann zur Basis 16). Den Fehlertyp löst der Scanner aus. Þ ArrayIndexOutOfBoundsException: Der Index liegt nicht im Bereich von 0 bis 255. Während der erste Fehler beim Dateisystem zu suchen ist, sind die zwei unteren Fehler – unabhängig davon, dass sie ungeprüfte Ausnahmen sind – auf ein fehlerhaftes Format zurück- 44 1.1 Sprachänderungen zuführen. Die Behandlung soll immer gleich aussehen und kann daher gut in einem multicatch zusammengefasst werden. Daraus folgt: Listing 1.2: ReadColorTable.java import java.io.*; import java.util.Scanner; public class ReadColorTable { private static int[] readColorTable( String filename ) { Scanner input; int[] colors = new int[ 256 ]; try { input = new Scanner( new File(filename) ); while ( input.hasNextLine() ) { int index = input.nextInt(); int rgb = input.nextInt( 16 ); colors[ index ] = rgb; } return colors; } catch ( IOException e ) { System.err.printf( "Dateioperationen fehlgeschlagen%n%s%n", e ); } catch ( InputMismatchException | ArrayIndexOutOfBoundsException e ) { System.err.printf( "Datenformat falsch%n%s%n", e ); } finally { input.close(); } return null; } 45 1 Index Index #IMPLIED ............................................................. 538 @XmlElementRef, Annotation ..................... 565 #REQUIRED ......................................................... 538 @XmlElementRefs, Annotation ................... 565 %tD ......................................................................... 346 @XmlElementWrapper, Annotation ........... 560 %tR ......................................................................... 346 @XmlJavaTypeAdapter, Annotation ........... 561 %tT ......................................................................... 346 @XmlList, Annotation ..................................... 559 &amp ..................................................................... 534 @XmlRootElement, Annotation ......... 549, 564 &apos .................................................................... 534 @XmlType, Annotation .................................. 558 &gt .......................................................................... 534 @XmlValue, Annotation ................................ 559 &lt ........................................................................... 534 [L ........................................................................... 1234 &quot .................................................................... 534 1.1.1970 ................................................................ 307 , Ant ..................................................................... 1344 1099, Port rmiregistry .................................... 1046 .class .................................................................... 1229 200, OK HTTP-Statuscode ............................. 1004 .java.policy ........................................................ 1364 404, Not Found HTTP-Statuscode ............... 1004 .keystore ............................................................ 1369 80, HTTP-Port ..................................................... 999 .NET Remoting ................................................. 1037 8080, HTTP-Port ................................................. 999 @CookieParam, Annotation ....................... 1070 @deprecated .................................................... 1227 A @Documented, Annotation ........................ 1280 @GET, Annotation ......................................... 1062 Abstract Syntax Notation One .................... 1369 @Inject, Annotation ...................................... 1225 AbstractAction, Klasse ..................................... 695 @javax.management.MXBean, AbstractBorder, Klasse ..................................... 699 Annotation ................................................... 1332 AbstractButton, Klasse .................................... 680 @NotNull, Annotation .................................. 1208 AbstractTableModel, Klasse ........................... 792 @OneWay, Annotation ................................. 1074 Accelerator .......................................................... 753 @Override, Annotation ................................ 1268 accept(), ServerSocket ...................................... 990 @Path, Annotation ........................................ 1062 Access Controller ............................................. 1355 @PathParam, Annotation ............................ 1069 Accessible, Schnittstelle .................................. 854 @Produces, Annotation ............................... 1062 AccessibleObject, Klasse ..................... 1244, 1262 @QueryParam, Annotation ......................... 1070 Action, Schnittstelle ................................ 695, 751 @Retention, Annotation .............................. 1279 ACTION_PERFORMED, ActionEvent ............ 674 @SOAPBinding, Annotation ....................... 1074 Action-Command .............................................. 682 @SuppressWarnings, Annotation ............. 1268 ActionListener, Schnittstelle ....... 662, 676, 678 @Target, Annotation ..................................... 1276 Activatable, Klasse .......................................... 1055 @Transient, Annotation ................................. 558 Activation Daemon ........................................ 1055 @WebMethod, Annotation ......................... 1074 activation.jar ..................................................... 1021 @WebParam, Annotation ............................ 1074 Adapter ................................................................. 201 @WebResult, Annotation ............................ 1074 Adapter, MBean ............................................... 1325 @WebService, Annotation ........................... 1074 Adapterklasse ..................................................... 668 @XmlAccessorType, Annotation .................. 557 add(), Container ........................................ 653, 697 @XmlAttribute, Annotation .......................... 558 addActionListener(), JButton ......................... 678 @XmlElement, Annotation ............................ 551 addItem(), JComboBox .................................... 776 1411 Index addKeyListener(), Component ...................... 703 Ära .......................................................................... 350 addWindowListener() ....................................... 666 Arc2D, Klasse .............................................. 888–889 Adjustable, Schnittstelle ................................. 736 Area, Klasse .......................................................... 890 AdjustmentEvent, Klasse ................................ 734 AreaAveragingScaleFilter ................................ 929 AdjustmentListener, Schnittstelle ............... 737 ARM-Block ............................................................. 51 Adleman, Leonard M. ..................................... 1371 Array, Klasse ..................................................... 1240 Adler32, Klasse ................................................... 502 ArrayBlockingQueue, Klasse .......................... 287 Adobe Flash ....................................................... 1124 ArrayDeque, Klasse ........................................... 222 Affine Transformation .................................... 941 ArrayList, Klasse ............. 176, 183, 185, 188, 197 AffineTransform, Klasse .................................. 942 ArrayStoreException ........................................ 205 Age, Response-Header ................................... 1005 Artefakte ............................................................... 932 AIFF ........................................................................ 641 Aschermittwoch ................................................. 326 Al-Chwârismî, Ibn Mûsâ .................................. 175 asList(), Arrays ........................................... 201, 265 AlgorithmParameterSpec, Schnittstelle ... 1376 ASM ..................................................................... 1279 Algorithmus ........................................................ 175 ASN.1 .................................................................. 1369 -alias .................................................................... 1369 ASP (Active Server Pages) ............................. 1080 Allgemeines Semaphor ................................... 139 Assistive technology ......................................... 854 allowSystemProperty ..................................... 1365 Assoziativer Speicher ....................................... 184 AllPermission ................................................... 1366 asSubclass(), Class ........................................... 1268 AlphaComposite, Klasse .................................. 907 Astronomie .......................................................... 305 AlreadyBoundException ............................... 1049 Atomar .................................................................... 99 AM_PM, Calendar .............................................. 329 Atomuhr ............................................................... 306 Anmelde-/Versendesystem ......................... 1055 Attribute ............................................................... 533 AnnotatedElement, Schnittstelle .... 1253, 1282 AU ........................................................................... 641 Annotiert ........................................................... 1228 AudioClip, Klasse ............................................... 640 Ant ....................................................................... 1393 AUGUST, Calendar ............................................. 323 Antialiasing ................................................ 871, 941 Ausgabeformatierung ...................................... 306 ANY ........................................................................ 537 Auswahlmenü ..................................................... 775 Apache Commons BeanUtils ....................... 1262 Auszeichnungssprache ........................... 531, 617 Apache Commons Collections ...................... 304 authentication required ............................... 1008 Apache Commons Compress ......................... 626 Authenticator, Klasse ....................................... 971 Apache Commons DBCP ............................... 1198 Authentifizierung ........................................... 1367 Apache Commons IO ............................... 368, 434 Auto-Commit ................................................... 1190 Apache Commons Logging ........................... 1323 Automatic Resource Management (ARM) .... 51 Apache Commons Net ..................................... 998 Automatischer Bildlauf .................................... 714 Apache Commons Primitives ........................ 208 Autorisierung .................................................. 1367 Apache CXF ........................................................ 1073 await(), Condition .............................................. 125 Apache POI .......................................................... 622 AWTEvent, Klasse .............................................. 673 Appendable, Schnittstelle ............................... 451 AWTEventListener, Schnittstelle ................... 854 Apple, Look and Feel ......................................... 832 AWT-Event-Thread ................................... 672, 844 Applet ................................................................. 1125 AWT-Input ............................................................. 78 AppletContext ......................................... 641, 1129 AWT-Motif ............................................................. 78 APRIL, Calendar .................................................. 323 Axis2 ................................................................... 1073 1412 Index B BufferedReader, Klasse ........................... 439, 471 BufferedWriter ................................................... 469 barrier ................................................................... 143 build.xml ........................................................... 1394 Base64-Encoding ............................................. 1020 ButtonGroup, Klasse ........................................ 743 Baseline ................................................................. 877 ByteArrayInputStream, Klasse ...................... 467 BasicFileAttributes, Schnittstelle ......... 398–399 ByteArrayOutputStream, Klasse ................... 467 BasicFileAttributeView, ByteBuffer, Klasse ............................................. 423 Schnittstelle ........................................... 397, 403 Bytecode Verifier ............................................. 1355 BasicStroke, Klasse ............................................ 908 BZip2 ............................................................ 625–626 BatchUpdateException ................................. 1177 Bean Validation ............................................... 1207 beans.xml .......................................................... 1225 C Bean-Zustände kopieren ............................... 1262 Cache, Bilder ....................................................... 934 Beautifier ........................................................... 1408 Cache-Control ................................................... 1004 Berkeley-Socket-Interface ............................... 983 CachedRowSet, Schnittstelle ........................ 1183 Berners-Lee, Tim ................................................ 998 CAG (Constructive Area Geometry) ............. 891 BevelBorder, Klasse ........................................... 699 Calendar, Klasse ........................................ 306, 320 Bézier-Kurve ........................................................ 890 Callable, Schnittstelle ......................................... 93 Bilder skalieren ................................................... 927 CallableStatement, Schnittstelle ................. 1168 Bildlaufleiste ....................................................... 733 Canvas .................................................................. 913 Binäre Suche (binary search) .......................... 278 CAP_BUTT, BasicStroke ................................... 909 Binäres Semaphor ............................................. 139 CAP_ROUND, BasicStroke ...................... 909, 912 Binärsystem .......................................................... 41 CAP_SQUARE, BasicStroke .............................. 909 binarySearch(), Arrays ...................................... 264 CardLayout, Klasse ............................................ 717 bind(), Registry ................................................ 1048 Caret ...................................................................... 685 Biometrisches System ................................... 1368 CASE_INSENSITIVE_ORDER, String .............. 265 Birrel ................................................................... 1035 CDATA ................................................................... 537 Bitmenge .............................................................. 299 CDI ....................................................................... 1224 BitSet, Klasse ....................................................... 299 CERN ...................................................................... 998 Bitttage .................................................................. 326 Certificate Authority, CA ............................... 1368 Bitweise Manipulation ..................................... 299 CET (Central European Time) ......................... 336 BlockingQueue, Schnittstelle ................ 223, 287 ChangeListener, Schnittstelle ........................ 733 Bootstrap Class Loader .................................. 1355 CharArrayReader, Klasse ................................. 465 Border, Schnittstelle ......................................... 699 CharArrayWriter, Klasse .................................. 464 BorderFactory, Klasse ....................................... 700 Checkbox, Klasse ............................................... 740 BorderLayout, Klasse ............................... 717, 721 checkError() ......................................................... 455 BoundedRangeModel, Schnittstelle ............. 734 Checksum, Schnittstelle .................................. 498 BoxLayout ............................................................ 732 choice box ........................................................... 775 BoxLayout, Klasse ..................................... 717, 720 Christi Himmelfahrt ......................................... 326 brighter(), Color .................................................. 901 Cipher, Klasse ................................................... 1377 Brightness ............................................................ 902 CipherInputStream, Klasse ........................... 1377 Bucket, Hash-Tabelle ........................................ 241 CipherOutputStream, Klasse ....................... 1377 BufferedImage, Klasse ...................................... 924 Class, Klasse ...................................................... 1228 BufferedInputStream, Klasse ................ 439, 471 class, Schlüsselwort ........................................ 1238 BufferedOutputStream .................................... 469 ClassLoader, Klasse ......................................... 1357 1413 Index ClassNotFoundException ...... 1229–1230, 1242 Connector-Level .............................................. 1325 Client ................................................................... 1038 Constraints, Validierung .............................. 1208 Client, Klasse ..................................................... 1063 ConstraintValidator, Schnittstelle ............. 1217 ClientResponse, Klasse .................................. 1064 ConstraintViolation, Schnittstelle ............. 1209 Client-Server-Kommunikation ..................... 989 Constructor, Klasse ........................................ 1250 Clip-Bereich ......................................................... 867 Contact Port ........................................................ 984 Clipboard .................................................... 754, 836 Container ............................................................. 176 Clipboard, Klasse ............................................... 836 contains(), Shapre .............................................. 895 Clipper ................................................................ 1372 containsKey(), Map ........................................... 233 Clipping ................................................................ 896 Content Negotiation ...................................... 1067 Clipping-Bereich ................................................ 937 Content-Encoding .......................................... 1006 Closeable, Schnittstelle .................................... 443 Content-Handler ....................................... 965, 968 closePath(), Path2D ........................................... 894 ContentHandler, Schnittstelle ....................... 583 Cloudscape ........................................................ 1140 Content-Pane ...................................................... 646 Clustering, Hash-Tabelle ................................. 241 Contexts and Dependency Injection for Codebase ............................................................ 1363 the Java EE platform .................................. 1224 Codehaus XFire ................................................ 1073 Controller ............................................................. 765 Collator, Klasse ................................................... 266 CopyOnWriteArrayList, Klasse ............. 188, 285 Collection, Schnittstelle ......................... 176, 178 CopyOnWriteArraySet, Klasse ....................... 285 Collection-API .................................................... 175 CopyOption, Schnittstelle ............................... 395 Collections, Klasse ............................................ 176 CORBA (Common Object Request Broker Color, Klasse ........................................................ 897 Architecture) ..................................... 1037, 1053 com.sun.image.codec.jpeg, Paket ................. 915 CRC32, Klasse ...................................................... 500 com.sun.net.httpserver, Paket .................... 1006 createCompatibleImage(), com4j .................................................................. 1353 GraphicsConfiguration ................................ 923 ComboBoxModel, Schnittstelle .................... 775 createDirectories(), Files .................................. 407 Command Model ............................................... 662 createDirectory(), Files ..................................... 406 Component, Klasse ........................................... 697 createFile(), Files ................................................. 406 ComponentEvent, Klasse ................................ 674 createGraphics(), BufferedImage .................. 924 ComponentListener, Schnittstelle ............... 707 createRegistry(), LocateRegistry ................. 1045 ComponentUI, Klasse ....................................... 766 createStatement(), Connection ................... 1168 Composite Pattern ............................................ 697 createSymbolicLink(), Files ............................. 407 Composite, Schnittstelle ................................. 907 Crimson ................................................................ 546 CompoundBorder, Klasse ............................... 699 Cryptographic Service Provider ................. 1356 CONCUR_UPDATABLE, ResultSet .... 1176, 1184 CSV (Comma-separated Values) .................... 618 ConcurrentHashMap, Klasse ......................... 285 CubicCurve2D, Klasse ....................................... 888 ConcurrentLinkedQueue, Klasse .................. 285 currentThread(), Thread .................................... 72 ConcurrentMap, Schnittstelle ....................... 284 currentTimeMillis(), System ........................... 307 ConcurrentModificationException ............. 259 curveTo(), GeneralPath .................................... 891 ConcurrentSkipListMap, Klasse ........... 185, 285 Custom tag library .......................................... 1101 ConcurrentSkipListSet, Klasse ....................... 285 CXF, Apache ...................................................... 1073 Condition, Schnittstelle .................................. 125 cxxwrap ............................................................. 1352 Connection, Schnittstelle .................. 1004, 1159 CyberNeko ........................................................... 621 Connector/J ....................................................... 1142 CyclicBarrier, Klasse .......................................... 143 1414 Index D Deadlock .............................................................. 119 DECEMBER, Calendar ....................................... 323 Dämon .................................................................... 76 Decompiler ........................................................ 1398 darker(), Color ..................................................... 901 default, Schlüsselwort .................................... 1275 Dash attribute ..................................................... 908 DefaultHandler, Klasse ........................... 583–584 Database Management System .................. 1139 DefaultListCellRenderer, Klasse .................... 774 DatabaseMetaData, Schnittstelle ............... 1194 DefaultListModel, Klasse ................................ 773 DataFlavor, Klasse ............................................. 838 DefaultListModel, Schnittstelle .................... 768 Datagramm ....................................................... 1012 DefaultMutableTreeNode, Klasse ................. 809 DatagramPacket, Klasse ................................ 1012 defaultReadObject(), ObjectInputStream ... 514 Datagram-Socket ............................................. 1010 DefaultTableCellRenderer, Klasse ................ 798 DatagramSocket, Klasse ..................... 1010, 1012 DefaultTableModel, Klasse ............................. 796 DataInput, Schnittstelle .......................... 383, 506 defaultWriteObject(), ObjectOutput- DataInputStream, Klasse ................................. 478 Stream .............................................................. 513 DataOutput, Schnittstelle ....................... 383, 506 Deflater, Klasse .................................................. 626 DataOutputStream, Klasse .............................. 478 Dekoration .......................................................... 649 DataSource ........................................................ 1195 Delegation Model .............................................. 662 DataSource, Schnittstelle ............................. 1195 delete(), Files ....................................................... 408 DatatypeFactory, Klasse .......................... 341, 562 DELETE, HTTP-Methode ................................ 1000 DATE, Calendar ................................................... 328 deleteIfExists(), Files ......................................... 408 Date, General Header Fields ........................ 1004 Dependency Injection .................................... 1221 Date, Klasse ................................................. 306, 317 Deployment-Descriptor ................................ 1087 DateFormat, Klasse ......................... 306, 346, 352 Deque .................................................................... 220 Dateiattribute ..................................................... 397 Deque, Schnittstelle ................................. 184, 222 Dateiauswahldialog .......................................... 823 Derby .................................................................. 1140 Dateiformat ......................................................... 617 Dereferenced-Meldung ................................. 1050 Dateisystem-Attribute ..................................... 397 deriveFont(), Font .............................................. 880 Dateiverknüpfung ............................................. 364 DES (Data Encryption Standard) ................. 1375 Datenbankausprägung .................................. 1140 Dezimalsystem .................................................... 41 Datenbankschema .......................................... 1140 DGC ...................................................................... 1050 Datenbankverbindung .................................. 1164 Dialog ........................................................... 818–819 Datenbankverwaltungssystem ................... 1139 Digitale Unterschrift ...................................... 1371 Datenbasis ........................................................ 1139 DirectoryNotEmptyException ...................... 408 Datenkompression ............................................ 624 DirectoryStream, Schnittstelle ...................... 410 Datenstrukturen ................................................ 175 DirectoryStream.Filter, Schnittstelle .......... 411 Datenzeiger ......................................................... 384 Direkte ByteBuffer ............................................ 423 Datumswerte ....................................................... 306 Distributed Component Object Model DAY_OF_MONTH, Calendar ........................... 328 (DCOM) .......................................................... 1037 DAY_OF_WEEK, Calendar ................................ 329 Distributed GC ................................................. 1050 DAY_OF_WEEK_IN_MONTH, Calendar ....... 329 divide and conquer ........................................... 149 DAY_OF_YEAR, Calendar ................................. 329 Divider .................................................................. 712 DB2 ...................................................................... 1143 -Djava.rmi.dgc.leaseValue ............................ 1050 dBase, JDBC ....................................................... 1155 -Djava.rmi.server.codebase .......................... 1053 DBMS .................................................................. 1139 -Djava.security.debug .................................... 1361 -Dcom.sun.management.jmxremote ....... 1329 -Djava.security.manager ............................... 1362 1415 Index -Djava.security.policy .................................... 1364 Dynamischer Methodenaufruf ................... 1266 -Djdbc.drivers ................................................... 1160 Dynamisches Layout ........................................ 651 dll-Dateien ......................................................... 1343 DnD, Drag & Drop ............................................. 841 E DNS ........................................................... 1011, 1135 Doclet ....................................................... 1228, 1390 EBCDIC .................................................................. 491 DOCTYPE .............................................................. 539 Echozeichen ........................................................ 686 Document Object Model ................................. 545 EclipseLink ........................................................ 1201 Document Type Definition ............................ 535 ECML ................................................................... 1096 Document, Klasse .............................................. 590 Editor-Kit .............................................................. 692 DocumentBuilderFactory ............................... 547 eFace ...................................................................... 861 Dokumentenformat ......................................... 620 Electronic Commerce Modeling DOM ...................................................................... 545 Language ....................................................... 1096 DOM Level 3 XPath ........................................... 607 Element suchen ......................................... 278, 282 Domain Name Server ..................................... 1135 Element, Klasse .................................................. 594 Domain Name System ................................... 1011 Element, XML ...................................................... 533 Domain Specific Language (DSL) ................ 1289 ElementType, Aufzählung ............................ 1276 DOMBuilder, Klasse .......................................... 591 Ellipse2D, Klasse ................................................ 888 Doppel-Pufferung, Swing ................................ 712 EmptyBorder, Klasse ......................................... 699 DosFileAttributes, Schnittstelle .................... 399 EmptyStackException ...................................... 220 DosFileAttributeView, Schnittstelle ... 397, 403 End caps ................................................................ 909 Double-Buffering, Swing ................................. 712 Endpoint, Klasse .............................................. 1075 Dozer ................................................................... 1262 ENGLISH, Locale ................................................. 310 Drag & Drop ........................................................ 841 ensureCapacity(), List ....................................... 199 draw(Shape), Graphics2D ................................ 887 Entfernte Methoden ...................................... 1035 draw3DRect(), Graphics ................................... 901 Entfernte Methodenaufrufe ........................ 1035 drawImage(), Graphics ..................................... 917 Entfernte Objekte ........................................... 1042 drawLine(), Graphics ........................................ 871 Entität ................................................................... 534 drawString(), Graphics ..................................... 877 Entity .................................................................. 1005 Drehfeld ............................................................... 787 Entity-Beans ..................................................... 1199 DriverManager, Klasse ........................ 1160, 1163 Entity-Body ....................................................... 1005 Drucken ................................................................ 944 Entity-Header ........................................ 1002, 1005 DSAPrivateKeySpec, Klasse .......................... 1377 EntityResolver, Schnittstelle .......................... 583 DST_OFFSET, Calendar ..................................... 329 entrySet(), Map ................................................... 238 DTD ........................................................................ 535 Enumeration, Schnittstelle ............................. 260 DTDHandler, Schnittstelle .............................. 583 Enumerator ......................................................... 249 Duration, Klasse ....................................... 342, 563 EOFException ............................................. 382, 478 Durchschuss ....................................................... 884 ERA, Calendar ...................................................... 328 -Duser.timezone ................................................ 324 Ereignis, GUI ........................................................ 673 Dynamic invocation ....................................... 1264 Ereignisauslöser ................................................. 662 dynamic linked libraries ............................... 1343 Ereignisschlange ................................................ 844 Dynamic MBeans ............................................ 1325 ErrorHandler, Schnittstelle ............................. 583 Dynamische Datenstruktur ........................... 175 EtchedBorder, Klasse ........................................ 699 Dynamische Webseite ................................... 1079 Event Queue ........................................................ 844 Event-Dispatching-Thread .............................. 672 1416 Index EventFilter, Schnittstelle ................................. 578 FileSystems, Klasse ........................................... 416 Eventquelle .......................................................... 662 FileTypeDetector, Klasse ................................. 409 EventQueue, Klasse ......................... 844, 849, 853 FileVisitOption, Aufzählung .......................... 415 Event-Source ....................................................... 662 FileVisitor, Schnittstelle .................................. 413 Excel-Dokumente .............................................. 623 FileVisitResult, Aufzählung ............................ 413 Exchanger, Klasse .............................................. 145 FileWriter, Klasse ............................................... 428 executeQuery(), Statement .......................... 1168 fill(), Collections ................................................. 280 executeUpdate(), Statement ........................ 1168 FilteredRowSet, Schnittstelle ....................... 1183 Executor, Schnittstelle ....................................... 89 FilterInputStream, Klasse ............................... 478 ExecutorService, Schnittstelle ......................... 90 FilterOutputStream, Klasse ............................ 478 EXIT_ON_CLOSE, JFrame ................................. 647 FilterReader, Klasse .......................................... 478 exportObject(), UnicastRemoteObject ...... 1048 FilterWriter, Klasse ........................................... 478 eXtensible Markup Language ......................... 532 final, Schlüsselwort ........................................ 1238 Fingerabdruck .................................................. 1371 F FIPS ...................................................................... 1372 Firewall ............................................................... 1054 Farbe ...................................................................... 897 First in, First out ................................................ 184 Farbmodell ........................................................... 902 Fitts’s Law ............................................................ 718 Farbsättigung ...................................................... 902 Five-Nine-System ............................................ 1367 fastutil ................................................................... 208 Flache Kopie ........................................................ 234 FEBRUARY, Calendar ......................................... 323 FlowLayout, Klasse ................................... 717–718 Federal Information Processing Standards Flushable, Schnittstelle ................................... 444 Publication ................................................... 1372 FocusEvent, Klasse ............................................ 674 Fenster .................................................................. 645 FocusListener, Schnittstelle ........................... 702 Fenstermenü ....................................................... 748 Fokus ..................................................................... 701 Field, Klasse ................................ 1243–1244, 1255 Font, Klasse ................................................ 656, 878 Fielding, Roy Thomas .................................... 1059 FontFormatException ...................................... 882 FIFO-Prinzip ......................................................... 184 FontMetrics, Klasse ........................................... 882 File, Klasse ............................................................ 358 FontRenderContext, Klasse ............................ 885 file.encoding ........................................................ 491 ForkJoinPool, Klasse ......................................... 153 File.separatorChar ............................................. 360 format() ................................................................ 455 FileAlreadyExistsException ............................ 406 Formatierungsanweisungen .......................... 347 FileAttribute, Schnittstelle .............................. 406 Formatierungsstring ............................... 350–351 FileChannel, Klasse ................................... 376, 424 forName(), Class ............................................... 1229 FileDescriptor, Klasse ....................................... 435 Fortschrittsbalken ............................................. 745 FileFilter, Schnittstelle ..................................... 366 Frame .................................................................... 645 FileInputStream, Klasse ................................... 431 FRANCE, Locale .................................................. 310 FileNameExtensionFilter, Klasse .................. 823 FRENCH, Locale .................................................. 310 FilenameFilter, Schnittstelle .......................... 366 Fronleichnam ..................................................... 326 FileOutputStream, Klasse ................................ 431 FULL, DateFormat .............................................. 348 FilePermission ................................................. 1366 Füllfaktor ............................................................. 241 FileReader, Klasse .............................................. 430 Füllmuster ........................................................... 912 FileSystem, Klasse .............................................. 386 Füllung, Paint ..................................................... 896 FileSystem, Schnittstelle ................................. 416 Future, Schnittstelle ........................................... 94 1417 Index G GMST ..................................................................... 305 GNU Trove ........................................................... 208 G1, Garbage-Collector ........................................ 60 Google Collections Library .............................. 294 Gebundene Property ........................................ 711 Google Guava ............................................. 294, 304 Geburtsdatum .................................................... 332 GradientPaint ..................................................... 897 Geburtstagsparadoxon .................................. 1371 grant-Anweisung ............................................ 1363 Gegenseitiger Ausschluss ......................... 99, 104 Granularität, Threads ......................................... 88 General Header ................................................ 1002 Graphics Interchange Format ........................ 914 GeneralPath, Klasse .......................................... 891 Graphics, Klasse ................................................. 866 -genkey ............................................................... 1369 Graphics2D, Klasse ............................................ 866 Geordnete Liste .................................................. 183 GraphicsEnvironment, Klasse ....................... 880 GERMAN, Locale ................................................ 310 Greenwich Mean Sidereal Time ..................... 305 GERMANY, Locale .............................................. 310 GregorianCalendar, Klasse ..................... 320, 322 get(), List ............................................................... 189 Gregorianischer Kalender ............................... 320 get(), Map ............................................................. 232 GridBagConstraints, Klasse ............................ 726 GET, HTTP-Methode ....................................... 1000 GridBagLayout, Klasse ............................. 717, 725 getAttribute(), Files ........................................... 404 GridLayout, Klasse .................................... 717, 724 getBytes(), ResultSet ....................................... 1175 Groovy ............................................................... 1313 getClass(), Object ............................................. 1229 Groovy-Eclipse ................................................. 1313 getColumnClass(), TableModel ...................... 793 GroupLayout, Klasse ......................................... 717 getColumnCount(), TableModel ................... 793 Grundlinie ........................................................... 877 getColumnName(), TableModel .................... 793 Grundton ............................................................. 902 getConnection(), DriverManager ................ 1160 Guard ..................................................................... 131 getContentPane(), JFrame ............................... 646 Guarded action ................................................... 131 getDefaultToolkit(), Toolkit ............................ 650 Guarded wait ....................................................... 131 getFileAttributeView(), Files .......................... 401 Guava ........................................................... 294, 304 getInstance(), Calendar .................................... 324 GUI-Builder ....................................................... 1227 GET-Methode ............................................. 973, 999 Guice ................................................................... 1221 getPriority(), Thread ........................................... 87 Gültigkeit, XML .................................................. 535 getProperty(), Properties ................................. 243 gzip ...................................................................... 1006 getResource() ...................................................... 446 GZIPInputStream, Klasse ................................. 627 getResourceAsStream() ................................... 446 GZIPOutputStream, Klasse ............................. 627 getRowCount(), TableModel ........................... 793 GetStringUTFChars ......................................... 1345 getTableCellEditorComponent(), H TableCellEditor .............................................. 801 H2 ........................................................................ 1143 getText(), JLabel ................................................. 654 Halbierungssuche .............................................. 278 getText(), JTextComponent ............................ 685 Hashcode .............................................................. 241 getTimeInMillis(), Calendar ........................... 325 Hash-Funktion .................................................... 241 getValueAt(), TableModel ............................... 793 HashMap, Klasse ....................................... 186, 229 GIF .......................................................................... 914 HashSet, Klasse .......................................... 184, 213 Glass-Pane ........................................................... 815 Hash-Tabelle ........................................................ 229 Globbing-Syntax ................................................ 411 Hash-Verfahren ............................................... 1371 gluegen ............................................................... 1352 HEAD, HTTP-Methode ................................... 1000 Glyphe .................................................................. 877 Header-Datei .................................................... 1341 1418 Index HEAD-Methode ................................................... 999 ImageIO ................................................................ 915 Helligkeit .............................................................. 902 ImageIO, Klasse .................................................. 915 Hexadezimalsystem ........................................... 41 ImageObserver, Schnittstelle ........................ 918 Hibernate .......................................................... 1206 InetAddress, Klasse ........................................... 979 Hibernate Validator ....................................... 1208 InetSocketAddress, Klasse .............................. 988 HierarchyEvent, Klasse .................................... 675 Inflater, Klasse .................................................... 626 High-level event ................................................. 674 InheritableThreadLocal, Klasse ..................... 159 Hoare, C. A. R. ...................................................... 104 InputMethodEvent, Klasse ............................. 675 Host-Adresse ....................................................... 977 InputStream, Klasse ......................................... 445 HOUR, Calendar .................................................. 329 InputStreamReader, Klasse ............................ 492 HOUR_OF_DAY, Calendar ............................... 329 InstallShields .................................................... 1137 HSB ......................................................................... 902 instanceof, Schlüsselwort ............................. 1235 HSQLDB ............................................................. 1141 InstantiationException ...................... 1242, 1254 HTML ............................................................ 531, 998 instrumentalisierte Objekte ........................ 1325 HTML-Formular .............................................. 1095 Integritätsprüfung von Nachrichten ......... 1371 HTTP ............................................................. 957, 998 Inter-Client Communication Convention HTTP 0.9 ............................................................. 1003 Manual ............................................................. 837 HTTP 1.0 ................................................................ 999 Interface/Implementation-Pair .................... 792 http.proxyHost ................................................ 1008 Intermediate container ................................... 712 http.proxyPort ................................................. 1008 Internal frame .................................................... 815 HttpClient ............................................................ 997 Internationalisierung ...................................... 313 HttpComponents ............................................... 997 Internes Fenster ................................................. 815 HttpHandler, Schnittstelle ........................... 1006 Internet Control Message Protocol ............ 1031 HTTP-Header ....................................................... 967 Internet Engineering Task Force .................. 957 https.ProxyHost .............................................. 1008 Internet Protocol ............................................... 956 https.ProxyPort ............................................... 1008 Internet-Media-Types .................................... 1005 HttpServer, Klasse .......................................... 1006 Inter-ORB Protocol .......................................... 1053 HttpServerFactory, Klasse ............................ 1063 Interrupt ................................................................ 79 HttpSession, Schnittstelle ............................ 1111 interrupt(), Thread ...................................... 79, 136 Hue ......................................................................... 902 interrupted(), Thread ......................................... 81 Hypertext Transfer Protocol ................. 957, 998 InterruptedException ................ 74, 81, 126, 136 InterruptedIOException .................................. 991 I Intersolv ............................................................. 1150 Introspection .................................................... 1227 ICCCM .................................................................... 837 invalidate(), Component ................................. 710 ICMP ................................................................... 1031 InvalidClassException ............................ 505, 517 ICO .......................................................................... 915 Inversion of Control ....................................... 1221 IdentityHashMap, Klasse ................................. 237 Invocation API ................................................. 1353 IETF ......................................................................... 957 Invocation-API ................................................. 1338 IIOP ..................................................................... 1053 InvocationEvent, Klasse .................................. 850 IllegalAccessException .................................. 1242 InvocationTargetException .............. 1242, 1255 IllegalMonitorStateException ............... 129, 136 invoke(), Method ............................................. 1264 IllegalThreadStateException ............................ 67 invokeAndWait(), SwingUtilities .................. 848 Image, Klasse ....................................................... 914 invokeLater(), SwingUtilities ................ 747, 848 ImageIcon, Klasse .............................................. 657 Invoker-Servlet ................................................ 1117 1419 Index IoC-Container ................................................... 1221 Java Document Object Model ......................... 545 IP ............................................................................ 956 Java Foundation Classes (JFC) ......................... 869 IP-Adresse ............................................................ 977 Java Image Management Interface ............... 915 isCellEditable(), TableModel .................. 793, 795 Java Management Beans ............................... 1325 isInterrupted(), Thread ...................................... 79 Java Management Extensions .................... 1324 ISO Country Code .............................................. 309 Java Message Service ..................................... 1055 ISO Language Code ........................................... 309 Java Native Interface ...................................... 1337 ISO-639-Code ...................................................... 309 Java Network Launcher Protocol ................ 1137 ISO-Abkürzung ................................................... 312 Java Object Serialization .................................. 502 ITALIAN, Locale .................................................. 310 Java OpenGL ........................................................ 953 ItemEvent, Klasse .............................................. 740 Java Persistence API .......................................... 503 ItemListener, Schnittstelle ... 740, 742, 745, 779 Java Persistence API (JPA) ............................. 1206 ItemSelectable, Schnittstelle .......................... 741 Java Plug-In ....................................................... 1123 itemStateChanged(), ItemListener ............... 742 Java Secure Socket Extension ........... 1008, 1033 Iterable, Schnittstelle ....................................... 187 Java Virtual Machine Process Status Iterator ................................................................. 249 Iterator, Schnittstelle .............................. 249, 260 iText ...................................................................... 622 Tool ................................................................. 1381 Java Virtual Machine Statistics Monitoring Tool ......................................... 1382 java.awt.event, Paket ........................................ 673 J java.awt.geom, Paket ........................................ 870 java.beans, Paket ................................................ 523 JAAS 씮 Java Authentication and Authorization Service (JAAS) java.lang.management, Paket ..................... 1326 java.naming.factory.initial .......................... 1198 Jackson ................................................................. 620 java.net, Paket ..................................................... 955 Jad, Decompiler ................................................ 1405 java.nio.file, Paket ............................................. 386 Jahr ............................................................... 328, 350 java.nio.file.attribute, Paket ........................... 397 JAI ........................................................................... 915 java.rmi.server.codebase .............................. 1053 Jakarta HttpClient ............................................. 997 java.rmi.useCodebaseOnly .......................... 1053 JANUARY, Calendar ........................................... 323 java.security ..................................................... 1364 JAPAN, Locale ...................................................... 310 java.sql.Date, Klasse ....................................... 1173 JAPANESE, Locale ............................................... 310 java.sql.Time, Klasse ...................................... 1173 Jar-Archiv ........................................................... 1087 java.util.concurrent, Paket .............................. 286 Jar-Datei ............................................................... 969 java.util.concurrent.atomic, Paket ...... 114, 148 JarFile, Klasse ............................................. 640, 970 java.util.jar, Paket .............................................. 625 jarsigner, Dienstprogramm .......................... 1370 java.util.zip, Paket ..................................... 625–626 JarURLConnection, Klasse .............................. 970 Java-Beans ......................................................... 1227 Java 2D-API .......................................................... 869 JavaBeans Activation Framework .............. 1021 Java Accessibility ............................................... 854 JavaBeans Persistence ...................................... 502 Java API for XML Parsing ................................. 546 Java-Cryptography-API ................................. 1356 Java Authentication and Authorization Service JavaDoc-Tag ...................................................... 1227 (JAAS) ................................................... 1356, 1367 JavaFX ................................................................. 1124 Java Cryptography Architecture ................. 1356 javah, Dienstprogramm ................................ 1341 Java Cryptography Extension (JCE) ............ 1356 javah-Task, Ant ................................................ 1341 Java Database Connectivity .......................... 1148 Java-Look-and-Feel ............................................ 830 Java DB ................................................................ 1140 JavaMail API ..................................................... 1020 1420 Index javap ................................................................... 1399 JEditorPane, Klasse .................................. 683, 692 JavaScript .......................................................... 1135 Jersey, JAX-RS Implementierung ................ 1060 JavaServer Faces .............................................. 1120 Jetty ..................................................................... 1084 JavaServer Page ............................................... 1081 JFileChooser, Klasse .......................................... 823 javax.crypto, Paket ......................................... 1356 JFormattedTextField, Klasse ................. 683, 687 javax.jws, Paket ............................................... 1074 JFrame, Klasse ........................................... 645, 867 javax.net, Paket ............................................... 1033 JGoodies Looks ................................................... 833 javax.script, Paket ................................ 1306, 1312 Jimi ........................................................................ 915 javax.sound, Paket .................................... 640–641 Jindent ................................................................ 1409 javax.sound.midi, Paket .................................. 642 JLabel, Klasse ....................................................... 653 javax.swing, Paket ............................................. 645 jlGui ....................................................................... 641 javax.swing.text, Paket .................................... 683 JList, Klasse .......................................................... 767 javax.swing.undo, Paket .................................. 842 jmap, Dienstprogramm ................................. 1382 javax.xml.bind.annotation, Paket ................ 549 JMenu, Klasse ............................................ 748, 750 Jawin ................................................................... 1353 JMenuBar, Klasse ............................................... 748 JAXB ....................................................................... 548 JMenuItem, Klasse ................................... 680, 750 JAXBContext, Klasse ......................................... 549 JMS ....................................................................... 1055 Jaxen ............................................................. 590, 607 JMX ...................................................................... 1324 JAXP .............................................................. 546–547 JMXConnector, Schnittstelle ........................ 1336 JAX-RPC .............................................................. 1073 JMXConnectorServer, Klasse ....................... 1335 JAX-RS ................................................................. 1060 JNDI ..................................................................... 1196 JAX-RS-Injizierung .......................................... 1069 jndi.properties ................................................. 1196 JAX-WS ............................................................... 1073 JNI ........................................................................ 1337 JAX-WS RI .......................................................... 1073 Joda Time ............................................................. 355 JBP, JavaBeans Persistence .............................. 502 JOGL ....................................................................... 953 JButton, Klasse ........................................... 676, 680 join(), Thread ........................................................ 84 JCA ....................................................................... 1356 JOIN_BEVEL, BasicStroke ................................ 910 JCheckBox, Klasse .............................................. 680 JOIN_MITER, BasicStroke ................................ 910 JCheckBoxMenuItem, Klasse .......................... 750 JOIN_ROUND, BasicStroke .............................. 910 jCIFS ....................................................................... 378 JoinRowSet, Schnittstelle .............................. 1183 JComboBox, Klasse ............................................ 775 jOpenDocument ................................................ 624 jconsole, Dienstprogramm .......................... 1328 JOptionPane, Klasse .......................................... 820 JDBC .................................................................... 1148 JOS, Java Object Serialization ......................... 502 JDBC 1.0 .............................................................. 1151 JPA (Java Persistence API) ......... 503, 1199, 1206 JDBC 2.0 API ...................................................... 1151 JPA 씮 JPA (Java Persistence API) JDBC 2.0 Optional Package API ................... 1151 JPanel, Klasse ............................................. 712, 716 JDBC 2.1 core API ............................................. 1151 JPasswordField, Klasse ............................ 683, 686 jdbc.drivers ....................................................... 1160 JPEG ....................................................................... 914 JDBC-ODBC-Bridge-Treiber .......................... 1149 JPopupMenu, Klasse ......................................... 760 JDBCRowSet, Schnittstelle ............................ 1182 JProgressBar, Klasse ................................. 745, 849 JDesktopPane, Klasse ........................................ 815 jps, Dienstprogramm .......................... 1328, 1381 JDialog, Klasse ..................................................... 819 JRadioButton, Klasse ............................... 680, 743 JDOM ..................................................................... 545 JRadioButtonMenuItem, Klasse .................... 750 JDOMResult, Klasse ........................................... 613 JRMP (Java Remote Method Protocol) ....... 1053 JDOMSource, Klasse .......................................... 613 JRootPane, Klasse .............................................. 815 1421 Index jrunscript, Dienstprogramm ....................... 1306 KeyListener, Schnittstelle ............................... 703 JScrollBar, Klasse ...................................... 713, 734 KeyPairGenerator, Klasse ............................. 1376 JScrollPane ........................................................... 713 KeySelectionManager, Schnittstelle ............ 779 JScrollPane, Klasse ......... 691, 712–713, 769, 790 keySet(), Map ....................................................... 238 JSlider, Klasse ...................................................... 733 Keystore ............................................................. 1370 JSON (JavaScript Object Notation) ..... 619, 1066 keytool, Dienstprogramm ............................ 1369 JSP ........................................................................ 1081 Klasse ..................................................................... 929 JSpinner, Klasse .................................................. 787 Klassenlader ..................................................... 1357 JSplitPane, Klasse ..................................... 712, 715 Kollision, Signatur .......................................... 1371 jsr166y .................................................................. 152 Kollisionsangriff ............................................. 1371 JSR-203 .................................................................. 386 Kompressionsfunktion ................................. 1371 JSR-223 ................................................................ 1306 Kompressionsstufe ........................................... 932 JSR-299 ..................................................... 1221, 1224 Komprimierungsfaktor ................................... 914 JSR-303:Bean Validation ................................ 1207 Konstruktive Flächengeometrie ................... 891 JSR-311 ................................................................ 1060 Kontextmenü ..................................................... 759 JSSE ...................................................................... 1008 Kontraktionsfunktion ................................... 1371 jstack, Dienstprogramm ................................ 1383 Kontrollfeldgruppe ........................................... 743 jstat, Dienstprogramm .................................. 1382 Koordinierte Weltzeit ....................................... 306 JSTL ...................................................................... 1101 Kopfdefinition .................................................... 535 JTabbedPane, Klasse ................................ 712, 714 KOREA, Locale ..................................................... 310 JTable, Klasse ...................................................... 789 KOREAN, Locale .................................................. 310 JTableHeader, Klasse ........................................ 804 Kritischer Abschnitt ............................................ 99 JTextArea, Klasse ............................................... 683 Kryptografische Prüfsumme ....................... 1371 JTextComponent, Klasse ................................. 685 Kubische Kurvensegmente ............................. 890 JTextField, Klasse ...................................... 683–684 Kurve ..................................................................... 890 JTextPane, Klasse ............................................... 683 JTidy ...................................................................... 621 L JToggleButton, Klasse ............................. 680, 682 JToolBar, Klasse ......................................... 712, 756 Last-in-First-out ................................................. 218 JTree, Klasse ........................................................ 809 Latin-1 ................................................................... 491 JULY, Calendar .................................................... 323 Laufwerksname .................................................. 374 JUNE, Calendar ................................................... 323 LayoutManager, Schnittstelle ........................ 718 JViewport, Klasse ............................................... 713 lazy activation ................................................. 1054 JWindow, Klasse ................................................. 818 LD_LIBRARY_PATH ........................................ 1340 JXPath ................................................................... 616 leading .................................................................. 884 Lease ................................................................... 1050 K lib/security ....................................................... 1364 Kanonischer Pfad .............................................. 361 line joins ...................................................... 908, 910 Keller ..................................................................... 218 line.separator ................................................... 1360 Kerberos ............................................................. 1368 Line2D, Klasse ............................................ 887–888 Key, Schnittstelle .................................... 184, 1375 LinearGradientPaint ......................................... 897 KeyEvent, Klasse ....................................... 675, 703 LineBorder, Klasse ............................................. 699 KeyGenerator, Klasse ..................................... 1376 LineMetrics, Klasse ............................................ 885 1422 LIFO ........................................................................ 218 Index LineNumberReader, Klasse ............................. 474 M lineTo(), GeneralPath ........................................ 891 Linie ....................................................................... 870 MAC ..................................................................... 1371 Linienende ........................................................... 909 MAC-Adresse .................................................... 1032 Linien-Pattern ..................................................... 908 Magische Zahlenwerte ................................... 1238 Linienverbindung .............................................. 910 Mail User Agent ............................................... 1019 LinkedBlockingDeque, Klasse ........................ 222 MalformedURLException ............................... 959 LinkedBlockingQueue, Klasse ........................ 287 Management Interface .................................. 1325 LinkedHashSet, Klasse ...................................... 218 ManagementFactory, Klasse ........................ 1330 LinkedList, Klasse ................... 183–185, 188, 200 Manipulation Detection Code ..................... 1371 LinkOption, Aufzählung .................................. 396 Map, Schnittstelle ........................... 176, 185, 228 List, Schnittstelle ....................................... 183, 188 Map.Entry, Klasse .............................................. 239 ListCellRenderer, Schnittstelle ....................... 774 MappedByteBuffer, Klasse .............................. 425 Liste ........................................................................ 188 MARCH, Calendar .............................................. 323 Liste füllen ........................................................... 280 Markierungsschnittstelle ............................... 508 Listener ................................................................. 662 Marshaller, Schnittstelle ................................. 549 ListIterator, Schnittstelle ................................. 202 Marshalling ....................................................... 1038 ListSelectionEvent, Klasse ...................... 769, 771 MatteBorder, Klasse ......................................... 699 ListSelectionListener, Schnittstelle ..... 769, 771 Mausrad ............................................................... 705 ListSelectionModel, Schnittstelle ................. 805 Maven ................................................................. 1393 Load Factor .......................................................... 241 max(), Collections ............................................. 267 load(), System ................................................... 1340 MAX_PRIORITY, Thread .................................... 87 loadLibrary(), System ..................................... 1339 MAY, Calendar .................................................... 323 Locale ..................................................................... 310 MBean ................................................................. 1325 Locale, Klasse ...................................................... 309 MBean-Server ................................................... 1325 LocateRegistry, Klasse ................................... 1045 MD ....................................................................... 1371 Location, Response-Header ......................... 1005 MD2 ..................................................................... 1371 Lock ............................................................... 104, 114 MD4 ..................................................................... 1371 lock(), Lock ........................................................... 106 MD5 ..................................................................... 1371 Lock-free-Algorithmus ..................................... 284 MDC ..................................................................... 1371 Locking .................................................................. 376 MediaTracker, Klasse ....................................... 934 log4j ......................................................... 1315, 1320 MediaType, Klasse ........................................... 1062 Logback .............................................................. 1324 MEDIUM, DateFormat ..................................... 348 logClass .............................................................. 1049 Megginson, David ............................................. 545 Logging, RMI .................................................... 1049 Memory Map .................................................... 1382 Login-Modul ..................................................... 1367 Menü ..................................................................... 748 Logisch atomar ................................................... 128 Menübalken ........................................................ 748 Log-Level ........................................................... 1317 Menüeintrag ....................................................... 748 lokale Objekte .................................................. 1042 Menütrennlinie ................................................. 750 Lokaler Host ........................................................ 980 Merant ................................................................ 1150 Lokalisierung ...................................................... 313 Meridian .............................................................. 305 LONG, DateFormat ............................................ 348 Message Authentication Code ..................... 1371 Low-level event .................................................. 674 Message Integrity Check ............................... 1371 Message Queues .............................................. 1055 Message Store ................................................... 1019 1423 Index Message Transfer Agent ................................ 1019 MouseMotionListener, Schnittstelle ........... 662 Message Transfer System ............................. 1019 MouseWheelEvent, Klasse .............................. 705 Message-Digest ................................................ 1371 MS ........................................................................ 1019 MessageDigest, Klasse ................................... 1372 MTA ..................................................................... 1019 Metadaten .............................................. 1003, 1191 MTS ..................................................................... 1019 META-INF/services ......................................... 1222 MUA .................................................................... 1019 Meta-Information ........................................... 1005 Multicast-Kommunikation .......................... 1033 Metal, Look and Feel ......................................... 830 Multi-catch ............................................................ 44 Meta-Objekt ...................................................... 1228 Multi-Map ............................................................ 295 Meta-Programming ........................................ 1227 Multi-Menge ....................................................... 295 Method, Klasse ................................................. 1246 MULTIPLE_INTERVAL_SELECTION, Methode des Aufrufes .................................... 1000 MIC ...................................................................... 1371 ListSelectionModel ....................................... 771 Multipurpose Internet Mail Microsoft Access .............................................. 1143 Extensions .................................................... 1020 Microsoft Silverlight ...................................... 1124 Multi-Set ............................................................... 295 Microsoft SQL Server ...................................... 1143 MutableTreeNode, Schnittstelle .................... 809 Middleware ....................................................... 1040 Mutex .................................................................... 104 MIDI ....................................................................... 642 MVC ....................................................................... 765 MidiSystem, Klasse ........................................... 642 MXBeans ............................................................ 1325 MILLISECOND, Calendar .................................. 329 MySQL ................................................................ 1142 Millisekunde ....................................................... 329 MIME ................................................................... 1020 N MimeMultipart, javax.mail .......................... 1028 MIME-Nachrichten ......................................... 1003 Namensdienst ....................................... 1038, 1045 MIME-Typ ............................................................ 968 Namensraum ...................................................... 542 min(), Collections .............................................. 267 Native Methode ............................................... 1337 MIN_PRIORITY, Thread ..................................... 87 Native Protocol All-Java Driver ................... 1150 Minute .................................................................. 329 native, Schlüsselwort ..................................... 1338 MINUTE, Calendar ............................................. 329 Native-API Java Driver ................................... 1150 Mitteleuropäische Zeit (MEZ) ........................ 336 Natürliche Ordnung .......................................... 263 Mnemonic ........................................................... 753 NavigableMap, Schnittstelle .................. 185, 230 Modal .................................................................... 819 NavigableSet, Schnittstelle ............................. 216 Model .................................................................... 765 Navigation ........................................................... 701 Model MBeans .................................................. 1325 Nearest neighbor algorithm ........................... 929 Model-View-Controller .................................... 765 Nelson ................................................................ 1035 Modifizierer ...................................................... 1238 NetPermission ................................................. 1366 Monat ................................................................... 328 netstat ................................................................... 989 Monitor ................................................................ 104 Network Filesystem ....................................... 1011 monitorenter ...................................................... 104 network-address.cache.ttl, Property ............ 981 monitorexit ........................................................ 104 NetworkInterface, Klasse ................................. 981 Monitoring ........................................................ 1324 Netz-Protokoll All-Java Driver .................... 1151 MONTH, Calendar ............................................. 328 new, Schlüsselwort ......................................... 1253 Mouse wheel ....................................................... 705 newDirectoryStream(), Files .................. 410–411 MouseEvent, Klasse .......................................... 675 newInstance(), Array ...................................... 1240 MouseListener, Schnittstelle ......................... 662 newInstance(), Constructor ......................... 1253 1424 Index newLine(), BufferedWriter .............................. 471 Open MBeans ................................................... 1325 NFS ...................................................................... 1011 OpenDocument ................................................. 624 Nicht ausführend ............................................... 126 openStream(), URL ............................................ 963 Nicht direkte ByteBuffer .................................. 423 OperatingSystemMXBean, Nicht-modal ........................................................ 819 Schnittstelle .................................................. 1326 Nimbus, Look and Feel ..................................... 830 Optionale Operation ........................................ 273 NIO.2 ...................................................................... 386 Optionsfeld ......................................................... 743 NO_SUCH_PAGE, Printable ............................ 945 Oracle Database ............................................... 1143 NoClassDefFoundError ................................. 1230 OracleDriver ..................................................... 1162 NoSuchAlgorithmException ....................... 1373 org.jdom, Paket .................................................. 589 NoSuchElementException ..................... 221, 249 OR-Mapping ........................................................ 503 NoSuchFieldException .................................. 1242 Ostersonntag ...................................................... 326 NoSuchMethodException ............................ 1242 OutputStream, Klasse ...................................... 441 NoSuchProviderException ........................... 1373 OutputStreamWriter, Klasse .......................... 491 notify(), Object ........................................... 124, 135 OverlayLayout, Klasse ...................................... 732 notifyAll() ............................................................. 128 NotSerializableException .............. 505, 508, 510 P NOVEMBER, Calendar ....................................... 323 Null Object Pattern ............................................ 274 P2P ....................................................................... 1055 NULL, SQL .......................................................... 1175 Pack200 ................................................................ 625 PAGE_EXISTS, Printable .................................. 945 O paint(), Frame ..................................................... 865 Oberklasse finden ........................................... 1236 paintComponent() ............................................ 867 Oberlänge ............................................................. 884 Palmsonntag ....................................................... 326 Obfuscator .................................. 1230, 1398, 1406 Parsed Character Data ...................................... 537 Object Management Group .............. 1037, 1053 ParseException .................................................. 353 Object Serialization Stream Protocol ........... 511 Passionssonntag ................................................ 326 ObjectInputStream, Klasse .............................. 505 Path, Klasse ......................................................... 386 ObjectName, Klasse ........................................ 1333 Paths, Klasse ....................................................... 386 ObjectOutputStream, Klasse .......................... 504 PCDATA ................................................................ 537 ObjectStreamField, Klasse ............................... 511 PDFBox ................................................................. 622 Objekt-relationales Mapping ......................... 503 Peer-Elemente .................................................... 845 Observer-Pattern ............................................... 765 Permissions ...................................................... 1366 Ocean, Look and Feel ........................................ 830 Persistence Unit ............................................... 1203 OCTOBER, Calendar ........................................... 323 PersistenceDelegate, Klasse ........................... 525 ODBC ....................................................... 1144, 1149 Persistenz ............................................................ 502 ODBC-Datenquellen-Administrator .......... 1144 Pfad ........................................................................ 891 ODF Toolkit .......................................................... 624 Pfingstsonntag ................................................... 326 ODF, OpenDocument ....................................... 624 PHP ...................................................................... 1080 Oktalsystem .......................................................... 41 PipedInputStream, Klasse .............................. 494 Olsen-Datenbank ............................................... 339 PipedOutputStream, Klasse ........................... 494 OMG (Object Management Group) ............ 1037 PipedReader, Klasse .......................................... 494 Opak ....................................................................... 711 PipedWriter, Klasse ........................................... 494 Open Database Connectivity Standard .... 1149 Plain Old Java Object ...................................... 1220 Paint, Schnittstelle ............................................ 896 1425 Index Plattenspeicher .................................................. 375 PriorityBlockingQueue, Klasse ...................... 290 Pluggable Authentication Module PriorityQueue, Klasse ....................................... 184 (PAM) .............................................................. 1367 PriorityQueue, Schnittstelle ........................... 290 POCO ................................................................... 1220 private, Schlüsselwort ................................... 1238 Point-to-Point .................................................. 1055 PrivateKey, Schnittstelle .............................. 1375 POJO .................................................................... 1220 probeContentType, Files ................................. 409 Policy-Datei ....................................................... 1363 Programm-Icon .................................................. 921 policytool, Dienstprogramm ....................... 1365 ProGuard ........................................................... 1407 Polygon ................................................................ 874 Properties, Klasse .............................................. 243 Polygon, Klasse ......................................... 874, 888 PropertyChangeEvent, Klasse ........................ 711 Polyline ................................................................ 874 Property-Datei .................................................... 618 POP before send ............................................... 1027 PropertyDescriptor, Klasse .......................... 1250 POP3 .................................................................... 1020 PropertyPermission ....................................... 1366 Popup-Menü ....................................................... 759 Proposed Standard ............................................ 957 Port 1234 .............................................................. 989 protected, Schlüsselwort .............................. 1238 Port, RMI-Namensdienst ............................... 1046 Protocol Buffers ........................................ 503, 526 Port-Adresse ....................................................... 983 Protocol Handler ....................................... 967–968 Position des Fensters ....................................... 649 Protokoll ............................................................... 957 PosixFileAttributes, Schnittstelle ................. 399 Proxy .................................................................. 1035 PosixFileAttributeView, Schnittstelle ......... 403 Proxy-Authenticate, Response-Header .... 1005 PosixFilePermission, Aufzählung ................ 400 Proxy-Authorization ........................................ 972 PosixFilePermissions, Klasse ......................... 400 ProxySelector, Klasse .................................... 1009 POST, HTTP-Methode ..................................... 1000 Proxy-Server .................................................... 1007 PostgreSQL ........................................................ 1142 Public, Response-Header .............................. 1005 POST-Methode .......................................... 973, 999 public, Schlüsselwort ..................................... 1238 POST-Request ..................................................... 976 PublicKey, Schnittstelle ................................ 1375 PowerPoint-Dokumente ................................. 623 Publish-Subscribe ........................................... 1055 Prädikat ................................................................ 298 Pulldown-Menü ................................................. 748 Pragma ............................................................... 1004 PushbackInputStream, Klasse ....................... 474 Preimage-Angriff ............................................. 1372 PushbackReader, Klasse ................................... 474 PreparedStatement, Schnittstelle ... 1168, 1187 put(), Map ............................................................. 231 Primzahlen .......................................................... 304 PUT, HTTP-Methode ...................................... 1000 Principal .................................................. 1363, 1368 print() .................................................................... 455 Q Printable, Schnittstelle .................................... 944 PrinterJob, Klasse .............................................. 944 QuadCurve2D, Klasse ....................................... 888 printf() .................................................................. 455 Quadratische Kurvensegmente ..................... 890 PrintJob, Klasse .................................................. 944 quadTo(), GeneralPath ..................................... 891 println() ................................................................ 455 Quartz ................................................................... 172 PrintService, Schnittstelle .............................. 946 Quellcode-Verschönerer ............................... 1408 PrintStream ......................................................... 455 Query-String ........................................................ 973 PrintWriter .......................................................... 455 Queue, Schnittstelle ........................ 184, 220–221 Priorität, Thread .................................................. 87 Quoted Printing Encoding ........................... 1020 Prioritätswarteschlange .................................... 87 1426 Index R Request-Header ............................................... 1002 ResourceBundle, Klasse ................................... 313 Race condition .................................................... 102 Response-Header ................................. 1002, 1005 Race hazard .......................................................... 102 RESTful Web-Services ..................................... 1058 RadialGradientPaint ......................................... 897 Result, Schnittstelle .......................................... 613 Rahmen ................................................................. 699 ResultSet, Schnittstelle .................................. 1169 RandomAccess, Schnittstelle ......................... 197 ResultSetMetaData, Schnittstelle ............... 1191 RandomAccessFile, Klasse ............................... 379 resume(), Thread ................................................. 87 readAttributes() , Files ...................................... 398 RetentionPolicy, Aufzählung ....................... 1279 Reader, Klasse ..................................................... 451 Retry-After, Response-Header ..................... 1005 readLine(), BufferedReader ............................. 473 Reverse Engineering ....................................... 1404 readObject(), ObjectInputStream .................. 505 RFC ......................................................................... 956 readResolve() ....................................................... 515 RFC 2616 ............................................................... 998 readSymbolicLink(), Files ................................ 408 RGB ........................................................................ 902 readUTF(), RandomAccessFile ........................ 382 Rhino ................................................................... 1306 ReadWriteLock, Schnittstelle ......................... 109 Rich Text Format ............................................... 692 rebind(), Registry ............................................ 1048 RMI ...................................................................... 1037 Rectangle2D, Klasse .......................................... 888 RMI Wire Protocol ........................................... 1039 RectangularShape, Klasse ................................ 888 rmi:// .................................................................. 1048 Reentrant ............................................................. 122 rmic, Dienstprogramm .................................. 1044 Reentrant, Klasse ...................................... 106, 125 RMIClassLoader, Klasse ................................. 1053 ReentrantReadWriteLock, Klasse .................. 109 rmid, Dienstprogramm ................................. 1055 Reference Concrete Syntax ............................. 533 RMI-Klassenlader ............................................ 1052 Referenced-Meldung ..................................... 1050 RMI-Logging ..................................................... 1050 Reflection .......................................................... 1227 rmiregistry, Dienstprogramm .......... 1046, 1198 ReflectiveOperationException ................... 1242 RMI-Transportschicht .................................... 1039 ReflectPermission ........................................... 1366 Rollbalken ............................................................ 733 Registry ................................................... 1038, 1045 Rollenbasierte Rechtevergabe ..................... 1367 REGISTRY_PORT, Registry ............................ 1045 Rollrad .................................................................. 705 Relationales Datenbanksystem .................. 1148 Ron Rivest .......................................................... 1371 Remote Manager ............................................. 1325 Rotation ............................................................... 941 Remote Object Activation ............................ 1054 RoundRectangle2D, Klasse ............................. 888 Remote Procedure Call .................................. 1037 RowFilter, Klasse ............................................... 807 Remote, Schnittstelle ..................................... 1042 RowSet, Schnittstelle ...................................... 1182 RenderedImage, Schnittstelle ........................ 929 RPC ....................................................................... 1037 Rendering-Algorithmus ................................... 941 RTF ......................................................................... 692 Renderpack Render Pipelines ........................ 809 run(), Runnable .................................................... 65 Rendezvous .................................................. 84, 145 Runnable, Schnittstelle ..................................... 65 repaint() ................................................................ 869 Runtime Packages ........................................... 1355 replaceAll(), Collections ................................... 279 RuntimePermission ....................................... 1366 ReplicateScaleFilter, Klasse ............................. 929 Representational State Transfer (REST) .... 1059 Request .............................................................. 1000 S Request For Comment ...................................... 956 Sandbox ............................................................. 1357 requestFocusInWindow(), JComponent ...... 702 Saturation ............................................................ 902 1427 Index SAX ........................................................................ 545 Semantisches Ereignis ..................................... 674 SAXBuilder .......................................................... 591 Semaphore, Klasse ............................................. 139 SAXBuilder, Klasse ............................................ 591 SEPTEMBER, Calendar ...................................... 323 SAXParser, Klasse .............................................. 584 Sequence, Klasse ................................................ 642 SCALE_AREA_AVERAGING, Image ............... 927 SequenceInputStream, Klasse ........................ 447 SCALE_DEFAULT, Image .................................. 927 Sequencer ............................................................. 642 SCALE_FAST, Image .......................................... 927 Sequencer, Schnittstelle .................................. 642 SCALE_REPLICATE, Image ............................... 927 Sequenz ....................................................... 176, 183 SCALE_SMOOTH, Image .................................. 927 Serializable, Schnittstelle ................................ 508 Schablonen-Muster .......................................... 443 SerializablePermission .................................. 1366 Schaltjahr ............................................................. 306 serialPersistentFields ....................................... 511 ScheduledThreadPoolExecutor, serialver, Kommandozeilenprogramm ...... 519 Klasse ............................................................ 89, 97 serialVersionUID ................................................ 518 Scheduler ............................................................... 98 Server ................................................................. 1038 Schema ................................................................. 539 Server, Response-Header .............................. 1005 schemagen, JDK-Tool ....................................... 554 ServerSocket, Klasse .......................................... 989 Scherung .............................................................. 941 Service ................................................................ 1221 Schieberegler ...................................................... 733 ServiceLoader, Klasse ......................... 1160, 1221 Schlange ............................................................... 184 Service-Provider .............................................. 1222 Schlüssel .............................................................. 184 Servlet ................................................................ 1080 Schlüsselpaare .................................................. 1369 Servlet-Container ............................................ 1080 Schlüsselspeicher ............................................ 1370 Session, Klasse ...................................... 1021, 1027 Schriftlinie ........................................................... 877 Set, Schnittstelle ........................................ 183, 208 Schwyzerdütsch ................................................. 316 setAttribute(), Files ............................................ 405 Screen_Updater ................................................... 78 setBorder(), JComponent ................................. 699 ScriptEngine, Schnittstelle ........................... 1307 setContentType(), JEditorPane ....................... 692 ScriptEngineManager, Klasse ...................... 1307 setDefaultCloseOperation(), JFrame ... 647, 667 Scriptlet .............................................................. 1105 setDefaultRenderer(), JTable ........................... 800 Scrollable, Schnittstelle ................................... 714 setDoInput(), URLConnection ............... 967, 977 Scrollbar ............................................................... 733 setDoOutput(), URLConnection ........... 967, 977 ScrollPaneLayout, Klasse ................................ 732 setFont(), Graphics ............................................ 878 SECOND, Calendar ............................................. 329 setLayout(), Container ...................................... 717 SecretKey, Schnittstelle ................................. 1375 setLookAndFeel(), UIManager ........................ 830 SecretKeySpec, Klasse .................................... 1377 setModel(), JSpinner .......................................... 787 Secure Hash Algorithm ................................. 1372 setModel(), JTable .............................................. 794 Secure Hash Standard .................................... 1372 setPaint(), Graphics2D ...................................... 897 Secure Sockets Layer ...................................... 1033 setPriority(), Thread ............................................ 87 Security Manager ............................................ 1358 setProperty(), Properties ................................. 243 Security-API ...................................................... 1355 setRenderingHint(), Graphics2D ................... 887 SecurityException ........................................... 1363 setRequestMethod(), HttpURLConnection SecurityManager ............................................. 1125 setRequestProperty(), URLConnection ....... 977 SecurityManager, Klasse ................... 1357–1358 setSize(), Window ............................................... 648 SecurityPermission ........................................ 1366 setText(), JButton ............................................... 677 SeekableByteChannel, Schnittstelle ... 422, 424 setText(), JLabel .................................................. 654 Sekunde ................................................................ 329 setText(), JTextComponent ............................. 685 1428 977 Index setUseCaches(), URLConnection .................... 977 SocketPermission ............................................ 1366 setVisible(), Window ......................................... 648 Sockets .................................................................. 983 SGML ...................................................................... 532 SOCKS ................................................................. 1008 SHA ..................................................................... 1372 SoftBevelBorder, Klasse ................................... 699 Shallow Copy ....................................................... 234 Sommerzeitabweichung ................................. 329 Shamir, Adi ....................................................... 1371 sort(), Arrays ....................................................... 264 Shape, Schnittstelle .................................. 886, 888 sort(), Collections .............................................. 264 shared objects .................................................. 1343 SortedMap, Schnittstelle ................................. 230 ShellFolder, Klasse ............................................. 364 SortedSet, Schnittstelle ................................... 216 SHORT, DateFormat .......................................... 348 Sortieren .............................................................. 264 showConfirmDialog(), JOptionPane .... 821–822 Soundbank .......................................................... 641 showInputDialog(), JOptionPane .................. 822 Source, Schnittstelle ......................................... 613 showMessageDialog(), JOptionPane ............ 822 Sourcecode Beautifier .................................... 1408 showOptionDialog(), JOptionPane ............... 822 SpinnerDateModel, Klasse .............................. 788 SHS ...................................................................... 1372 SpinnerListModel, Klasse ................................ 787 Shutdown-Hook ................................................. 173 SpinnerModel, Schnittstelle .......................... 787 Sicherheitsmanager ................. 1357–1358, 1362 Splash-Screen ..................................................... 922 signal(), Condition ............................................. 125 Spring-Framework .......................................... 1221 Signierung .............................................. 1363, 1368 SpringLayout, Klasse ........................................ 717 Simple API for XML Parsing ............................ 545 SQLWarning, Klasse ........................................ 1180 Simple Logging Facade for Java .................. 1323 SQuirreL ............................................................. 1145 Simple Mail Transfer Protocol .................... 1019 SSL ........................................................................ 1033 SimpleDateFormat, Klasse .............................. 346 SSLSocket, Klasse ............................................. 1033 SimpleFileVisitor, Klasse ................................. 413 SSLSocketFactory, Klasse .............................. 1033 SIMPLIFIED_CHINESE, Locale ......................... 310 Stabil sortieren ................................................... 264 SINGLE_INTERVAL_SELECTION, Stabiler Sortieralgorithmus ........................... 267 ListSelectionModel ....................................... 771 Stack ...................................................................... 218 SINGLE_SELECTION, ListSelectionModel .... 771 Stack, Klasse ........................................................ 218 Singleton .............................................................. 282 Standard Generalized Markup Language ... 532 Skalierung ............................................................ 941 Standard MBeans ............................................ 1325 Skipjack .............................................................. 1372 Standard Tag Library ...................................... 1101 Skript-Engine ................................................... 1306 Standard Widget Toolkit ................................. 862 Slash ....................................................................... 358 Standardberechtigungen .............................. 1364 sleep(), Thread ....................................................... 73 StandardCopyOption, Aufzählung ............... 396 SLF4J .................................................................... 1323 Standardserialisierung .................................... 502 Slider, Schieberegler ......................................... 733 Stapelspeicher .................................................... 218 Smart-Card ........................................................ 1368 start(), Thread ....................................................... 66 SMB (Server Message Block) ........................... 378 Statement, Schnittstelle ................................ 1168 SMTP ................................................................... 1019 Statusanzeige ..................................................... 745 SMTP-Server ..................................................... 1020 Statuscode ......................................................... 1003 SOAP ................................................................... 1071 Statuszeile ......................................................... 1002 SOAP Web-Services ......................................... 1058 StAX ....................................................................... 570 SOCK_DGRAM ................................................. 1032 Stellenwertsystem .............................................. 41 SOCK_STREAM ................................................ 1032 Stellvertreterobjekt ............................. 1035, 1044 Socket, Klasse ...................................................... 984 Sternzeit ............................................................... 305 1429 Index STL-Bibliothek .................................................... 267 TableModel, Schnittstelle ....................... 791, 803 stop(), Thread ........................................................ 79 TableModelEvent, Klasse ................................. 795 Store-and-Forward .......................................... 1019 TableModelListener, Schnittstelle ................ 791 StreamEncoder ................................................... 491 TableRowSorter, Klasse .................................... 806 StreamFilter, Schnittstelle .............................. 578 Tag ................................................................. 328, 531 StreamTokenizer, Klasse ................................. 526 Tag des Jahres ..................................................... 329 StringReader, Klasse ................................ 439, 465 Tage im Monat .................................................... 333 StringWriter, Klasse .......................................... 463 Tagesdatum ......................................................... 332 Stroke, Schnittstelle .......................................... 908 TagLib ................................................................. 1101 Subject ................................................................ 1368 TagLib-Deskriptor ........................................... 1101 Subprotokoll ..................................................... 1164 TAI .......................................................................... 306 SUID ....................................................................... 519 TAIWAN ................................................................ 310 sun.jdbc.odbc.JdbcOdbcDriver .................... 1161 Tango Desktop Projekt ..................................... 659 sun.nio.cs ............................................................. 491 Tar-Archiv ............................................................ 626 suspend(), Thread ................................................ 87 Task, Fork and Join ............................................ 152 SWIG .................................................................... 1353 Tastatur-Shortcut .............................................. 753 Swing JavaBuilder ............................................. 861 Tastenkürzel ........................................................ 753 swing.properties ................................................ 830 TCP ...................................................................... 1012 SwingUtilities, Klasse ....................................... 849 TCP/IP .................................................................... 983 SwingWorker, Klasse ........................................ 851 Tear-off-Menü ..................................................... 749 SwingWT .............................................................. 863 Teile und herrsche ............................................. 149 SWT ........................................................................ 862 Teletubbies .......................................................... 975 SWTSwing ............................................................ 863 template pattern ................................................ 443 Symbolleiste ....................................................... 756 Template-Code ................................................ 1090 sync() ............................................................ 435–436 Terminiert .............................................................. 76 Synchronisation .................................................. 98 TextArea, Klasse ................................................. 688 synchronized, Schlüsselwort ......................... 113 TextLayout, Klasse ............................................ 885 synchronizedCollection(), Collections ........ 286 TexturePaint ....................................................... 897 synchronizedList(), Collections ..................... 286 Thread, Klasse ....................................................... 66 synchronizedMap(), Collections ................... 286 ThreadDeath, Klasse ........................................... 83 synchronizedSet(), Collections ...................... 286 ThreadGroup, Klasse ......................................... 162 synchronizedSortedMap(), Collections ...... 286 Thread-Gruppe ................................................... 166 synchronizedSortedSet(), Collections ......... 286 Thread-local storage (TLS) ............................... 156 System.in .................................................... 445, 460 ThreadLocal, Klasse ........................................... 156 SystemColor ........................................................ 897 ThreadLocalRandom, Klasse .......................... 161 SystemColor, Klasse ......................................... 903 Thread-lokale Variablen .................................. 156 Systemfarben ..................................................... 903 Thread-Pool ........................................................... 89 SystemTray, Klasse ........................................... 764 ThreadPoolExecutor, Klasse ............................. 89 Thread-safe ............................................................ 99 T Thread-sicher ........................................................ 99 tick marks ............................................................ 733 TableCellEditor, Schnittstelle ........................ 801 Tiefe Objektkopie ............................................... 515 TableCellRenderer, Schnittstelle ................... 798 Timeout ............................................................. 1039 TableColumn, Klasse ........................................ 803 Timer, Klasse ....................................................... 171 TableLayout, Klasse .......................................... 732 Timer, Swing-Klasse ................................. 855–856 1430 Index TimerTask, Klasse .............................................. 171 UIDefaults, Klasse ............................................. 656 Timestamp, Klasse .......................................... 1173 UI-Delegate .......................................................... 708 TimeUnit, Aufzählung ...................................... 307 UIManager, Klasse ............................................ 830 Titelleiste .............................................................. 652 UK, Locale ............................................................ 310 TitledBorder, Klasse .......................................... 699 Umrisslinie .......................................................... 908 TLS ....................................................................... 1033 Umrisslinie, Stroke ........................................... 896 toArray(), Collection .......................................... 204 UncaughtExceptionHandler, Schnittstelle .. 81 Tödliche Umarmung ......................................... 119 UNDECIMBER, Calendar .................................. 323 Tomcat ............................................................... 1083 Undo/Redo .......................................................... 842 Toolkit, Klasse ..................................................... 650 UndoableEditEvent, Klasse ............................. 844 Topic, JMS .......................................................... 1055 UndoManager, Klasse ...................................... 842 Top-Level-Container ......................................... 645 UnicastRemoteObject, Klasse ...................... 1048 Transferable, Schnittstelle .............................. 837 Unicast-Verbindung ....................................... 1033 Transfer-Encoding .......................................... 1004 Uniform Resource Locator ............................. 957 TransferHandler, Klasse ................................... 841 Universal Time ................................................... 306 Transfer-Objekt ............................................... 1262 UnknownHostException ................................ 985 Transformation .................................................. 896 unlock(), Lock ..................................................... 106 transient, Schlüsselwort .................................. 511 Unmarshaller, Schnittstelle ........................... 549 translate(), Graphics .......................................... 936 UnsatisfiedLinkError ...................................... 1339 Transparency, Schnittstelle ............................ 897 UnsupportedOperationException ..... 181, 202, TransparentLayout ............................................ 732 251, 271 Transport Layer Security .............................. 1033 Unterlänge .......................................................... 884 Transportschicht ............................................. 1038 Untermenü .......................................................... 748 TrayIcon, Klasse ................................................. 764 Unterstrich TreeMap, Klasse ....................... 176, 185–186, 229 in Zahlen ............................................................ 42 TreeModel, Schnittstelle ......................... 809, 811 Upgrade .............................................................. 1004 TreeNode, Schnittstelle .................................... 811 URI (Uniform Resource Identifier) ............... 957 TreeSelectionListener, Schnittstelle ............. 811 URI, Klasse ........................................................... 957 TreeSet, Klasse .................................................... 214 URL ........................................................................ 958 TrueType-Zeichensatz ...................................... 881 URL, Klasse .......................................................... 958 TrueZIP .................................................................. 626 URLConnection, Klasse .................................... 965 try mit Ressourcen .............................................. 51 URLDecoder, Klasse ................................. 974–975 Tupel ................................................................... 1139 URLEncoder, Klasse .......................................... 974 TYPE, Wrapper-Klasse .................................... 1229 US, Locale ............................................................. 310 TYPE_INT_RGB, BufferedImage ..................... 924 user.timezone .................................................... 324 TYPE_SCROLL_INSENSITIVE, ResultSet .... 1176 UserDefinedFileAttributeView, Types, Klasse .................................................... 1170 Schnittstelle .................................................... 405 tz database ........................................................... 339 UTC ........................................................................ 306 UTF-16 ................................................................... 535 U UTF-8 ..................................................................... 535 UTF-8-Format Überblendung, Grafik ....................................... 907 modifiziertes ................................................... 383 Überwachtes Warten ........................................ 131 UTF-8-Kodierung ............................................... 383 UDP .......................................................... 1011–1012 UUencode .......................................................... 1020 1431 Index V Weichzeichnen .......................................... 871, 941 Weld .................................................................... 1224 Valid, XML ........................................................... 535 Well-known System Ports ............................... 984 validateProperty(), Validator ....................... 1210 Wettlaufsituation .............................................. 102 Validation, Klasse ............................................ 1209 WHITE, Color ....................................................... 900 Validator, Schnittstelle .................................. 1209 WIND_NON_ZERO, GeneralPath ................... 893 Value ..................................................................... 184 Winding Rule ...................................................... 892 values(), Map ....................................................... 238 windowClosed(), WindowListener ................ 667 Vary, Response-Header ................................. 1005 windowClosing(), WindowListener .............. 667 Vector, Klasse ..................................................... 188 WindowEvent, Klasse ....................................... 665 Verbindungsloses Protokoll ........................ 1011 WindowListener, Schnittstelle ....................... 662 Verbindungsorientiert .................................. 1011 Windows Icon-Format ...................................... 915 Verkettete Liste ......................................... 177, 200 Windungsregel ................................................... 892 Verklemmung .................................................... 119 Woche .................................................................... 328 Verlaufsbalken ................................................... 745 Woche des Monats ............................................ 328 Verschiebung ...................................................... 941 Wohlgeformt ....................................................... 534 Verzeichnis anlegen ......................................... 365 Word-Dokumente .............................................. 623 Verzeichnis umbenennen .............................. 365 Worker-Thread ................................................... 853 Via ........................................................................ 1004 work-stealing ...................................................... 153 View ....................................................................... 765 writeObject(), ObjectOutputStream ............. 504 ViewPortLayout, Klasse ................................... 732 Writer, Klasse ...................................................... 449 volatile, Schlüsselwort ..................................... 146 writeReplace() ..................................................... 515 Vorschaubild ...................................................... 915 writeUTF(), RandomAccessFile ...................... 382 wsimport, Dienstprogramm ............ 1074, 1076 W Wurzelelement ................................................... 595 Wurzelverzeichnis ............................................. 373 wait(), Object .............................................. 124, 135 WWW-Authenticate, Response-Header .... 1005 Wait-free-Algorithmus .................................... 284 walkFileTree(), Files .......................................... 413 Warning, Response-Header .......................... 1005 X Warning:Applet Window .............................. 1363 X.509 ................................................................... 1369 Watchable, Schnittstelle .................................. 421 XAML ..................................................................... 861 WatchEvent, Klasse ........................................... 421 Xerces .................................................................... 546 WatchKey, Klasse .............................................. 421 XFire, Codehaus ............................................... 1073 WatchService, Klasse ........................................ 420 XHTML .................................................................. 543 WAV ....................................................................... 641 xjc ........................................................................... 565 Web Application Security ............................. 1121 XML ........................................................................ 532 WebApplicationException ............................ 1069 XMLDecoder, Klasse .......................................... 522 Webbrowser ........................................................ 692 XMLEncoder, Klasse .......................................... 522 WebRowSet, Schnittstelle ................. 1183–1184 XMLEvent, Klasse ............................................... 571 Web-Service ...................................................... 1058 XMLEventFactory, Klasse ................................ 579 Webstart ............................................................. 1137 XMLEventReader, Klasse ................................. 576 Wechselknopf ..................................................... 682 XMLEventReader, Schnittstelle ..................... 579 WEEK_OF_MONTH, Calendar ........................ 328 XMLEventWriter, Klasse .................................. 572 WEEK_OF_YEAR, Calendar ............................. 328 XMLEventWriter, Schnittstelle ...................... 580 1432 Index XMLGregorianCalendar, Klasse ..................... 562 Z XMLInputFactory, Klasse ................................ 579 XMLOutputFactory, Klasse .................... 579–580 Zehnersystem ....................................................... 41 XMLOutputter, Klasse ...................................... 592 Zeichenbereich ................................................... 896 XMLStreamConstants, Schnittstelle ............ 572 Zeitablauf ........................................................... 1039 XMLStreamReader, Schnittstelle .................. 571 Zeitgenauigkeit .................................................. 317 XMLStreamWriter, Klasse ............................... 572 Zeitzone ....................................................... 306, 351 XMLStreamWriter, Schnittstelle .......... 579–580 Zeitzonenabweichung ..................................... 329 XMLVM .............................................................. 1294 Zertifizierungsstelle ....................................... 1368 XOR ........................................................................ 867 ZipEntry, Klasse ................................................. 633 Xor-Modus, Zeichnen ....................................... 907 ZipFile, Klasse ..................................................... 633 XPath ............................................................ 606, 610 ZONE_OFFSET, Calendar ................................. 329 XPath, Klasse ....................................................... 607 Zugriffsmodifizierer ....................................... 1245 XPath-Wurzel ...................................................... 606 Zustände, Threads ............................................... 72 XSLT ....................................................................... 610 Zwischenablage .................................................. 836 XStream ................................................................ 525 Zyklische Redundanzprüfung ....................... 499 Y YAJSW ................................................................. 1409 YEAR, Calendar ................................................... 328 yield(), Thread ....................................................... 75 1433