Angelika Langer - Training & Consulting

 
HOME | SEMINARS | TALKS | ARTICLES | BOOKS | LINKS | IOSTREAMS | GENERICS | ABOUT | NEWSLETTER | CONTACT | SITEMAP
Book Review - Enterprise Java Beans

Books  
HOME 
SEMINARS 
TALKS 
ARTICLES 

BOOKS

  OVERVIEW
  REVIEWS

  BIBLIOGRAPHY    
    J2SE
    J2EE
    CORE C++
    STL
    TEMPLATES
    IOSTREAMS
    CONCURRENCY
    I18N
    PATTERNS
    OOA/OOD
    TESTING
    MANAGEMENT
 

LINKS 
IOSTREAMS 
GENERICS 
ABOUT 
NEWSLETTER 
CONTACT 
SITEMAP 
Book Review - Enterprise Java Beans

Enterprise Java Beans
Vergleichendes Buchreview
 

JavaSPEKTRUM, September 2002
Klaus Kreft & Angelika Langer

 
Ed Roman, Scott Ambler & Tyler Jewell
"Mastering Enterprise Java Beans", 2 nd Edition
Wiley, 2002
ISBN 0-471-41711-4
Richard Monson-Haefel
"Enterprise Java Beans", 3 rd Edition
O?Reilly, 2001
ISBN 1-596-00226-2

 

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
EJB-Tutorial bei SUN: http://developer.java.sun.com/developer/onlineTraining/Beans/EJBTutorial/index.html
J2SE-Tutorial bei SUN: http://java.sun.com/j2ee/tutorial/1_3-fcs/
EJB-Spezifikation bei SUN: http://java.sun.com/products/ejb/docs.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
Download-Site für "EJB Design Patterns" von Floyd Marinescu: http://www.theserverside.com/books/EJBDesignPatterns/index.jsp
Website von Ed Roman aka TheServerSide: http://www.theserverside.com/
 
 

URLs "Enterprise Java Beans" von Richard Monson-Haefel

Download-Site für den Source-Code: http://www.oreilly.com/catalog/entjbeans2/chapter/examples.html
Website von Richard Monson-Haefel aka jMiddleware: http://www.jmiddleware.com/

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.
Information über die Fehler in der J2EE Reference Implementation von SUN und die notewendigen Workarounds im Beispiel-Code: http://www.ejbnow.com/j2eeri_problems.html
 
 
 


 
© Copyright 1995-2003 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Articles/Reviews/EJB/EJB.html  last update: 25 Nov 2003