Java als Integrationsplattform/Die wichtigsten Java-Titel im Überblick

Komplexität von Java führt zur Differenzierung bei Fachbüchern

24.09.1999
Von Fotis Jannidis* Die Flut an Java-Literatur war nach dem anfänglichen Boom für einige Zeit ins Stocken geraten, da die schnelle Entwicklung der Plattform die Bücher zu schnell veralten ließ. Inzwischen hat die Produktion wieder angezogen. Neben den unvermeidlichen Gesamtdarstellungen, die angesichts des Umfangs von Java 2 immer breiter werden, finden sich zwischenzeitlich zahlreiche Werke, die sich mit Einzelaspekten, unter anderem Enterprise Java, Servlets oder Swing, befassen.

Auf mehr als 1500 ist mittlerweile die Zahl der Kernklassen in Java 2 angestiegen, dazu kommen ständig neue in den Standarderweiterungen. Selbst der professionelle Java-Programmierer, der die Pakete noch im Überblick hat, wird bei den Klassen und ihren Methoden etwas Gedächtnisstütze brauchen.

Besonders überzeugend hat Patrick Chan das Problem gelöst, der bereits die umfangreichen und sehr brauchbaren Bände der Java Class Library zu verantworten hat. Auf rund 900 Seiten werden Klassen- und Methodennamen aller Java-Kernklassen aufgelistet und mittels einer geschickten typografischen Notation um zahlreiche weitere Angaben ergänzt. Vor der streng nach dem Alphabet geordneten Liste steht ein Überblick über die Pakete mit knappen Hinweisen auf die Funktionen der jeweiligen Klassen und kurzen Beispielen zu den wichtigsten Verwendungen des Pakets. Ein ausführliches Register und einige Tabellen runden die fast unentbehrliche Referenz ab. (The Java Developers Almanac 1999. Addison-Wesley 1999. 37,20 Mark)

Einen Schritt weiter geht David Flanagan mit seinem Nachfolger zu "Java in a nutshell": Er wechselt das Medium und bietet seine Übersicht über die Core-Klassen, Jini und alle Standarderweiterungen einschließlich zahlreicher Beta-Versionen nur noch als HTML-Text auf CD-ROM. Ein Vorteil ist die enge Hypertextverlinkung aller Seiten. Da die zusätzlichen Angaben allerdings noch spärlicher sind als im Developer Almanac, kann man in vielen Fällen ebenso gut, wenn nicht besser, auf die Online-Dokumentation von Sun zurückgreifen. (David Flanagan: Java Power Reference. O''Reilly 1999. 37,20 Mark)

Deutlich weniger geeignet zum schnellen Nachschlagen ist die einschlägige Referenz von SAMS. Einer schnellen Orientierung steht das schlechte Layout entgegen, das unentschlossen zwischen Lupen- und Schlagzeilenschrift schwankt, aber konsequent auf jede Überblicksorientierung verzichtet. (Krishna Sankar et.al.: Java 1.2 Class Libraries Unlea- shed. SAMS 1998. 74,60 Mark)

Der Umfang der Java-Plattform läßt die Werke, die sich eine mehr oder weniger umfassende Besprechung zum Ziel gesetzt haben, ganz erheblich anschwellen. Zwei Probleme zeigen sich bei einigen der im folgenden genannten Werke: Ein einzelner Autor kann gar nicht auf allen Feldern von Java 2 wirklich kompetent sein, Autorenteams dagegen haben oft Probleme bei der Abstimmung der Einzeltexte. Der Zeitdruck, unter dem die meisten Computerbücher erstellt werden, führt außerdem zu langen Codelistings und kommentarlosem Abdrucken der vollständigen APIs.

Middendorf und Singer schließen mit der zweiten Auflage ihres Buchs an das hohe Niveau des Vorgängers an. Knapp die Hälfte der 1200 Seiten stellen ein sehr gut recherchiertes Handbuch dar, das sich vor allem auf die Konzepte konzentriert, die der Sprache und ihren Paketen zugrunde liegen. Der Rest besteht aus einer kommentierten Referenz zu einem Teil des Kerns von Java 2. Die Lücken sind allerdings so groß, daß der Titel etwas unangemessen klingt: Swing wird ebensowenig behandelt wie JDBC oder RMI. Das Fehlende soll in einem zweiten Band behandelt werden, der aber erst nächstes Jahr zu erwarten ist. (Stefan Middendorf, Reiner Singer: Java Programmierhandbuch und Referenz für die Java 2 Plattform. Dpunkt 1999. 98 Mark)

