Ullenboom | Java SE 9 Standard-Bibliothek | E-Book | sack.de
E-Book

E-Book, Deutsch, 1447 Seiten

Reihe: Rheinwerk Computing

Ullenboom Java SE 9 Standard-Bibliothek

Das Handbuch für Entwickler
3. Auflage 2017
ISBN: 978-3-8362-5876-0
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 6 - ePub Watermark

Das Handbuch für Entwickler

E-Book, Deutsch, 1447 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-5876-0
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 6 - ePub Watermark



Die Fortsetzung des Java-Kultbuchs für Entwickler! Hier bekommen Sie umfassendes und kompetentes Praxiswissen zu den vielen Bibliotheken und Technologien in einem Band. Am Beispiel konkreter Java-Projekte zeigt Christian Ullenboom, was man wissen muss über Swing/JavaFX, Netzwerk- und Grafikprogrammierung, RMI und Web-Services, JDBC, Reflection und Annotationen, Logging und Monitoring, Java Native Interface (JNI) und vieles mehr. Dieses Buch ist Ihr unersetzlicher Begleiter bei der täglichen Arbeit!

Aus dem Inhalt:

  • Neues in Java 9
  • Threads und nebenläufige Programmierung
  • Datenstrukturen und Algorithmen
  • Raum und Zeit
  • Dateien, Verzeichnisse und Dateizugriffe
  • Datenströme
  • eXtensible Markup Language
  • Grafische Oberflächen mit Swing/JavaFX
  • Grafik- und Netzwerkprogrammierung
  • Verteilte Programmierung mit RMI
  • Datenbankmanagement mit JDBC
  • Reflection und Annotationen
  • Logging und Monitoring


Die Fachpresse zur Vorauflage:
iX - Magazin für professionelle Informationstechnik: »Ein »Wunderwerk««

PHP Nuke: »Ein wichtiges Java-Standardwerk! Der Schreibstil ist fantastisch. «

cc13.com: »Unverzichtbares Nachschlagewerk, uneingeschränkt zu empfehlen!«



