|
|||||||||||||||||||||||||||
|
|
HOME | SEMINARS | TALKS | ARTICLES | BOOKS | LINKS | IOSTREAMS | GENERICS | ABOUT | NEWSLETTER | CONTACT | SITEMAP | ||||||||||||||||||||||||||
|
Book Review - Enterprise Java Beans
|
|||||||||||||||||||||||||||
|
Enterprise Java Beans
JavaSPEKTRUM, September 2002
Abstract
Wer sich in Enterprise Java Beans (EJB) einarbeiten will
und zu diesem Zwecke ein Buch sucht, dem stehen eine ganze Reihe von Titeln
zu diesem Thema zur Verfügung. Im folgenden werden wir zwei dieser
Bücher besprechen mit dem Ziel, dem wissbegierigen Leser eine Entscheidungshilfe
bei der Literaturauswahl zu geben. Wir haben zwei der populärsten
Bücher zu diesem Thema ausgewählt: "Mastering Enterprise Java
Beans" von Ed Roman, et.al. und "Enterprise Java Beans" von Richard Monson-Haefel.
Enterprise Java Beans (EJB) Enterprise Java Beans (EJB) ist ein Standard-Komponentenmodell für Businessanwendungen, das im Java Community Process entwickelt und im Jahr 1998 veröffentlicht wurde. Seit der Veröffentlichung der ersten Version der EJB-Spezifikation in 1998 hat es heftige Änderungen und Erweiterungen gegeben. Seit Sommer letzten Jahres liegt die Version 2.0 der EJB-Spezifikation vor und EJB ist für die Java-Community der de-facto-Standard für die Entwicklung von komponenten-basierten Anwendungen auf der Serverseite geworden. Sun Microsystems hat eine Referenzimplementierung von EJB als Bestandteil der Java 2 Enterprise Edition (J2EE) zur Verfügung gestellt und daneben gibt es zahlreiche kommerzielle und Open-Source-Produkte in diesem Bereich, die in der Industrie bereits seit längerem im Einsatz sind.
Die oben genannten Bücher sind in gewissem Sinne
bereits Klassiker. In ihren ersten Ausgaben haben sie EJB 1.0 bzw. 1.1
erläutert. Die jüngsten Ausgaben, die hier besprochen werden,
befassen sich mit der aktuellen Version 2.0 von EJB. Um es gleich vorweg
zu nehmen: beide Bücher sind gut und ihr Geld wert, aber sie sind
doch recht verschieden, obwohl sie dasselbe Thema behandeln.
"Mastering Enterprise Java Beans" von Ed Roman, et.al. "Mastering Enterprise Java Beans" nähert sich dem Thema EJB auf breiter Front. Das Buch ist u.a. auch für den EBJ-Anfänger geschrieben, der sich in EJB einarbeiten will. Es erläutert aber zusätzlich auch anspruchsvollere Aspekte der Anwendung von EJB in der Praxis und beschreibt darüber hinaus allerlei anderes Wissenswerte im EJB-Umfeld. Man findet also nicht nur das zu erwartende Tutorial, das den Leser Schritt für Schritt in alle relevanten Aspekte der Programmierung mit EJB einführt (Session Beans, Entity Beans, Message-Driven Beans, Bean-Managed vs. Container-Managed Persistence, Transactions und Security), sondern daneben auch Tipps zur erfolgreichen Durchführung von EJB-Projekten. Beispielsweise widmet sich ein ganzes Kapitel der Auswahl eines EJB-Servers: welche Unterscheidungskriterien gibt es und worauf sollte bei der Auswahl achten. Die Produktauswahl hat natürlich mit der reinen EJB-Programmierung nicht viel zu tun, ist aber für die konkrete Durchführung eines EJB-Projekts durchaus von Bedeutung. So gesehen ist das Kapitel in einem Buch über EJB durchaus sinnvoll. Sehr erfreulich sind die Anhänge des Buchs, die gerade für Neulinge im EJB-Bereich sehr nützlich sind. Man findet zum Beispiel einen Anhang, der die Grundzüge von Naming und Directory Services im allgemeinen und das JNDI-Interface im speziellen beschreibt. Wer mit JNDI bisher nichts zu tun gehabt hat und nun im Zusammenhang mit EJB erstmalig damit konfrontiert wird, wird dankbar auf diesen Anhang zurückgreifen. JNDI wird in EJB intensiv benutzt und kommt selbst in trivialen Code-Beispielen vor. Man braucht wenigstens Grundkenntnisse von JNDI, um die Zusammenhänge zu verstehen. Der Anhang über JNDI in dem Buch von Ed Roman liefert die fürs Verständnis notwendigen Einblicke in JNDI, während das Buch von Monson-Haefel an dieser Stelle lediglich auf andere Bücher verweist. Ein anderes positives Merkmal von "Mastering Enterprise Java Beans" sind die Praxis-Tipps. Die Autoren bemühen sich, ihre Erfahrungen aus der praktischen Arbeit mit EJB weiterzugeben. So findet man ein gesondertes Kapitel zu "EJB Best Practices and Performance Optimizations" und auch ansonsten sind hier und da Tipps und Tricks eingestreut. Das ist einerseits sehr nützlich und liefert sinnvolle Denkanstöße, macht aber andererseits das Buch relativ unruhig, weil ständig zwischen ganz verschiedenen Aspekten hin- und hergesprungen wird. "Enterprise Java Beans" von Richard Monson-Haefel Manche EJB-Programmierer betrachten das Buch von Monson-Haefel als die "EJB-Bibel" schlechthin, vermutlich weil es der erste und für eine Weile der einzige EJB-Titel war. "Enterprise Java Beans" ist aber weder besser noch schlechter als "Mastering Enterprise Java Beans"; es ist lediglich anders.
Man findet auch hier das zu erwartende Tutorial, welches
an einer Beispielapplikation alle Aspekte von EJB diskutiert (Session Beans,
Entity Beans, Message-Driven Beans, Bean-Managed vs. Container-Managed
Persistence, Transactions und Security). Zusätzlich gibt auch hier
ein Kapitel "Design Strategies", in dem Performance-Optimierungen und diverse
andere sinnvolle Programmiertechniken für EJB dargestellt werden.
Dieses Kapitel ähnelt dem, was "Mastering Enterprise Java Beans" in
seinem Kapitel über "EJB Best Practices and Performance Optimizations"
beschreibt. Das Management von EJB-Projekten, die Auswahl von EJB-Server-Produkten,
und anderen Theme (wie z.B. JNDI) betrachtet Monson-Haefel jedoch nicht.
Beipiel-Kapitel: Message-Driven Beans Zur Illustration der unterschiedlichen Stile sehen wir uns einmal ein willkürlich herausgegriffenes Kapitel näher an: das Kapitel über Message-Driven Beans. Die Message-Driven Beans sind ein Feature, das erst in der letzten Spezifikation von EJB hinzugekommen ist. Das Kapitel ist also in beiden Büchern erst in der jüngsten Ausgabe hinzugekommen.
Bis zu EJB 1.1 gab es nur Session- und Entity-Beans; seit
EJB 2.0 gibt es daneben auch noch Message-Driven Beans (MDBs). MDBs sind
zustandslose Komponenten für die Verarbeitung von asynchronen Meldungen:
sie nehmen JMS-Messages an und verarbeiten diese Meldungen. (JMS steht
für Java Message Service und ist das Standard-Java-API für Message-orientierte
Middleware, wie es sie in Form von proprietären Lösungen wie
Progress's SonicMQ schon seit längerem gibt.)
"Enterprise Java Beans" von Richard Monson-Haefel Monson-Haefel beschreibt zunächst die Grundzüge von JMS, soweit sie für das Verständnis von Message-Driven Beans notwendig sind. Man lernt, was die beiden JMS Messaging Domains Topic und Queue sind und wie die Publish-and-Subcribe und Point-to-Point Messaging Modelle funktionieren. Für weitergehende Information wird auf das Buch "Java Message Service" von Richard Monson-Haefel und David Chapell verwiesen. Nach diesem Vorspiel geht es dann um die eigentlichen Message-Driven Beans, für deren Verwendung sogleich ein Source-Beispiel geliefert wird, an dem Monson-Haefel alle Aspekte von MDBs erläutert: den Lebenszyklus einer MDB, das EnterpriseBean-Interface, das MessageListener Interface, und auch das Zurücksenden einer Antwort an den Absender der verarbeiteten Message, den Deployment-Deskriptor inklusive Message-Selektoren. Am Ende des Kapitels weiß man alles, was man über MDBs wissen muss, um selber welche implementieren zu können. "Mastering Enterprise Java Beans" von Ed Roman, et.al.
Bei Ed Roman geht es ähnlich los: Überblick
über JMS in etwa demselben Umfang wir bei Monson-Haefel, gefolgt von
einem trivialen Beispiel einer MDB, gefolgt von der Erläuterung aller
wesentlichen Aspekte von Message-Driven Beans. Die Details der Programmierung
von MDBs sind sehr knapp gehalten in diesem Kapitel; der Autor verweist
bewusst auf das EJB-Tutorial von Sun Microsystems, wo man die Details des
MDB APIs jederzeit studieren könne. Statt die Details in seinem Buch
zu wiederholen, stürzt er sich rasch auf die dunklen Seiten von MDBs.
Man liest dann über allerlei Probleme, die man mit MDBs haben kann,
und welche Lösungsansätze es dafür gibt. Die meisten dieser
Stolpersteine werden auch bei Monson-Haefel erwähnt, dort aber ohne
längliche Ausführungen.
Abschließender Vergleich An diesem Beispielkapitel sieht man deutlich die Unterschiede im Stil der beiden Bücher. Bei Ed Roman geht es nicht primär um die Details der Implementierung einer Lösung, sondern darum, praktische Probleme mit geeigneten Designansätzen zu lösen. Bei Monson-Haefel geht es darum, Code zu schreiben und die Konzepte von EJB zu verstehen. Während sinnvolle Lösungsansätze bei Ed Roman von der Design-Sicht aus erläutert werden und relativ breit mit Diskussion aller erdenklichen Alternativen und Vor-und Nachteilen erarbeitet werden, sieht man die Lösungstechniken bei Monson-Haefel direkt im Source-Code, ohne längliche Diskussion von Pro und Contra. Bei Monson-Haefel lernt man: so kann man das machen, so ist das sinnvoll. Bei Ed Roman lernt man, so - oder aber auch so - könnte man es machen, und hoppla - da ist noch ein Problem. Insgesamt ist "Enterprise Java Beans" von Monson-Haefel wesentlich fokussierter und homogener als "Mastering Enterprise Java Beans" von Ed Roman, et.al. Monson-Haefel konzentriert sich auf das Implementieren mit den APIs des EJB-Frameworks und behandelt dieses Thema mit einem erkennbar höheren Detailreichtum. Das soll nicht heißen, dass Ed Roman damit verglichen nur lückenhafte Information bietet; das ist nicht der Fall. Aber die Details in "Mastering Enterprise Java Beans" beziehen sich oft auf Design- und Architektur-Aspekte, während "Enterprise Java Beans" stärker auf die Details der EBJ-APIs achtet. Monson-Haefels Buch spricht vermutlich eher den passionierten Entwickler an, der solche API-Details natürlich wissen will, während Ed Romans Buch eher den Nerv von Architekten, technischen Projektleitern, und Beratern trifft, die ein starkes Interesse an Überblick haben und sich nicht unbedingt mit allen Details aller Bean-Methoden befassen wollen.
Welches des beiden Bücher man für die Einarbeitung
in das Thema EJB vorzieht, ist größtenteils Geschmacksache.
Beide Bücher sind vollständig und inhaltlich korrekt (von den
unvermeidbaren Errata abgesehen). Beide sind für das Selbststudium
geeignet. Beide sind übersichtlich mit vernünftigem Index und
auch als Referenzen gut brauchbar. Man muss sich lediglich entscheiden,
ob man das Thema EJB eher breit oder eher eng umrissen angehen will - oder
ob man im Zweifelsfall vielleicht beide Bücher lesen will.
Ergänzende Informationen zu den Büchern Den Source-Code der Beispiele in den Büchern kann man in beiden Fällen kostenlos aus dem Internet herunterladen. Zu dem Buch von Monson-Haefel gibt es ein Arbeitsbuch für das Selbststudium, das man ebenfalls als non-printable PDF kostenlos herunterladen oder aber als Buch bestellen kann. Dieses Arbeitsbuch und den Source-Code gibt es derzeit in drei Ausführungen: für JBoss, WebLogic und WebSphere.
Als Ergänzung zu Ed Romans Buch gibt das Buch "EJB
Design Patterns" von Floyd Marinescu, welches zunächst als zusätzliches
Kapitel von "Mastering Enterprise Java Beans" gedacht war, aber dann vom
Unfang her ein eigenes Buch geworden ist. Wer also noch mehr über
Patterns und Programmiertechniken im EJB-Umfeld wissen will, findet hier
weitere Informationen. Die Bücher von Roman und Marinescu kann man
kostenlos im PDF-Format von der Website der Firma TheServerSide herunterladen.
Die Sache hat allerdings einen kleinen Haken: man muss seine Email-Adresse
hinterlassen und bekommt später die unvermeidlichen Werbe-Emails der
Firma TheServerSide. Das gleiche gilt für die Code-Beispiele von Ed
Roman's Buch. Auch an anderen Stellen benutzen Ed Roman und seine Ko-Autoren
ihr Buch als Marketing-Vehikel: im Kapitel über das Management von
EJB-Projekten preisen die Autoren unverblümt ihre Dienste als EJB-Berater
an. Ein unschöner Zug an dem sonst so kompetenten und nützlichen
Buch.
Referenzen EJB-Ressourcen bei SUN Microsystems
Download-Site für J2EE bei SUN:
http://java.sun.com/j2se/1.4/download.html
"Mastering Enterprise Java Beans" von Ed Roman, et.al.
Download-Site für von "Mastering Enterprise Java
Beans" von Ed Roman, et.al.:
http://www.theserverside.com/books/masteringEJB/index.jsp
URLs "Enterprise Java Beans" von Richard Monson-Haefel
Download-Site für den Source-Code:
http://www.oreilly.com/catalog/entjbeans2/chapter/examples.html
Leider gibt es Fehler in der Sun Reference Implementation
von J2EE, die es unmöglich machen, die völlig korrekten Beispiele
aus MonsonHaefel's Buch zum Laufen zu kriegen. Es gibt zu diesem Problem
Informationen, die man unbedingt lesen sollte, ehe man versucht, die Beispiele
mir der Sun Reference Implementation von J2EE zum Laufen zu kriegen. Mit
den anderen J2EE-Implementierung (WebLogic, WebSphere und JBoss) gibt es
diese Probleme übrigens nicht.
|
||||||||||||||||||||||||||
|
|
© Copyright 1995-2003
by
Angelika Langer. All Rights Reserved.
|
||||||||||||||||||||||||||