John Zukowski, Autor der zurecht gerühmten AWT-Referenz, behandelt alle Core-Klassen einschließlich JDBC, Javabeans, RMI und Corba sowie zusätzlich Servlets. Nicht wirklich befriedigen kann allerdings die Art der Darstellung: Zukowski mischt kommentarlos Listen der Methoden einer Klasse mit längeren, nur kärglich kommentierten Programmbeispielen. Zusammengehalten wird dies von eher knapp gehaltenen Erläuterungen. Da Zukowski ohne Zweifel ein Java-Experte ist, findet man hier zahlreiche lehrreiche Codezeilen. Insgesamt aber hat diese Mischung aus Referenz und Handbuch deutlich darunter gelitten, daß es das erste auf dem Java-2-Buchmarkt sein wollte - was ihm übrigens, wie der Titel zeigt, auch gelungen ist. (John Zukowski: Mastering Java 1.2, Sybex 1998. 93,25 Mark)

Die "SAMS-Unleashed"-Reihe ist bekannt für den Anspruch, das jeweilige Thema wirklich umfassend zu behandeln. So enthalten die 1400 Seiten des Java-2-Buchs sogar Kapitel zu Extensionen wie Java Mail, zum Infobus, zu Javacard, zum inzwischen eingestellten Java-OS und vielem mehr, wenn auch oft nur wenige Zeilen lang. Einige organisatorische Schwächen des Buchs wären zu vermeiden gewesen. So hat man das Servlet-Kapitel ziemlich irreführend unter der Überschrift "Sun''s Java Web Server" versteckt, und die fast 200 Seiten lange Klassenauflistung am Ende entlasten zwar merklich den Text, können aber eine Referenz nicht ersetzen, da sie keine Zeile zu den Methoden verlieren. (Jamie Jaworski: Java 2 Platform Unleashed. SAMS April 1999. 93,25 Mark)

Einen ganz anderen und insgesamt überzeugenderen Weg ist John Hunt mit "Java for Practi- tioners" gegangen, das ebenfalls alle Kernklassen und zusätzlich die Servlets behandelt. Er geht davon aus, daß Praktiker nicht gerne lesen, und behandelt selbst so komplexe Themen wie Java IO oder RMI sehr knapp, aber verständlich auf je zehn Seiten. So hat er sogar noch Platz für Themen, die man sonst meist vergeblich sucht: Performance-Optimierung, typische Java-Fehler oder objektorientiertes Design. Hunt ist außerdem auch einer der wenigen, die die Existenz anderer Java- Bücher zugeben, und verweist - sozusagen als Ausgleich für die eigene Kürze - am Ende eines Abschnitts auf weiterführende Literatur. (John Hunt: Java for Practitioners. Springer 1999. 99 Mark)

Das Java 2 Kompendium verspricht eine "komplette Darstellung des JDK 2", kann dieses Versprechen aber bei weitem nicht einlösen, da es zum einen die Plattform noch nicht einmal in Ansätzen abdeckt und zum anderen über weite Strecken ein Buch über das JDK 1.1 darstellt. Exemplarisch dafür ist das Kapitel zu Threads, das nicht nur kaum eine Erklärung zur Arbeitsweise von Threads enthält, sondern vor allem die einschlägigen Mechanismen des JDK 1.1 vorstellt. In den Text eingefügt findet sich eine Notiz, daß man im JDK 1.2 diese Mechanismen nicht mehr verwenden sollte - ohne Hinweis auf die neuen Verfahren, die somit notwendig werden. Das Buch scheint insgesamt unausgewogen, da neben detaillierten Einzelinformationen mit erstaunlicher Tiefe viel zu knapp geratene Kapitel zu wesentlichen Aspekten von Java stehen. (Ralph Steyer: Java 2 Kompendium. Markt und Technik 1999. 99,95 Mark)

GUI-Programmierung mit Hilfe der Swing-Klassen

Eine wesentliche Neuerung von Java 2 sind die Java Foundation Classes, in deren Zentrum die umfangreichen Swing-Klassen stehen. Sie dienen der Programmierung ansprechender und funk- tionreicher GUIs. Derzeit trägt Swing die Versionsnummer 1.1.1, die meisten nachfolgenden Bücher beziehen sich auf eine Betaversion von Swing 1.1. Dazwischen liegen einige wichtige Änderungen, die man sich selbst aus der Dokumentation erarbeiten muß.