Christian Ullenboom, Dipl.-Informatiker, ist zertifizierter Java-Programmierer und seit 1997 Trainer und Berater für Java-Technologien und objektorientierte Analyse und Design. Seit Jahren teilt er sein Wissen mit unzähligen Besuchern seiner Website, wo er Fragen beantwortet, Inhalte bereitstellt und diskutiert. Seine Sympathie gilt Java Performance Tuning und den sinnlichen Freuden des Lebens.
Ullenboom Java SE 9 Standard-Bibliothek jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1.  Vorwort ... 35  1.  Neues in Java 9 ... 43  1.1 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 43  1.2 ... Module entwickeln und einbinden ... 49  1.3 ... Sprachänderungen in Java 9 ... 64  1.4 ... Bibliotheksänderungen in Java 9 ... 65  1.5 ... Änderungen in den Werkzeugen von Java 9 ... 65  1.6 ... JDK 9-HotSpot-JVM-Änderungen ... 66  1.7 ... Zum Weiterlesen ... 66  2.  Die Klassenbibliothek ... 67  2.1 ... Die Java-Klassenphilosophie ... 67  2.2 ... Die Utility-Klassen System und Properties ... 74  2.3 ... Versionskennungen auslesen, aufbauen, parsen und vergleichen ... 84  2.4 ... Einfache Benutzereingaben ... 86  2.5 ... Benutzereinstellungen * ... 88  2.6 ... Maven: Build-Management und Abhängigkeiten auflösen ... 95  2.7 ... Zum Weiterlesen ... 99  3.  Fortgeschrittene String-Verarbeitung ... 101  3.1 ... Erweiterte Zeicheneigenschaften ... 101  3.2 ... Reguläre Ausdrücke ... 104  3.3 ... Zerlegen von Zeichenketten ... 122  3.4 ... Zeichenkodierungen, XML/HTML-Entities, Base64 * ... 137  3.5 ... Ausgaben formatieren ... 142  3.6 ... Sprachabhängiges Vergleichen und Normalisierung * ... 154  3.7 ... Phonetische Vergleiche * ... 159  3.8 ... Zum Weiterlesen ... 160  4.  Datenstrukturen und Algorithmen ... 161  4.1 ... Datenstrukturen und die Collection-API ... 161  4.2 ... Listen ... 173  4.3 ... Mengen (Sets) ... 191  4.4 ... Queues (Schlangen) und Deques ... 201  4.5 ... Stack (Kellerspeicher, Stapel) ... 209  4.6 ... Assoziative Speicher ... 211  4.7 ... Immutable Datenstrukturen ... 235  4.8 ... Mit einem Iterator durch die Daten wandern ... 245  4.9 ... Algorithmen in Collections ... 255  4.10 ... Datenstrukturen mit Änderungsmeldungen ... 268  4.11 ... Stream-API ... 278  4.12 ... Spezielle threadsichere Datenstrukturen ... 317  4.13 ... Google Guava (Google Collections Library) ... 327  4.14 ... Die Klasse BitSet für Bitmengen * ... 332  4.15 ... Zum Weiterlesen ... 338  5.  Threads und nebenläufige Programmierung ... 339  5.1 ... Threads erzeugen ... 339  5.2 ... Thread-Eigenschaften und Zustände ... 344  5.3 ... Der Ausführer (Executor) kommt ... 360  5.4 ... Synchronisation über kritische Abschnitte ... 372  5.5 ... Synchronisation über Warten und Benachrichtigen ... 396  5.6 ... Datensynchronisation durch besondere Concurrency-Klassen * ... 408  5.7 ... Atomare Operationen und frische Werte mit volatile * ... 414  5.8 ... Teile und herrsche mit Fork und Join * ... 418  5.9 ... Mit dem Thread verbundene Variablen * ... 424  5.10 ... Threads in einer Thread-Gruppe * ... 430  5.11 ... Reaktive Programmierung und die Flow-API * ... 438  5.12 ... Zeitgesteuerte Abläufe ... 440  5.13 ... Ausführen externer Programme, Starten von Prozessen * ... 442  5.14 ... Den Stack-Trace erfragen * ... 450  5.15 ... Einen Abbruch der virtuellen Maschine erkennen ... 455  5.16 ... Zum Weiterlesen ... 457  6.  Raum und Zeit ... 459  6.1 ... Sprachen der Länder ... 459  6.2 ... Internationalisierung und Lokalisierung ... 463  6.3 ... Weltzeit * ... 468  6.4 ... Wichtige Datum-Klassen im Überblick ... 469  6.5 ... Die Klasse Date ... 472  6.6 ... Date-Time-API ... 474  6.7 ... Calendar und GregorianCalendar ... 504  6.8 ... Zeitzonen in Java * ... 517  6.9 ... Formatieren und Parsen von Date-Objekten ... 520  6.10 ... Die Default-Falle ... 528  6.11 ... Zum Weiterlesen ... 529  7.  Dateien, Verzeichnisse und Dateizugriffe ... 531  7.1 ... Alte und neue Welt in java.io und java.nio ... 531  7.2 ... Dateisysteme und Pfade ... 533  7.3 ... Datei- und Verzeichnisoperationen mit der Klasse File ... 569  7.4 ... Dateien mit wahlfreiem Zugriff ... 585  7.5 ... Wahlfreier Zugriff mit SeekableByteChannel und ByteBuffer * ... 591  7.6 ... Zum Weiterlesen ... 595  8.  Datenströme ... 597  8.1 ... Basisklassen für die Ein-/Ausgabe ... 597  8.2 ... Lesen aus Dateien und Schreiben in Dateien ... 610  8.3 ... Übersicht über Ein-/Ausgabeklassen ... 616  8.4 ... Formatierte Textausgaben ... 620  8.5 ... Die FileXXX-Stromklassen ... 628  8.6 ... Schreiben und Lesen aus Strings und Byte-Feldern ... 635  8.7 ... Datenströme filtern und verketten ... 640  8.8 ... Vermittler zwischen Byte-Streams und Unicode-Strömen ... 653  8.9 ... Kommunikation zwischen Threads mit Pipes * ... 657  8.10 ... Prüfsummen ... 660  8.11 ... Persistente Objekte und Serialisierung ... 664  8.12 ... Alternative Datenaustauschformate ... 685  8.13 ... Zum Weiterlesen ... 688  9.  Dateiformate ... 689  9.1 ... Einfache Dateiformate für strukturierte Daten ... 690  9.2 ... Dokumentenformate ... 694  9.3 ... Datenkompression * ... 697  9.4 ... Bildformate ... 711  9.5 ... Audiodateien ... 711  9.6 ... Zum Weiterlesen ... 715

