وبلاگ بلیان

Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m

معرفی کتاب «Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m» نوشتهٔ Christian Ullenboom، منتشرشده توسط نشر Galileo Press در سال 2012. این کتاب در 20 صفحه، فرمت pdf، زبان آلمانی ارائه شده است.

Buchcover......Page 1 Java 7 – Mehr als eine Insel: Das Handbuch zu den Java SE-Bibliotheken......Page 2 Liebe Leserin, lieber Leser......Page 3 Auf einen Blick......Page 4 Impressum......Page 5 Inhalt......Page 6 Vorwort......Page 36 1.1.2 Unterstriche bei Ganzzahlen......Page 42 1.1.3 switch (String)......Page 43 1.1.4 Zusammenfassen gleicher catch-Blöcke mit dem multi-catch......Page 44 Multi-catch......Page 45 Problemstellung......Page 48 Neu seit Java 7: eine präzisere Typprüfung......Page 50 1.1.7 try mit Ressourcen......Page 52 1.1.9 Die Schnittstelle AutoCloseable......Page 54 AutoCloseable und Closeable......Page 55 1.1.10 Mehrere Ressourcen nutzen......Page 56 1.1.11 Unterdrückte Ausnahmen *......Page 57 Spezielle Methoden in Throwable *......Page 59 1.2 JVM-Änderungen......Page 60 Skriptsprachen auf der JVM......Page 61 Umsetzung von Duck Typing......Page 62 1.3.1 Weitere Änderungen......Page 64 2.1.1 Threads über die Schnittstelle Runnable implementieren......Page 66 2.1.2 Thread mit Runnable starten......Page 67 2.1.3 Die Klasse Thread erweitern......Page 69 run() wurde statt start() aufgerufen: Ja, wo laufen sie denn?......Page 71 2.2.1 Der Name eines Threads......Page 72 2.2.3 Die Zustände eines Threads *......Page 73 2.2.4 Schläfer gesucht......Page 74 2.2.5 Mit yield() auf Rechenzeit verzichten......Page 76 2.2.6 Der Thread als Dämon......Page 77 Wie ein Thread in Java zum Dämon wird......Page 78 2.2.7 Das Ende eines Threads......Page 79 Die Methoden interrupt() und isInterrupted()......Page 80 2.2.9 UncaughtExceptionHandler für unbehandelte Ausnahmen......Page 82 2.2.10 Der stop() von außen und die Rettung mit ThreadDeath *......Page 83 Das ThreadDeath-Objekt......Page 84 2.2.11 Ein Rendezvous mit join() *......Page 85 Warten auf den Langsamsten......Page 87 2.2.13 Priorität *......Page 88 2.3 Der Ausführer (Executor) kommt......Page 89 Konkrete Executoren......Page 90 2.3.2 Die Thread-Pools......Page 92 2.3.3 Threads mit Rückgabe über Callable......Page 93 Beispiel: Felder sortieren über Callable......Page 94 Erinnerungen an die Zukunft: die Future-Rückgabe......Page 95 Ein Runnable mit Zukunft oder als Callable......Page 96 2.3.4 Mehrere Callable abarbeiten......Page 97 2.3.5 ScheduledExecutorService für wiederholende Ausgaben und Zeitsteuerungen nutzen......Page 98 2.4.2 Probleme beim gemeinsamen Zugriff und kritische Abschnitte......Page 99 Nicht kritische Abschnitte......Page 100 2.4.3 Punkte parallel initialisieren......Page 101 2.4.4 i++ sieht atomar aus, ist es aber nicht *......Page 103 2.4.5 Kritische Abschnitte schützen......Page 104 Java-Konstrukte zum Schutz der kritischen Abschnitte......Page 105 Die Schnittstelle java.util.concurrent.locks.Lock......Page 107 ReentrantReadWriteLock......Page 110 Das Schreiben sperren, das Lesen durchlassen *......Page 111 2.4.7 Synchronisieren mit synchronized......Page 114 2.4.8 Synchronized-Methoden der Klasse StringBuffer *......Page 115 2.4.9 Mit synchronized synchronisierte Blöcke......Page 116 Statisch synchronisierte Blöcke......Page 117 2.4.10 Dann machen wir doch gleich alles synchronisiert!......Page 118 2.4.11 Lock-Freigabe im Fall von Exceptions......Page 119 2.4.12 Deadlocks......Page 120 2.4.13 Mit synchronized nachträglich synchronisieren *......Page 122 2.4.14 Monitore sind reentrant – gut für die Geschwindigkeit *......Page 123 2.4.15 Synchronisierte Methodenaufrufe zusammenfassen *......Page 124 2.5 Synchronisation über Warten und Benachrichtigen......Page 125 2.5.1 Die Schnittstelle Condition......Page 126 Warten mit await() und Aufwecken mit signal()......Page 127 Vor der Condition kommt ein Lock......Page 128 await() mit einer Zeitspanne......Page 129 2.5.2 It’s Disco-Time *......Page 130 2.5.3 Warten mit wait() und Aufwecken mit notify() *......Page 136 2.5.4 Falls der Lock fehlt: IllegalMonitorStateException *......Page 137 2.6.1 Semaphor......Page 139 Die Klasse Semaphore......Page 140 Fair und unfair......Page 143 2.6.2 Barrier und Austausch......Page 144 2.7 Atomare Operationen und frische Werte mit volatile *......Page 146 Zwischenspeicherung untersagen......Page 147 2.7.2 Das Paket java.util.concurrent.atomic......Page 149 Sortieren über das Merge-Sort-Verfahren......Page 150 Multiplikation von großen Ganzzahlen......Page 151 2.8.2 Paralleles Lösen von D&C-Algorithmen......Page 152 2.8.3 Fork und Join......Page 153 2.9.1 ThreadLocal......Page 157 Zählen mit thread-lokalen Variablen......Page 158 2.9.2 InheritableThreadLocal......Page 160 2.9.3 ThreadLocalRandom als Zufallszahlengenerator......Page 161 2.9.4 ThreadLocal bei der Performance-Optimierung......Page 162 2.10.1 Aktive Threads in der Umgebung......Page 163 2.10.2 Etwas über die aktuelle Thread-Gruppe herausfinden......Page 164 2.10.3 Threads in einer Thread-Gruppe anlegen......Page 167 Veraltete Methoden und Ähnliches......Page 170 2.11 Zeitgesteuerte Abläufe......Page 171 2.11.1 Die Typen Timer und TimerTask......Page 172 2.11.2 Job-Scheduler Quartz......Page 173 2.12 Einen Abbruch der virtuellen Maschine erkennen......Page 174 2.13 Zum Weiterlesen......Page 175 3.1 Datenstrukturen und die Collection-API......Page 176 3.1.2 Die Basis-Schnittstellen Collection und Map......Page 177 3.1.4 Das erste Programm mit Container-Klassen......Page 178 3.1.5 Die Schnittstelle Collection und Kernkonzepte......Page 179 Vergleiche im Allgemeinen auf Basis von equals()......Page 182 3.1.6 Schnittstellen, die Collection erweitern, und Map......Page 183 Die Schnittstelle Set für Mengen......Page 184 Die Schnittstelle Map......Page 185 3.1.7 Konkrete Container-Klassen......Page 186 Welche Container-Klasse nehmen?......Page 187 3.1.9 Die Schnittstelle Iterable und das erweiterte for......Page 188 3.2 Listen......Page 189 3.2.1 Erstes Listen-Beispiel......Page 190 3.2.2 Auswahlkriterium ArrayList oder LinkedList......Page 191 Positionsanfragen und Suchen......Page 192 Löschen von Elementen......Page 193 Nach Elementen suchen und ihre Position ausgeben......Page 196 Kopieren und Ausschneiden......Page 197 Eine ArrayList erzeugen......Page 198 Die interne Arbeitsweise von ArrayList und Vector *......Page 199 Die Größe eines Feldes *......Page 200 3.2.5 LinkedList......Page 201 3.2.6 Der Feld-Adapter Arrays.asList()......Page 202 3.2.7 ListIterator *......Page 203 3.2.8 toArray() von Collection verstehen – die Gefahr einer Falle erkennen......Page 205 Die Lösung für das Problem......Page 207 3.2.9 Primitive Elemente in Datenstrukturen verwalten......Page 208 3.3 Mengen (Sets)......Page 209 3.3.1 Ein erstes Mengen-Beispiel......Page 210 3.3.2 Methoden der Schnittstelle Set......Page 213 3.3.3 HashSet......Page 214 3.3.4 TreeSet – die sortierte Menge......Page 215 Die Methode equals() und die Vergleichsmethoden......Page 216 3.3.5 Die Schnittstellen NavigableSet und SortedSet......Page 217 3.4 Stack (Kellerspeicher, Stapel)......Page 219 3.4.1 Die Methoden von Stack......Page 220 3.5 Queues (Schlangen) und Deques......Page 221 3.5.1 Queue-Klassen......Page 222 3.5.2 Deque-Klassen......Page 223 3.5.4 PriorityQueue......Page 224 Comparator für wichtige Strings......Page 226 Wichtige Meldungen in der Prioritätswarteschlange......Page 228 3.6.1 Die Klassen HashMap und TreeMap......Page 229 Die Klasse TreeMap und die Schnittstelle SortedMap/NavigableMap......Page 231 Daten einfügen......Page 232 Daten auslesen......Page 233 Größe und Leertest......Page 234 3.6.3 Über die Bedeutung von equals() und hashCode()......Page 235 3.6.4 Eigene Objekte hashen......Page 236 3.6.7 Aufzählungen und Ansichten des Assoziativspeichers......Page 238 Verändernde Ansichten......Page 241 Der Füllfaktor und die Konstruktoren......Page 242 3.7.1 Properties setzen und lesen......Page 244 Zusammenfassung der Methoden......Page 245 3.7.4 Eigenschaften auf der Konsole ausgeben *......Page 246 3.7.5 Properties laden und speichern......Page 247 Properties im XML-Format speichern......Page 248 3.7.6 Klassenbeziehungen: Properties und Hashtable *......Page 249 3.8.1 Die Schnittstelle Iterator......Page 250 Beim Iterator geht es immer nur vorwärts......Page 251 3.8.2 Der Iterator kann (eventuell auch) löschen......Page 252 3.8.3 Einen Zufallszahleniterator schreiben......Page 253 Der typisierte Iterator......Page 255 Iterator und erweitertes for......Page 256 Einen eigenen Iterator und Iterable-Implementierung......Page 257 3.8.5 Fail-Fast-Iterator und die ConcurrentModificationException......Page 259 CurrentModificationException vermeiden......Page 260 Konvertieren von Enumeration, Iterator, Iterable *......Page 261 3.9 Algorithmen in Collections......Page 262 3.9.1 Die Bedeutung von Ordnung mit Comparator und Comparable......Page 264 3.9.2 Sortieren......Page 265 Strings sortieren, auch unabhängig von der Großund Kleinschreibung......Page 266 Implementierung von sort() über Arrays.sort() *......Page 267 3.9.3 Den größten und kleinsten Wert einer Collection finden......Page 268 Aufbauen, Schütteln, Beschneiden, Größensuche......Page 269 Implementierung der Extremwertmethoden bei Comparable-Objekten......Page 270 3.9.4 Nicht-änderbare Datenstrukturen, immutable oder nur-lesen?......Page 271 Collections.unmodifiableXXX()......Page 272 3.9.5 Null Object Pattern und leere Sammlungen/Iteratoren zurückgeben......Page 275 Im API-Design immutable Listen in der Rückgabe bevorzugen......Page 276 Collections.emptyXXX()......Page 277 3.9.6 Mit der Halbierungssuche nach Elementen fahnden......Page 279 3.9.7 Ersetzen, Kopieren, Füllen, Umdrehen, Rotieren *......Page 280 3.9.8 Listen durchwürfeln *......Page 282 3.9.10 Singletons *......Page 283 3.9.11 nCopies() *......Page 284 3.10.2 Nebenläufiger Assoziativspeicher und die Schnittstelle ConcurrentMap......Page 285 3.10.4 CopyOnWriteArrayList und CopyOnWriteArraySet......Page 286 Iteratoren von synchronisierten Wrappern......Page 287 3.10.7 ArrayBlockingQueue und LinkedBlockingQueue......Page 288 Beispiel mit unbeschränkter LinkedBlockingQueue......Page 289 Tickets mit Priorität......Page 291 Tickets generieren und mit der blockierenden Warteschlange verarbeiten......Page 293 3.11.1 Beispiel Multi-Set und Multi-Map......Page 295 3.11.2 Datenstrukturen aus Guava......Page 296 3.11.3 Utility-Klassen von Guava......Page 298 3.11.4 Prädikate......Page 299 3.12 Die Klasse BitSet für Bitmengen *......Page 300 3.12.1 Ein BitSet anlegen, füllen und erfragen......Page 301 3.12.2 Mengenorientierte Operationen......Page 302 3.12.3 Methodenübersicht......Page 303 Implementierungsdetails......Page 304 3.13 Zum Weiterlesen......Page 305 4.1 Weltzeit *......Page 306 4.2 Wichtige Datum-Klassen im Überblick......Page 307 4.2.3 Einfache Zeitumrechnungen durch TimeUnit......Page 308 4.3 Sprachen der Länder......Page 309 4.3.1 Sprachen und Regionen über Locale-Objekte......Page 310 Methoden von Locale......Page 311 4.4 Internationalisierung und Lokalisierung......Page 313 4.4.1 ResourceBundle-Objekte und Ressource-Dateien......Page 314 4.4.3 Die Klasse ResourceBundle......Page 315 4.4.4 Ladestrategie für ResourceBundle-Objekte......Page 317 4.5.1 Objekte erzeugen und Methoden nutzen......Page 318 4.5.2 Date-Objekte sind nicht immutable......Page 320 4.6.1 Die abstrakte Klasse Calendar......Page 321 4.6.2 Der gregorianische Kalender......Page 323 Fehlerquelle: Der Standard-Konstruktor setzt eine falsche Zeitzone *......Page 325 4.6.3 Calendar nach Date und Millisekunden fragen......Page 326 4.6.4 Ostertage *......Page 327 4.6.5 Abfragen und Setzen von Datumselementen über Feldbezeichner......Page 329 Werte relativ setzen......Page 331 Ein gregorianischer Kalender mit eigenen Werten *......Page 333 4.6.6 Wie viele Tage hat der Monat, oder wie viele Monate hat ein Jahr? *......Page 334 Liegt der 1.1. immer in der der KW 1?......Page 336 4.7 Zeitzonen in Java *......Page 337 4.7.2 SimpleTimeZone......Page 338 4.7.3 Methoden von TimeZone......Page 340 4.8 Zeitdauern und der XML-Datentyp Duration *......Page 341 4.8.1 DatatypeFactory als Fabrik......Page 342 Mögliche und unmögliche Operationen......Page 343 Duration-Vergleiche......Page 344 Zusammenfassung der Duration-Methoden......Page 345 4.9.1 Ausgaben mit printf()......Page 346 4.9.2 Mit DateFormat und SimpleDateFormat formatieren......Page 347 Vorgefertigte Formatierungen......Page 349 Eine noch individuellere Ausgabe *......Page 351 4.9.3 Parsen von Datumswerten......Page 353 parse() – die Nachsichtige......Page 354 Parsen und Formatieren ab bestimmten Positionen *......Page 355 4.10 Zum Weiterlesen......Page 356 5.1 Datei und Verzeichnis......Page 358 Pfadtrenner......Page 359 Namen erfragen und auflösen......Page 361 5.1.2 Verzeichnis oder Datei? Existiert es?......Page 362 Änderungsdatum einer Datei......Page 363 Dateiattribute verändern......Page 364 Ist eine Datei eine Verknüpfung? *......Page 365 5.1.5 Verzeichnisse auflisten und Dateien filtern......Page 366 Dateien mit FilenameFilter und FileFilter nach Kriterien filtern......Page 367 Dateien aus dem aktuellen Verzeichnis filtern......Page 369 5.1.6 Dateien berühren, neue Dateien anlegen, temporäre Dateien......Page 370 5.1.7 Dateien und Verzeichnisse löschen......Page 371 Rekursiv Verzeichnisse löschen......Page 372 5.1.8 Verzeichnisse nach Dateien iterativ durchsuchen *......Page 373 5.1.9 Wurzelverzeichnis, Laufwerksnamen, Plattenspeicher *......Page 374 Namen der Laufwerke......Page 375 Freier Plattenspeicher......Page 376 5.1.11 Mit Locking Dateien sperren *......Page 377 5.1.12 Sicherheitsprüfung *......Page 378 5.2 Dateien mit wahlfreiem Zugriff......Page 379 5.2.1 Ein RandomAccessFile zum Lesen und Schreiben öffnen......Page 380 5.2.2 Aus dem RandomAccessFile lesen......Page 381 Die UTF-8-Kodierung *......Page 383 5.2.3 Schreiben mit RandomAccessFile......Page 384 5.2.5 Hin und her in der Datei......Page 385 5.3 Dateisysteme unter NIO.2......Page 386 Ein Path-Objekt aufbauen......Page 387 Path-Eigenschaften erfragen......Page 388 Normalisierung und Pfadauflösung......Page 391 Einfaches Einlesen und Schreiben von Dateien......Page 393 Kopierund Verschiebeoptionen......Page 396 5.3.4 Dateiattribute *......Page 398 Dateiattribute mit XXXFileAttributes-Typen lesen......Page 399 Zusammenfassung der XXXFileAttributes-Schnittstellen und ihrer Methoden......Page 400 Attribute über XXXAttributeView-Schnittstellen schreiben......Page 402 Attribute-Strings als Schlüssel für einen Attributspeicher......Page 403 Benutzerdefinierte Datei-Attribute......Page 406 FileAttribute......Page 407 Symbolische Verknüpfungen anlegen *......Page 408 5.3.6 MIME-Typen testen *......Page 409 Filtern......Page 411 5.3.8 Rekursive Abläufe des Verzeichnisbaums (FileVisitor) *......Page 413 Finde alle Bilder (und auch Nemo)......Page 415 Zyklen erkennen, Verknüpfungen verfolgen, Tiefen angeben......Page 416 5.3.9 Dateisysteme und Dateisystemattribute *......Page 417 Eine Zip-Datei komplett ablaufen......Page 418 FileStore und Attribute eines Dateisystems......Page 420 5.3.10 Verzeichnisse im Dateisystem überwachen *......Page 421 5.4.1 SeekableByteChannel......Page 423 5.4.3 Beispiel mit Path + SeekableByteChannel + ByteBuffer......Page 424 5.4.4 FileChannel......Page 425 5.5 Zum Weiterlesen......Page 427 6.1 Stream-Klassen und Reader/Writer am Beispiel von Dateien......Page 428 6.1.1 Mit dem FileWriter Texte in Dateien schreiben......Page 429 6.1.2 Zeichen mit der Klasse FileReader lesen......Page 431 6.1.3 Kopieren mit FileOutputStream und FileInputStream......Page 432 Kopieren von Dateien *......Page 434 6.1.4 Das FileDescriptor-Objekt *......Page 436 Beispiel: Eine kleine PPM-Grafikdatei schreiben......Page 437 6.2.1 Die abstrakten Basisklassen......Page 439 6.2.2 Übersicht über Ein-/Ausgabeklassen......Page 440 6.2.3 Die abstrakte Basisklasse OutputStream......Page 442 Über konkrete und abstrakte Schreibmethoden *......Page 443 Closeable......Page 444 6.2.5 Ein Datenschlucker *......Page 445 6.2.6 Die abstrakte Basisklasse InputStream......Page 446 6.2.7 Ressourcen aus dem Klassenpfad und aus Jar-Archiven laden......Page 447 6.2.8 Ströme mit SequenceInputStream zusammensetzen *......Page 448 6.2.9 Die abstrakte Basisklasse Writer......Page 450 Wie die abstrakten Methoden genutzt und überschrieben werden *......Page 451 6.2.11 Die abstrakte Basisklasse Reader......Page 452 Weitere Methoden......Page 453 Sprünge und Markierungen......Page 454 6.3 Formatierte Textausgaben......Page 455 6.3.1 Die Klassen PrintWriter und PrintStream......Page 456 Konstruktoren......Page 457 Zeichenkodierung und Konvertierungen......Page 458 Methodenübersicht......Page 459 Umgang im Fehlerfall......Page 460 6.3.2 System.out, System.err und System.in......Page 461 Ströme umlenken *......Page 462 6.4 Schreiben und Lesen aus Strings und Byte-Feldern......Page 463 6.4.1 Mit dem StringWriter ein String-Objekt füllen......Page 464 6.4.2 CharArrayWriter......Page 465 6.4.3 StringReader und CharArrayReader......Page 466 6.4.5 Mit ByteArrayInputStream aus einem Byte-Feld lesen......Page 468 6.5 Datenströme filtern und verketten......Page 469 6.5.2 Gepufferte Ausgaben mit BufferedWriter und BufferedOutputStream......Page 470 Beispiel zum BufferedWriter mit FileWriter und PrintWriter......Page 471 6.5.3 Gepufferte Eingaben mit BufferedReader/BufferedInputStream......Page 472 Programm zur Anzeige von Dateien......Page 473 Zeilen lesen mit BufferedReader und readLine()......Page 474 6.5.5 Daten mit der Klasse PushbackReader zurücklegen *......Page 475 Zeilennummern mit einem PushbackReader entfernen......Page 477 PushbackReader und das fehlende readLine()......Page 478 6.5.7 Basisklassen für Filter *......Page 479 6.5.8 Die Basisklasse FilterWriter *......Page 480 6.5.9 Ein LowerCaseWriter *......Page 481 6.5.10 Eingaben mit der Klasse FilterReader filtern *......Page 483 6.5.11 Anwendungen für FilterReader und FilterWriter *......Page 484 HTML-Dokument schreiben......Page 485 HTML-Tags mit einem speziellen Filter überlesen......Page 489 6.6.1 Datenkonvertierung durch den OutputStreamWriter......Page 492 6.6.2 Automatische Konvertierungen mit dem InputStreamReader......Page 493 6.7 Kommunikation zwischen Threads mit Pipes *......Page 494 6.7.1 PipedOutputStream und PipedInputStream......Page 495 Interna......Page 496 6.7.2 PipedWriter und PipedReader......Page 497 6.8.1 Die Schnittstelle Checksum......Page 499 6.8.2 Die Klasse CRC32......Page 500 CRC eines Datenstroms berechnen......Page 501 6.8.3 Die Adler32-Klasse......Page 502 6.9 Persistente Objekte und Serialisierung......Page 503 6.9.1 Objekte mit der Standard-Serialisierung speichern und lesen......Page 504 ObjectOutputStream......Page 505 Objekte über die Standard-Serialisierung lesen......Page 506 Objekte über das Netzwerk schicken......Page 507 6.9.3 Die Schnittstelle Serializable......Page 508 Die serialisierbare Klasse Person......Page 509 6.9.4 Nicht serialisierbare Attribute aussparen......Page 510 6.9.5 Das Abspeichern selbst in die Hand nehmen......Page 512 Oberklassen serialisieren sich gleich mit......Page 513 Doch noch den Standardserialisierer nutzen......Page 514 Beispiel für defaultReadObject()/defaultWriteObject() *......Page 515 6.9.6 Tiefe Objektkopien *......Page 516 6.9.7 Versionenverwaltung und die SUID......Page 518 Die eigene SUID......Page 519 6.9.8 Wie die ArrayList serialisiert *......Page 520 6.9.9 Probleme mit der Serialisierung......Page 521 6.10.2 XML-Serialisierung von JavaBeans mit JavaBeans Persistence *......Page 523 6.10.3 Die Open-Source-Bibliothek XStream *......Page 526 6.11.1 StreamTokenizer......Page 527 6.12 Zum Weiterlesen......Page 530 7.1 Auszeichnungssprachen......Page 532 7.1.2 Extensible Markup Language (XML)......Page 533 Verwendung von Tags......Page 534 Spezielle Zeichen in XML (Entitäten)......Page 535 7.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten......Page 536 Document Type Definition (DTD)......Page 537 Attributbeschreibung......Page 538 Bezugnahme auf eine DTD......Page 539 Party-Schema......Page 540 Simple und komplexe Typen......Page 542 7.2.4 Namensraum (Namespace)......Page 543 7.2.5 XML-Applikationen *......Page 544 7.3 Die Java-APIs für XML......Page 545 7.3.4 Java Document Object Model (JDOM)......Page 546 Java API for XML Parsing (JAXP)......Page 547 7.3.6 DOM-Bäume einlesen mit JAXP *......Page 548 7.4.1 Bean für JAXB aufbauen......Page 549 7.4.2 JAXBContext und die Marshaller......Page 550 7.4.3 Ganze Objektgraphen schreiben und lesen......Page 551 7.4.4 Validierung......Page 554 Mit schemagen aus JAXB-Beans eine XML-Schema-Datei generieren......Page 555 Schema-Validierung mit JAXB......Page 556 Zugriff über Setter/Getter oder Attribute......Page 558 Reihenfolge der Elemente ändern......Page 559 Kompakte Listendarstellung......Page 560 Anpassen der XML-Abbildung......Page 561 Der spezielle Datentyp XMLGregorianCalendar......Page 563 Hierarchien einsetzen......Page 564 7.4.6 Beans aus XML-Schema-Datei generieren......Page 566 xjc aufrufen......Page 567 Konflikte in der Schema-Datei *......Page 570 7.5 Serielle Verarbeitung mit StAX......Page 571 7.5.1 Unterschiede der Verarbeitungsmodelle......Page 572 7.5.2 XML-Dateien mit dem Cursor-Verfahren lesen......Page 573 7.5.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten *......Page 577 7.5.4 Mit Filtern arbeiten *......Page 579 7.5.5 XML-Dokumente schreiben......Page 580 XMLEventWriter *......Page 581 7.6 Serielle Verarbeitung von XML mit SAX *......Page 583 7.6.1 Schnittstellen von SAX......Page 584 7.6.3 Operationen der Schnittstelle ContentHandler......Page 585 7.6.4 ErrorHandler und EntityResolver......Page 588 7.7.2 Paketübersicht *......Page 589 Die Pakete org.jdom.output und org.jdom.input......Page 590 Ein JDOM-Document im Speicher erstellen......Page 591 7.7.4 Eingaben aus der Datei lesen......Page 592 7.7.5 Das Dokument im XML-Format ausgeben......Page 593 7.7.6 Der Dokumenttyp *......Page 594 Wurzelelement......Page 595 Zugriff auf Elemente......Page 596 Elementinhalte auslesen und setzen......Page 598 7.7.9 Liste mit Unterelementen erzeugen *......Page 600 7.7.10 Neue Elemente einfügen und ändern......Page 601 7.7.11 Attributinhalte lesen und ändern......Page 604 Knoten(-mengen) selektieren......Page 607 XPath mit JDOM......Page 608 7.8.1 Templates und XPath als Kernelemente von XSLT......Page 611 7.8.2 Umwandlung von XML-Dateien mit JDOM und JAXP......Page 614 7.9.2 Validator......Page 615 7.10 Zum Weiterlesen......Page 616 8 Dateiformate......Page 618 8.1.2 CSV-Dateien......Page 619 8.1.3 JSON-Serialisierung mit Jackson......Page 620 8.2.1 (X)HTML......Page 621 CyberNeko......Page 622 8.2.3 Microsoft Office-Dokumente......Page 623 compress/uncompress, GZip/GunZip......Page 625 8.3.1 Java-Unterstützung beim Komprimieren......Page 626 8.3.2 Daten packen und entpacken......Page 627 8.3.3 Datenströme komprimieren......Page 628 Daten packen......Page 629 GZip-Kommandozeilenprogramm......Page 630 Daten entpacken......Page 631 GunZip-Kommandozeilenprogramm......Page 632 8.3.4 Zip-Archive......Page 633 Die Klassen ZipFile und ZipEntry......Page 634 ZipEntry und die Datei-Attribute......Page 636 Dateien auspacken......Page 637 Ein Archiv Datei für Datei entpacken......Page 638 Einträge dem Zip-Archiv hinzufügen......Page 640 8.5.1 Die Arbeit mit AudioClip......Page 641 Java Sound API......Page 642 MIDI-Dateien abspielen......Page 643 9.1.1 Swing-Fenster mit javax.swing.JFrame darstellen......Page 646 Mit add() auf den Container......Page 647 9.1.2 Fenster schließbar machen – setDefaultCloseOperation()......Page 648 9.1.4 Größe und Position des Fensters verändern......Page 649 9.1.5 Fensterund Dialog-Dekoration, Transparenz *......Page 650 9.1.6 Die Klasse Toolkit *......Page 651 9.1.8 Zum Vergleich: AWT-Fenster darstellen *......Page 652 9.2 Beschriftungen (JLabel)......Page 654 Grafik und Beschriftung......Page 655 Text und Ausrichtung des JLabel......Page 656 9.2.1 Mehrzeiliger Text, HTML in der Darstellung......Page 657 9.3.1 Die Klasse ImageIcon......Page 658 ImageIcon-API......Page 659 9.3.2 Die Schnittstelle Icon und eigene Icons zeichnen *......Page 660 9.4 Es tut sich was – Ereignisse beim AWT......Page 662 9.4.1 Die Ereignisquellen und Horcher (Listener) von Swing......Page 663 Die Schnittstelle WindowListener......Page 664 Wer implementiert die Schnittstelle WindowListener?......Page 665 Fenster-Schließ-Horcher......Page 666 Fensterschließer registrieren......Page 667 Der Unterschied zwischen windowClosing() und windowClosed() *......Page 668 9.4.4 Adapterklassen nutzen......Page 669 Auf Klicks reagieren......Page 671 Mini-Multiplikationsrechner......Page 672 9.4.6 Aufrufen der Listener im AWT-Event-Thread......Page 673 AWTEvent und Unterklassen WindowEvent, KeyEvent, .........Page 674 Events auf verschiedenen Ebenen......Page 675 9.5.1 Normale Schaltflächen (JButton)......Page 677 Die JButton-API......Page 678 9.5.2 Der aufmerksame ActionListener......Page 679 9.5.3 Schaltflächen-Ereignisse vom Typ ActionEvent......Page 680 9.5.4 Basisklasse AbstractButton......Page 681 Bilder auf Schaltflächen je nach Zustand *......Page 682 9.5.5 Wechselknopf (JToggleButton)......Page 683 9.6 Textkomponenten......Page 684 9.6.1 Text in einer Eingabezeile......Page 685 Das Caret *......Page 686 9.6.3 Geschützte Eingaben (JPasswordField)......Page 687 9.6.4 Validierende Eingabefelder (JFormattedTextField)......Page 688 9.6.5 Einfache mehrzeilige Textfelder (JTextArea)......Page 689 Scrolling......Page 692 9.6.6 Editor-Klasse (JEditorPane) *......Page 693 9.7 Swing Action *......Page 695 Eigenschaften der Action-Objekte......Page 696 9.8.1 Hinzufügen von Komponenten......Page 698 9.8.2 Tooltips (Kurzhinweise)......Page 699 9.8.3 Rahmen (Border) *......Page 700 Die Rahmenfabrik (BorderFactory)......Page 701 9.8.4 Fokus und Navigation *......Page 702 9.8.5 Ereignisse jeder Komponente *......Page 703 Auf Tastendrücke hören: KeyListener und KeyEvent......Page 704 Mausrad-Unterstützung......Page 706 Die Position der Komponente......Page 707 9.8.7 Komponenten-Ereignisse *......Page 708 Abfolge beim Zeichnen: paint(), paintComponent(), UI-Delegate......Page 709 revalidate(), invalidate(), validate(), repaint()......Page 710 9.9 Container......Page 712 9.9.1 Standardcontainer (JPanel)......Page 713 Der Viewport *......Page 714 9.9.3 Reiter (JTabbedPane)......Page 715 9.9.4 Teilungskomponente (JSplitPane)......Page 716 9.10 Alles Auslegungssache: die Layoutmanager......Page 717 9.10.2 Zuweisen eines Layoutmanagers......Page 718 9.10.3 Im Fluss mit FlowLayout......Page 719 9.10.4 BoxLayout......Page 721 9.10.5 Mit BorderLayout in alle Himmelsrichtungen......Page 722 API-Dokumentation......Page 725 9.10.7 Der GridBagLayoutmanager *......Page 726 GridBagConstraints-Objekt aufbauen......Page 727 Wichtige Attribute des GridBagConstraints: Breite, Höhe und Ausdehnung......Page 728 Programmierung vereinfachen......Page 729 Die restlichen Attribute......Page 731 9.10.8 Null-Layout *......Page 732 9.10.9 Weitere Layoutmanager......Page 733 9.11.1 Schieberegler (JSlider)......Page 734 9.11.2 Rollbalken (JScrollBar) *......Page 735 Die JScrollBar-API......Page 736 Der AdjustmentListener, der auf Änderungen hört......Page 738 9.12 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen......Page 740 9.12.1 Kontrollfelder (JCheckBox)......Page 741 9.12.2 ItemSelectable, ItemListener und das ItemEvent......Page 742 ItemEvent an ItemListener......Page 743 Die ButtonGroup......Page 744 9.13.1 Fortschrittsbalken (JProgressBar)......Page 746 9.14.1 Die Menüleisten und die Einträge......Page 749 9.14.2 Menüeinträge definieren......Page 751 9.14.3 Einträge durch Action-Objekte beschreiben......Page 752 9.14.4 Mit der Tastatur: Mnemonics und Shortcut......Page 753 9.14.5 Der Tastatur-Shortcut (Accelerator)......Page 754 Standards wahren......Page 755 9.14.6 Tastenkürzel (Mnemonics)......Page 756 9.14.7 Symbolleisten alias Toolbars......Page 757 9.14.8 Popup-Menüs......Page 760 Popup-Menüs (JPopupMenu)......Page 761 Ein allgemeiner Listener......Page 762 Beispiel für ein JPopupMenu......Page 763 9.14.9 System-Tray nutzen *......Page 765 Modifizierte MVC-Architektur für Swing......Page 766 Model-Klassen......Page 767 9.16.1 Listen (JList)......Page 768 DefaultListModel als modifzierbares ListModel......Page 769 Ereignis bei einer Selektion......Page 772 Zugriff auf selektierte Elemente und der Selektionsmodus......Page 773 Beispiel mit Textfeld, Schaltfläche und Liste......Page 774 Renderer......Page 775 9.16.2 Auswahlmenü (JComboBox)......Page 776 Durchreichemethoden an das Model......Page 778 Ereignisse der JComboBox......Page 779 Zuordnung einer Taste mit einem Eintrag *......Page 780 Auswahlmenü mit Separator......Page 781 SpinnerListModel......Page 788 SpinnerDateModel......Page 789 9.17 Tabellen (JTable)......Page 790 9.17.1 Ein eigenes Tabellen-Model......Page 792 9.17.2 Basisklasse für eigene Modelle (AbstractTableModel)......Page 793 Ein Quadratzahlen-Model......Page 794 Das Tabellen-Model zuweisen......Page 795 Ereignisse bei Änderungen......Page 796 9.17.3 Ein vorgefertigtes Standard-Modell (DefaultTableModel)......Page 797 DefaultTableCellRenderer......Page 799 Renderer zuweisen......Page 801 9.17.5 Zell-Editoren......Page 802 9.17.7 Spalteninformationen *......Page 804 9.17.8 Tabellenkopf von Swing-Tabellen *......Page 805 9.17.9 Selektionen einer Tabelle *......Page 806 9.17.10 Automatisches Sortieren und Filtern mit RowSorter *......Page 807 Filter......Page 808 Alternative Implementierungen......Page 809 9.18.1 JTree und sein TreeModel und TreeNode......Page 810 9.18.3 Das TreeModel von JTree *......Page 812 Liste von Punkten hierarchisch darstellen......Page 813 9.19.2 JDesktopPane und die Kinder von JInternalFrame......Page 816 9.19.3 JLayeredPane......Page 818 9.20.1 JWindow und JDialog......Page 819 9.20.2 Modal oder nicht-modal?......Page 820 9.20.3 Standarddialoge mit JOptionPane......Page 821 Bestätigung einholen......Page 822 Dialogtyp und Visualisierung mit Icon......Page 823 Vollstän
دانلود کتاب Java 7 - mehr als eine Insel das Handbuch zu den Java SE-Bibliotheken ; [Nebenläufigkeit, Datenstrukturen und Algorithmen, Ein/Ausgabe, XML, Swing, Grafik- und Netzwerkprogrammierung, RMI, JavaServer Pages und Servlets, JDBC, Reflection u.v.m