Eine gelungene und gründliche Einführung bietet Kim Topley. Seine Erklärung der Grundlagen, also der Ereignisbehandlung und der Model-View-Controller-Architektur, ist etwas zu karg ausgefallen. Dafür aber ist die Darstellung der eigentlichen Swing-Komponenten, insbesondere von Tabellen, Bäumen und Text mit Formatierungen, der Schwierigkeit des Gegenstands angemessen ausführlich geraten. (Kim Topley: Core Java Foundation Classes. Prentice Hall 1998. 93,25 Mark)

Eine etwas weniger gelungene Mischung zwischen Referenz und erläuterndem Handbuch wurde von O''Reilly vorgelegt. Das Buch ist ebenso ausführlich wie jenes von Topley, tut sich aber deutlich schwerer damit, die prinzipielle Arbeitsweise der einzelnen Klassen zu erläutern, und überschüttet den Leser statt dessen mit kommentierten API-Listen. Eben deshalb ergänzen sich die beiden Bücher recht gut. (Robert Eckstein, Marc Loy, Dave Wood: Java Swing. O''Reilly 1998. 90,00 Mark)

Bereits jetzt veraltet ist André Meyer: JFC 1.1. mit Java Swing 1.0. Addison-Wesley 1998. Auch Matthew T. Nelson kann mit der deutlich gehaltvolleren Konkurrenz nicht mithalten. (Matthew T. Nelson: Java Foundation Classes. McGraw Hill 1998. 93,20 Mark)

Java-Techniken für das Enterprise-Computing

Unter Enterprise-Computing faßt Sun eine Reihe von verschiedenen Java-Technologien zusammen: JDBC zur Datenanbindung, RMI und Corba zur Kommunikation in verteilten Umgebungen, Enterprise Javabeans als Komponententechnik für Server, Servlets als Ersatz für CGI Programme, Java Server Pages als Gegenstück zu Microsoft ASP sowie Java Naming and Directory Interface (JNDI), Java Messaging Service und APIs zur Organisation von Transaktionen.

Eine kompetente Einführung in die meisten der genannten Bereiche bietet ein neuer Band des Verlags Wiley, allerdings mit der Ausnahme von Corba, das nach Ansicht der Autoren so komplex ist, daß es den Band sprengen würde. Auch die Einführung in JDBC kann keine eigenständige Darstellung zum Thema ersetzen. Vorgestellt werden zuerst immer die theoretischen Konzepte, dann wird die Implementierung an einem konkreten Beispiel betrachtet. Die Konzeption eines Online Stores am Ende des Bands soll die Integration der verschiedenen Techniken vor Augen führen. (Stephen Asbury, Scott R. Weiner: Developing Java Enterprise Applications. Wiley 1999. 59,99 Dollar)

Entgegen den Erwartungen, die der Titel "Java Server und Servlets" weckt, haben die Autoren das Ziel zu demonstrieren, wie man ein Framework für Web-Anwendungen entwickelt - einschließlich eines Web-Servers, der Servlets unterstützt. Entsprechend breit ist die Palette angesprochener Technologien, die allerdings zumeist nur soweit beschrieben werden, wie es die jeweilige Verwendung verlangt. Insgesamt ein praxisorientiertes Werk mit einem unnötig irreführenden Titel. (Peter Roßbach, Hendrik Schreiber: Java Server und Servlets. Addison-Wesley 1999. 79,90 Mark)

Sehr viel theoretischer ist der Titel von O''Reilly geraten, der dafür aber alle Aspekte des Thema Servlets behandelt. Nicht nur Anbindung an eine Datenbank, Session Tracking oder die Kommunikation eines Servlets mit anderen Servlets oder Applets werden vorgestellt, sondern der Autor führt auch die unter Perl so liebgewonnenen regulären Ausdrücke unter Java vor. Ungewöhnlich für ein Buch aus dem englischen Sprachraum ist übrigens ein eigenes Kapitel über die Java-eigenen Möglichkeiten zur Internationalisierung, also der Verwendung landesspezifischer Zeichen. (Jason Hunter, William Crawford: Java Servlet Progamming. O''Reilly 1998. 66,00 Mark)