10.  Die eXtensible Markup Language (XML) und JSON ... 717  10.1 ... Auszeichnungssprachen ... 717  10.2 ... Eigenschaften von XML-Dokumenten ... 718  10.3 ... Die Java-APIs für XML ... 729  10.4 ... Java Architecture for XML Binding (JAXB) ... 732  10.5 ... Serielle Verarbeitung mit StAX ... 755  10.6 ... Serielle Verarbeitung von XML mit SAX * ... 768  10.7 ... XML-Dateien mit JDOM verarbeiten ... 772  10.8 ... Transformationen mit XSLT * ... 794  10.9 ... XML-Schema-Validierung * ... 797  10.10 ... JSON-Serialisierung mit Jackson-Datenformat ... 799  10.11 ... Zum Weiterlesen ... 803

11.  Netzwerkprogrammierung ... 805  11.1 ... Grundlegende Begriffe ... 805  11.2 ... URI und URL ... 807  11.3 ... URL-Parameter kodieren ... 812  11.4 ... Die Klassen URLConnection und HttpURLConnection ... 813  11.5 ... Host- und IP-Adressen ... 822  11.6 ... Socket-Verbindungen ... 827  11.7 ... HTTP Client API in Java 9 ... 841  11.8 ... Neue externe Netzwerkbibliotheken * ... 843  11.9 ... Arbeitsweise eines Webservers * ... 844  11.10 ... Verbindungen durch einen Proxy-Server * ... 853  11.11 ... Bidirektionale binäre Webkommunikation über WebSockets * ... 855  11.12 ... Datagram-Sockets * ... 856  11.13 ... Tiefer liegende Netzwerkeigenschaften * ... 862  11.14 ... Zum Weiterlesen ... 863

12.  RESTful und SOAP-Web-Services ... 865  12.1 ... Web-Services ... 865  12.2 ... RESTful Web-Services ... 866  12.3 ... Daily Soap und das SOAP-Protokoll ... 868  12.4 ... Zum Weiterlesen ... 874

13.  Verteilte Programmierung mit RMI ... 875  13.1 ... Entfernte Objekte und Methoden ... 875  13.2 ... Java Remote Method Invocation ... 877  13.3 ... Auf der Serverseite ... 881  13.4 ... Auf der Client-Seite ... 889  13.5 ... Entfernte Objekte übergeben und laden ... 890  13.6 ... Automatische Remote-Objekt-Aktivierung ... 891  13.7 ... Java Message Service (JMS) ... 892  13.8 ... Zum Weiterlesen ... 892

14.  Typen, Reflection und Annotationen ... 895  14.1 ... Metadaten ... 895  14.2 ... Die Klasse Class ... 896  14.3 ... Klassenlader ... 899  14.4 ... Metadaten der Typen mit dem Class-Objekt ... 905  14.5 ... Attribute, Methoden und Konstruktoren ... 915  14.6 ... Objekte erzeugen und manipulieren ... 927  14.7 ... Schneller aufrufen mit MethodType und MethodHandle ... 941  14.8 ... Eigene Annotationstypen * ... 942  14.9 ... Zum Weiterlesen ... 962

15.  Logging und Monitoring ... 963  15.1 ... Logging mit Java ... 963  15.2 ... Systemzustände überwachen ... 976  15.3 ... MBean-Typen, MBean-Server und weitere Begriffe ... 976  15.4 ... Geschwätzige Programme und JConsole ... 979  15.5 ... Der MBeanServer ... 981  15.6 ... Eine eigene Standard-MBean ... 982  15.7 ... Zum Weiterlesen ... 986

16.  Datenbankmanagement mit JDBC ... 987  16.1 ... Relationale Datenbanken und Datenbankmanagementsysteme ... 987  16.2 ... JDBC und Datenbanktreiber ... 993  16.3 ... Eine Beispielabfrage ... 995  16.4 ... Mit Java an eine Datenbank andocken ... 996  16.5 ... Datenbankabfragen ... 1003  16.6 ... Elemente einer Datenbank ändern ... 1013  16.7 ... Die Ausnahmen bei JDBC, SQLException und Unterklassen ... 1016  16.8 ... ResultSet und RowSet * ... 1019  16.9 ... Vorbereitete Anweisungen (Prepared Statements) ... 1023  16.10 ... Transaktionen ... 1026  16.11 ... Vorbereitete Datenbankverbindungen ... 1027  16.12 ... Zum Weiterlesen ... 1031

17.  Grafische Oberflächen mit Swing ... 1033  17.1 ... AWT, JavaFoundation Classes und Swing ... 1033  17.2 ... Mit NetBeans zur ersten Swing-Oberfläche ... 1038  17.3 ... Aller Swing-Anfang -- Fenster zur Welt ... 1049  17.4 ... Beschriftungen (JLabel) ... 1057  17.5 ... Icon und ImageIcon für Bilder auf Swing-Komponenten ... 1060  17.6 ... Es tut sich was -- Ereignisse beim AWT ... 1062  17.7 ... Schaltflächen ... 1076  17.8 ... Textkomponenten ... 1081  17.9 ... Swing Action * ... 1093  17.10 ... JComponent und Component als Basis aller Komponenten ... 1095  17.11 ... Container ... 1108  17.12 ... Alles Auslegungssache -- die Layoutmanager ... 1112  17.13 ... Rollbalken und Schieberegler ... 1126  17.14 ... Kontrollfelder, Optionsfelder, Kontrollfeldgruppen ... 1131  17.15 ... Fortschritte bei Operationen überwachen * ... 1137  17.16 ... Menüs und Symbolleisten ... 1139  17.17 ... Das Model-View-Controller-Konzept ... 1155  17.18 ... Auswahlmenüs, Listen und Spinner ... 1157  17.19 ... Tabellen (JTable) ... 1172  17.20 ... Bäume (JTree) ... 1187  17.21 ... Dialoge und Window-Objekte ... 1192  17.22 ... Flexibles Java-Look-and-Feel ... 1201  17.23 ... Swing-Komponenten neu erstellen oder verändern * ... 1203  17.24 ... Die Zwischenablage (Clipboard) ... 1206  17.25 ... AWT, Swing und die Threads ... 1211  17.26 ... Barrierefreiheit mit der Java Accessibility API ... 1219  17.27 ... Zeitliches Ausführen mit dem javax.swing.Timer ... 1220  17.28 ... Zum Weiterlesen ... 1221

18.  Grafikprogrammierung ... 1223  18.1 ... Grundlegendes zum Zeichnen ... 1223  18.2 ... Einfache Zeichenmethoden ... 1229  18.3 ... Zeichenketten schreiben und Fonts ... 1233  18.4 ... Geometrische Objekte ... 1239  18.5 ... Das Innere und Äußere einer Form ... 1242  18.6 ... Bilder ... 1249  18.7 ... Weitere Eigenschaften von Graphics * ... 1263  18.8 ... Drucken * ... 1271  18.9 ... Benutzerinteraktionen automatisieren, Robot und Screenshots * ... 1274  18.10 ... Zum Weiterlesen ... 1280

19.  JavaFX ... 1281  19.1 ... Das erste Programm mit JavaFX ... 1281  19.2 ... Zentrale Typen in JavaFX ... 1284  19.3 ... JavaFX-Komponenten und Layout-Container-Klassen ... 1286  19.4 ... Webbrowser ... 1290  19.5 ... Geometrische Objekte ... 1291  19.6 ... Füllart von Formen ... 1304  19.7 ... Grafiken ... 1308  19.8 ... Deklarative Oberflächen mit FXML ... 1313  19.9 ... Diagramme (Charts) ... 1315  19.10 ... Animationen ... 1319  19.11 ... Medien abspielen ... 1322  19.12 ... Java 3D ... 1323  19.13 ... Das Geometry-Paket * ... 1323  19.14 ... JavaFX-Scene in Swing-Applikationen einbetten ... 1324  19.15 ... Zum Weiterlesen ... 1326