Mit Java für Windows entwickeln

Microsofts Java mit den Windows-spezifischen Erweiterungen der Sprache beschäftigt die Gerichte und verunsichert die Programmierer. Wer jetzt schon weiß, daß er niemals für eine andere Plattform entwickeln und die Windows Foundation Classes von Microsoft zur GUI-Erstellung nutzen möchte, kommt gar nicht umhin, "Visual J++" einzusetzen. Ein Einführungspaket bietet die "Deluxe Learning Edition", die nicht nur zwei Textbände, sondern auch die Standard Edition von Visual J++ 6.0 enthält. Bei dem einen Band handelt es sich um ein allgemeines Handbuch für J++ 6.0, der zweite richtet sich an Einsteiger und ist auch separat erhältlich: Kevin Ingalls und Daniel Jingujis "Learn Visual J++ 6.0 now". Beide Bücher sind nicht eigens auf die Standard Edition ausgerichtet, und es fehlen Hinweise, welche der beschriebenen Features in welcher J++-Version (Standard, Professional, Enterprise) vorhanden sind. (Microsoft Visual J++ 6.0 Deluxe Learning Edition. 261,10 Mark)

Wer ernsthaft mit den WFC-Klassen arbeiten möchte, wird außerdem um das zweibändige Nachschlagewerk nicht herumkommen. (Visual J++ 6.0 WFC Library Reference. 59,99 Dollar)

Java für sonstige Programmieraufgaben

1994 erschien das Buch "Design Patterns", das die Verwendung von Patterns, also wiederverwendbaren Lösungen zu typischen Problemen, sehr bald populär machte. Mark Grands Bücher verstehen sich als Weiterentwicklung, nicht bloß als Übertragung in die Java-Welt, wenn auch mehr als die Hälfte der erläuterten Muster des ersten Bands auf den Klassiker der "Gang of Four" zurückgehen. Der erste Band enthält neben einer kurzen Einführung in die Unified Modeling Language (UML) 41 Design Pattern. Jedes Muster wird nach einem gleichbleibenden Verfahren dargestellt: Nach einer kurzen Zusammenfassung wird das Problem beschrieben, das gelöst werden muß, und anschließend werden die Folgen der Musterverwendung erläutert, die zuletzt durch Code-Beispiele demonstriert werden. Der zweite Band ist weniger überzeugend. Er enthält eine Reihe von weiteren Mustern, allerdings wird hier der Begriff so weit gefaßt, daß man auch das Pattern "System Testing" findet, mit dem sicherlich wertvollen Hinweis, Programme nur in einer Umgebung zu testen, die der Zielumgebung ähnlich ist. (Mark Grand: Patterns in Java. Vol. 1 + Vol. 2. Wiley 1998, 1999)

Im Verlag O''Reilly, der eine umfangreiche Reihe von Büchern zu einzelnen Aspekten von Java herausgebracht hat, ist ein eigenständiges Werk mit mehr als 500 Seiten zum Thema I/O erschienen, das von den simplen Anfängen bis zum Netzwerk, der Kryptographie und der Serialisierung, ja selbst der API für die COM-Schnittstelle, nichts ausläßt. Mag dies auf den ersten Blick übertrieben erscheinen, so stellt sich schnell heraus, daß das Buch eine Fundgrube an Informationen ist, das viele praktische Probleme lösen hilft. (Eliotte Rusty Harold: Java I/O. O''Reilly 1999. 66 Mark)

Java ist eine besonders elegante und konsistente Sprache, die sich daher auch gerade im Ausbildungsbereich rasch durchgesetzt hat. Entsprechend zahlreich sind mittlerweile die Einführungen in Teilbereiche der Informatik, die Java als Beispielssprache verwenden. Angesichts der - inzwischen leiser werdenden - Klagen über die Performance-Probleme von Java ist es dennoch überraschend, wenn ein Lehrbuch zur Bildverarbeitung Java verwendet. Aber der Autor, der im Laufe seiner Ausführungen eine vollstän- dige Bildverarbeitung entwickelt, beschwert sich eigentlich nur über die mangelnde Geschwindigkeit von Swing. (Douglas A. Lyon: Image Processing in Java. Prentice Hall 1999. 93,25 Mark)