20.  Sicherheitskonzepte ... 1327  20.1 ... Zentrale Elemente der Java-Sicherheit ... 1327  20.2 ... Sicherheitsmanager (Security-Manager) ... 1330  20.3 ... Signierung ... 1338  20.4 ... Kryptografische Hashfunktion ... 1341  20.5 ... Verschlüsseln von Daten(-strömen) * ... 1346  20.6 ... Zum Weiterlesen ... 1349

21.  Dynamische Übersetzung, Skriptsprachen, JShell ... 1351  21.1 ... Codegenerierung ... 1352  21.2 ... Programme mit der Java Compiler API übersetzen ... 1356  21.3 ... Ausführen von Skripten ... 1366  21.4 ... JShell, die interaktive REPL-Shell ... 1375  21.5 ... Zum Weiterlesen ... 1381

22.  Java Native Interface (JNI) ... 1383  22.1 ... Java Native Interface und Invocation-API ... 1383  22.2 ... Eine C-Funktion in ein Java-Programm einbinden ... 1384  22.3 ... Dynamische Bibliotheken erzeugen ... 1386  22.4 ... Erweiterte JNI-Eigenschaften ... 1392  22.5 ... Einfache Anbindung von existierenden Bibliotheken ... 1397  22.6 ... Invocation-API ... 1399  22.7 ... Zum Weiterlesen ... 1400

23.  Dienstprogramme für die Java-Umgebung ... 1401  23.1 ... Programme des JDK ... 1401  23.2 ... Monitoringprogramme vom JDK ... 1401  23.3 ... Ant ... 1411  23.4 ... Disassembler, Decompiler und Obfuscator ... 1417  23.5 ... Weitere Dienstprogramme ... 1426  23.6 ... Zum Weiterlesen ... 1426  Index ... 1427


Vorwort


»Alles, was einen Anfang hat, hat auch ein Ende, und meistens hat das, was ein Ende hat, auch eine Fortsetzung.«
– Sprichwort

Willkommen im zweiten Teil der Insel. Während der erste Band in die Grundlagen von Java einführte und sich dabei insbesondere auf die objektorientierten Konzepte und die Syntax der Sprache Java konzentrierte, kümmert sich der zweite Band um die Bibliotheken aus der Java SE.

Organisation der Kapitel


Den Einstieg ins Buch bildet Kapitel 1, »Neues in Java 9«, mit einer kompakten Darstellung der Neuerungen. Die Änderungen in den Bibliotheken fließen dabei in die jeweiligen Kapitel ein; so konzentriert sich das kurze Kapitel eher auf die neuen Spracheigenschaften. Die Inhalte sind Auszüge aus dem ersten Insel-Buch, »Java ist auch eine Insel«.

Die Java-Bibliothek besteht aus rund 6.000 Klassen, Schnittstellen, Aufzählungen, Ausnahmen und Annotationen. Kapitel 2, »Die Klassenbibliothek«, gibt eine Übersicht über die wichtigsten Pakete und greift einige Klassen aus der Bibliothek heraus, etwa zum Laden von Klassen. Hier sind auch Klassen zur Konfiguration von Anwendungen oder Möglichkeiten zum Ausführen externer Programme zu finden.

Neben den grundlegenden Basisklassen für Zeichenkettenverarbeitung gibt es spezielle Klassen, etwa für Mustererkennung, die Kapitel 3, »Fortgeschrittene String-Verarbeitung«, vorstellt.

Kapitel 4 befasst sich mit den »Datenstrukturen und Algorithmen«, die die Standardbibliothek anbietet. Die wichtigsten Klassen wie Listen, Mengen, Stapel, Bitmengen und Assoziativspeicher werden vorgestellt, und dann werden unterschiedliche Aufgaben mit den jeweils passenden Datenstrukturen gelöst. Als Algorithmen kommen beispielsweise vorgefertigte Sortierverfahren zum Einsatz. Das Kapitel diskutiert ebenfalls für Nebenläufigkeit optimierte Datenstrukturen.

Kapitel 5 beschäftigt sich mit »Threads und nebenläufiger Programmierung«. Das Kapitel umfasst auch die Koordination mehrerer kooperierender oder konkurrierender Threads.

Zeitzonen und unterschiedliche Ausgabeformate für Datumswerte sind Thema in Kapitel 6, »Raum und Zeit«. Darunter fallen auch Datumsberechnungen auf der Grundlage des gregorianischen Kalenders. Interessant sind Java-Möglichkeiten zur Internationalisierung, die sich durchweg durch alle APIs zieht, die in irgendeiner Weise Nachrichten zum Benutzer geben.

Kapitel 7, »Dateien, Verzeichnisse und Dateizugriffe«, setzt den Fokus auf Dateiverarbeitung. Zuerst zeigen wir, wie sich Attribute von Dateien und Verzeichnissen auslesen lassen, und dann, wie sich wahlfreier Zugriff auf eine Datei realisieren lässt. Das in Java 7 eingeführte NIO.2-Paket nimmt dabei einen großen Raum ein, da es sehr leistungsfähig ist.

Nahtlos folgt in Kapitel 8, »Datenströme«, die Verarbeitung von Daten aus beliebigen Quellen und Senken. Während sich Kapitel 6 nur auf Dateien beschränkt, geht es in diesem Kapitel um allgemeinere Ein-/Ausgabe-Konzepte, die auch bei Datenströmen aus Netzwerken, Datenbanken oder Schnittstellen vorkommen. Die Datenströme können dabei durch Filter geschickt werden. Von Letzteren stellen wir einige vor, die zum Beispiel die Zeilennummer zählen, einen Datenstrom puffern oder ihn komprimieren. Eine elegante Möglichkeit ist das Serialisieren von Objekten. Dabei wird der Zustand eines Objekts ausgelesen und so in einen Datenstrom geschrieben, dass sich das Objekt später wiederherstellen lässt. Eine eigene Speicherroutine kann somit entfallen.

Heutzutage ist die Speicherung in XML populär, und auch Office-Dokumente werden in diesem Stil gespeichert. Doch keiner würde auf die Idee kommen, die Dokumente im XML-Format auszulesen und dort die Absätze und Zeichen herauszuziehen. Das Gleiche gilt für Grafikdateien: Es ist zwar eine Byte-Datei, doch die wird nicht Byte für Byte von uns eingelesen, sondern es gibt immer eine API, die sich darum kümmert, Zeichen oder Bytes in ein für uns komfortables Format zu bringen. Ein paar populäre Dateiformate stellt Kapitel 9, »Dateiformate«, vor. Zu den beschriebenen Formaten zählen nicht nur Dokumentenformate, wie für Microsoft Office, sondern auch Formate für die Kompression.

Tiefer in den XML-Dschungel geht Kapitel 10, »Die eXtensible Markup Language (XML) und JSON«. Java als plattformunabhängige Programmiersprache und XML als dokumentenunabhängige Beschreibungssprache sind ein ideales Paar, und die Kombination dieser beiden Technologien ist der Renner der letzten Jahre. Das Kapitel beginnt auf der höchsten Abstraktionsebene, beschreibt, wie XML-Daten auf Objekte übertragen werden, und geht dann weiter zur elementaren Verarbeitung der XML-Dokumente, wie sie zum Beispiel als Objektbaum aufgebaut und modifiziert werden.

Kapitel 11, »Netzwerkprogrammierung«, stellt vor, welche Informationen eine URL hat und wie mit dieser URL Daten von Webservern bezogen werden können. Bei Webservern werden wir CGI-Programme ansprechen, um an gewünschte Inhalte zu kommen. Mithilfe von Sockets wollen wir eine eigene Client-Server-Kommunikation aufbauen. Außer auf die gesicherte Verbindung TCP gehen wir auch auf ungesicherte UDP-Verbindungen ein.

Kapitel 12, »RESTful und SOAP-Web-Services«, stellt mit REST einen neuen Trend in der Kommunikation zwischen Browser und Webserver vor und mit SOAP einen Klassiker für den entfernten Methodenaufruf zwischen Systemen. SOAP ist Teil der Java SE, und für REST wird Jersey vorgestellt, die Referenzimplementierung der JAX-RS-API.