Eine weitere Einführung in das Feld der Datenstrukturen ist beim Springer Verlag erschienen. Sie erklärt die Java-eigenen Datenstrukturen, allerdings noch ohne die Collection-Klassen, und behandelt neben den üblichen Themen auch Network Flow und Datenpersistenz. (Liwu Li: Java. Data Structures and Programming. Springer 1998. 89 Mark)

Der Hype um Java weicht inzwischen einer nüchternen Einschätzung der Möglichkeiten sowie der Probleme von Sprache und Plattform. Ein nützlicher Beitrag dazu ist aus den Beiträgen eines Workshops zu verteilten Objekten entstanden. 17 Projektberichte aus Industrie und Hochschule, Stand Herbst 1998, berichten über die Vorteile, Schwierigkeiten und Behelfslösungen beim Einsatz von Java, insbesondere in dreistufigen Client-Server-Anwendungen. Vier Problembereiche können die Herausgaber in ihrem vorsichtig optimistischen Schlußwort isolieren und auch auf Lösungswege verweisen: AWT, Performance, instabile Entwicklungsumgebungen und restriktives Sicherheitsmodell. (Maffeis, Toenniessen, Zeidler (Hg.): Erfahrungen mit Java. dpunkt 1999. 78 Mark.

Einführungen in Java 2

Guido Krüger: Go to Java 2. Addison-Wesley 1999. Sehr empfehlenswerte Einführung in Java, tatsächlich auf dem Stand von Java 2, mit ausführlicher Behandlung des AWT, aber leider ohne Swing.

Mary Campione, Kathy Walrath, Alison Huml: The Java Tutorial Continued. Addison-Wesley 1999. Gedruckte Version von Suns Online-Tutorial. Ergänzt einen bereits vorhandenen Band mit Kapiteln zu sehr unterschiedlichen Themen, wie Collection-Klassen oder JDBC. Ein weiterer Ergänzungsband zu Swing soll folgen.

Martin Schader, Lars Schmidt-Thieme (Hg.): Java. Eine Einführung. 2. Aufl. Springer 1999. Akademisch trocken und kompetent aufs Wesentliche reduziert, wozu die Autoren auch RMI zählen.

Fritz Jobst: Programmieren in Java. 2. Aufl. Hanser 1999. Sehr ehrgeizig, da auch Swing, RMI, Corba, JDBC vor allem durch längere Code-Beispiele erklärt werden sollen.

Douglas Bell, Mike Parr: Java beispielhaft. 2. Aufl. Markt und Technik 1999. Gemächliche Einführung in die Grundlagen von Java - auch zum Selbststudium geeignet.

Aaron Walsh, John Fronckowiak: Die Java Bibel. mitp 1998. Umfangreiche und gelungene Einführung in das Arbeiten mit dem JDK 1.1 (!), ergänzt um drei Kapitel zu den JFC.

Laura Lemay, Rogers Cadenhead: Java 2 in 21 Tagen. Markt und Technik 1999. Eines der erfolgreichsten Bücher zum Einstieg in Java, mit einigen Schönheitsfehlern.

Ernst-Erich Doberkat, Stefan Dißmann: Einführung in die objektorientierte Programmierung mit Java. Oldenbourg 1999.Entgegen der Titelankündigung keine Einführung in das objektorientierte Design, sondern in die Arbeit mit Java in ausgewählten Problemfeldern (Rekursion, Dynamische Datenstrukturen etc.).

Stephen R. Schach: Classical and object-oriented Software Engineering with UML and Java. 4. Aufl. McGraw-Hill 1999. Akademisches Lehrbuch mit zahlreichen Literaturangaben, das Java- und UML-Kenntnisse voraussetzt und in traditionelle und objektorientierte Modelle des Programmierens einführt.

Angeklickt

Die Funktionsfülle von Java 2 beschleunigte den Trend zu Fachbüchern über spezifische Java-Themen. Unabkömmlich sind aber nach wie vor die schwergewichtigen Überblickswerke, deren Massenträgheit in einigen Fällen die rechtzeitige Aktualisierung auf Java 2 verzögerte. Wißbegierige können veraltete Titel aber nicht nur bei Einführungen erwischen, auch solche über umfangreiche Java-Subsysteme wie die GUI-Klassen weisen teilweise Rückstand auf oder sind mit heißer Nadel gestrickt. Der Beitrag gibt Auskunft über die besten Bücher für die jeweiligen Zwecke.

*Fotis Jannidis ist freier Autor in München.