»Verteilte Programmierung mit RMI« in Kapitel 13 zeigt auf, wie ein Java-Programm einfach Objekte und Methoden nutzen kann, die auf einem anderen Rechner gespeichert bzw. ausgeführt werden. Dabei wird der Aufruf einer Methode über das Netzwerk übertragen, und für das aufrufende Programm sieht es so aus, als ob es sich um einen normalen Methodenaufruf für ein lokales Objekt handelt.

Mit Kapitel 14 widmen wir uns einer Java-typischen Technik: »Typen, Reflection und Annotationen«. Java-Klassen liegen selbst wieder als Meta-Objekte, als Exemplare der speziellen Klasse Class, vor. Diese Class-Objekte geben Auskunft über die verfügbaren und definierten Variablen, Methoden und Konstruktoren. So lassen sich beispielsweise dynamisch bestimmte Methoden aufrufen oder die Werte von dynamisch ausgewählten Objektvariablen abfragen. Annotationen ermöglichen es Entwicklern, Metadaten an Programmteilen festzumachen. Wie neue Annotationstypen erstellt und gesetzte Annotationen abgefragt werden, zeigt das Kapitel ebenfalls.

Wie Java-Programme zu Testzwecken überwacht werden können, zeigt Kapitel 15, »Logging und Monitoring«. Mit der JMX-API lassen sich MBeans an einem MBean-Server anmelden, und das Dienstprogramm jconsole ermöglicht den Zugriff und die Steuerung der Komponenten.

»Datenbankmanagement mit JDBC« ist das Thema von Kapitel 16. Als freie, quelloffene Beispieldatenbank wird HSQLDB vorgestellt, da sie sehr leicht zu installieren und zu betreiben ist und praktischerweise Beispieldaten mitbringt. Die Java-Beispiele bauen eine Verbindung zu HSQLDB auf, setzen SQL-Anweisungen ab, holen die Ergebnisse herein und visualisieren sie.

Kapitel 17, »Grafische Oberflächen mit Swing«, stellt die Swing-Komponenten zur Interaktion vor, wie zum Beispiel Schaltflächen. Es geht auf die Behandlung von Ereignissen ein, die aus Benutzeraktionen resultieren, und beschreibt Container, die andere Komponenten aufnehmen und layouten.

Das anschließende Kapitel 18 deckt die zweite Aufgabe der grafischen Oberflächen ab, indem es auf die »Grafikprogrammierung« eingeht. Das AWT (Abstract Window Toolkit) ist die Java-Möglichkeit, grafische Oberflächen zu gestalten. Dabei gliedert es sich in zwei große Teile: zum einen in die direkte Ausgabe von Grafikprimitiven wie Linien und zum anderen in Komponenten für grafische Oberflächen. Das Kapitel behandelt die Themen Fenster, Zeichenketten und Zeichensätze, Farben und Bilder.

Ein alternatives GUI-Framework ist »JavaFX«, das Kapitel 19 beleuchtet. JavaFX ist Teil des JDK, nicht der allgemeinen Java SE-Spezifikation. Das Kapitel fasst auf der einen Seite die fantastischen neuen Eigenschaften wie 2D/3D, die Transformationen und Animationen zusammen und auf der anderen Seite die neue Komponentenbibliothek von JavaFX.

Kapitel 20 zeigt kurz »Sicherheitskonzepte«, etwa das Sandkastenprinzip, und Sicherheitsmanager auf, zeigt aber auch, wie von Daten eine Prüfsumme gebildet werden kann und wie Daten mit DES oder RSA verschlüsselt werden.

Am Anfang war die...


Ullenboom, Christian
Christian Ullenboom, Dipl.-Informatiker, ist zertifizierter Java-Programmierer und seit 1997 Trainer und Berater für Java-Technologien und objektorientierte Analyse und Design. Seit Jahren teilt er sein Wissen mit unzähligen Besuchern seiner Website, wo er Fragen beantwortet, Inhalte bereitstellt und diskutiert. Seine Sympathie gilt Java Performance Tuning und den sinnlichen Freuden des Lebens.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.