Fraunhofer Institut Experimentelles Software Engineering Richtlinien zur Abgrenzung und Bewertung von Standardumgebungen für Webanwendungen Autoren: Michalis Anastasopoulos Tim Romberg Christoph Andriessens Bulcsú Bartek Stephan Kurpjuweit Stefan Kettemann Das diesem Bericht zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministerium für Wirtschaft und Technologie unter den Förderkennzeichen 16IN0047 und 16IN0048 gefördert. Die Verantwortung für den Inhalt dieser Veröffentlichung liegt bei den Autoren. Version 1.0 September 2001 Eine Publikation des Fraunhofer IESE Das Fraunhofer IESE ist ein Institut der Fraunhofer Gesellschaft. Das Institut überträgt innovative Software-Entwicklungstechniken, -Methoden und -Werkzeuge in die industrielle Praxis. Es hilft Unternehmen, bedarfsgerechte Software-Kompetenzen aufzubauen und eine wettbewerbsfähige Marktposition zu erlangen. Das Fraunhofer IESE steht unter der Leitung von Prof. Dr. Dieter Rombach Sauerwiesen 6 67661 Kaiserslautern Inhalt 1 2 3 4 5 Copyright Abgrenzung und Bewertung bestehender Umgebungen und Technologien ...........7 Industriestandards....................................................................................................9 2.1 J2EE.............................................................................................................9 Produkte.................................................................................................................18 3.1 Bewertung Microsoft .NET Framework mit Visual Studio .NET.............18 3.2 Bewertung JBOSS 2.4.0 mit TOMCAT 3.2.3...........................................25 3.3 Bewertung LAMP......................................................................................35 Abschliessende Beurteilung ..................................................................................40 Literatur / Links .....................................................................................................42 Fraunhofer IESE / Forschungszentrum Informatik Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Abgrenzung und Bewertung bestehender Umgebungen und Technologien 1 Abgrenzung und Bewertung bestehender Umgebungen und Technologien In diesem Dokument untersuchen wir einige der verfügbaren Umgebungen, die für die Entwicklung webfähiger Anwendungen mit unterschiedlichen Anforderungen - von kleinen 2-Tier- bis hin zu komplexen Enterprise-Architekturen - zum Einsatz kommen. Wir bewerten die Produkte anhand des in Arbeitspaket 3 entwickelten Kriterienkatalogs. Ziel der Bewertungen ist es, die Anwendung des Kriterienkatalogs zu demonstrieren. In einem gegebenen Entscheidungsfall in der Praxis wird man bei einzelnen Kriterien noch weiter in die Tiefe gehen müssen. Als roter Faden für die nachfolgenden Bewertungen mag die hierarchisch aufgebaute Kriterienliste dienen, die den Aufbau des Kriterienkatalogs widerspiegelt (Details siehe dort). Technische Funktionalität - Entwicklersicht - User Information Management - Access Management - Information Preparation - Session Management - Transaction Management - Web Presentation - Datenbanken / Legacy Systeme - Sicherheit - Unterstützung eines effizienten Entwicklungsprozesses - Qualitäten für die Implementierung der Business-Logik - Marketing - Wiederverwendung und Wartung Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 7 Abgrenzung und Bewertung bestehender Umgebungen und Technologien - Benutzbarkeit - Performanz - Sonstiges - Übergreifende Qualitätsmerkmale Investitionssicherheit - Betriebswirtschaftliche Sicht - Integration von Geschäftsprozessen - Plattform & Technologie - Herstellerunterstützung - Kosten - Unterstützung von Industriestandards - Zertifizierung Installation und Betrieb - Skalierbarkeit - 24/7 Betrieb - Einfache Installation 8 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Industriestandards 2 Industriestandards Viele der erhältlichen Produkte unterstützen die in Industriestandards vorgegebenen Spezifikationen, wie z.B. J2EE, CORBA, COM, .NET. Exemplarisch behandeln wir hier J2EE, einen von SUN entwickelten Standard. 2.1 J2EE J2EE wird mittlerweile von zahlreichen kommerziellen Herstellern in ihren Umgebungen unterstützt und ist auch als Open-Source Produkt erhältlich. Kommerzielle Produkte (Anbieter) sind: Websphere (IBM), Weblogic (BEA). Ebenso gibt es eine Reihe von Open-Source Produkten, die J2EE unterstützen wie z.B. JBOSS. Die Hauptvorteile von J2EE sind die Plattformunabhängigkeit, die gute Herstellerunterstützung und die Standardisierung. Nachfolgend beschreiben wir, wie Funktionalitäten grundsätzlich von J2EE und demnach von den meisten J2EE-Standardumgebungen unterstützt werden. Näheres zu den vorgestellten Technologien findet sich in [Sun-F]. 2.1.1 Technische Funktionalität - Entwicklersicht 2.1.1.1 User Information Management Hierfür bietet Java keine explizite Unterstützung. Die Funktionalität ist vom Entwickler selbst zu realisieren. Allerdings hat Sun sogenannte Blueprints bereitgestellt, das heißt eine Sammlung von Vorgehensweisen und eine Referenzimplementierung, die auf den aktuellen J2EE-Technologien basieren und unter anderem Benutzerverwaltung sowie Personalisierung abhandeln. Der Pet Store ist wohl die bekannteste Referenzimplementierung einer J2EE-Anwendung, deren Quellcode und lauffähige Klassen zur Verfügung stehen (siehe [Sun-B]). Kommerzielle J2EE-Produkte wie der BEA Personalization Server [BEA-B] bieten explizite Unterstützung für User Information Management an. 2.1.1.2 Access Management Für die Authentifizierung und Autorisierung von Nutzern gibt es zwei Möglichkeiten: • Nutzung der Standard-Sicherheitsmechanismen im Package java.security • Nutzung der Java Authentication und Authorization Service (JAAS) Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 9 Industriestandards Während java.security die Basisfunktionalitäten zur Rechtedefinition und -vergabe realisiert, erweitert JAAS diese Mechanismen und implementiert entsprechende Klassen für die Benutzerauthentifizierung. Dabei werden anonyme, einfache und SASL-Authentifizierung [ISI97] unterstützt. Der SASL-Standard (Simple Authentication and Security Layer) definiert, wie eine Sicherheitsebene zwischen einem Nutzer und einem Sicherheitssystem aufgebaut werden kann, die dem nachfolgenden Nachrichtenaustausch zugrunde liegt. Kerberos [ISI97] und X.509 [IETF00] sind bekannte SASL-Mechanismen, die von JAAS unterstützt werden. 2.1.1.3 Information Preparation Dynamischer Inhalt Für die Erstellung dynamischer Webseiten bieten sich die Technologien der Java Servlets und der Java Server Pages an [Sun-C]. Die Servlets sind serverseitige Applikationen, die mit dem Webserver interagieren können, um eingehende HTTP-Requests zu bearbeiten und resultierende HTTP-Seiten zu erzeugen. Sie sind in der Lage Benutzersitzungen zu verwalten, und sie vermitteln oft zwischen dem Webserver und anderen Applikationen oder Datenbanken. JSPs sind HTML-Seiten mit zusätzlichen Anweisungen, die dynamischen Inhalt liefern. Das heißt, JSPs können Servlets, Applikationen oder Datenbanken anstoßen, um zur Laufzeit Informationen zu bekommen und sie in den HTML-Text einzubetten. JSPs sind letztendlich Servlets, da sie zur Laufzeit zu Servlets kompiliert werden. Verschiedene Datenformate Sun bietet eine Sammlung von APIs zur Unterstützung des XML-Standards an (siehe [Sun-C]). Dazu gehören: XML-Verarbeitung (DOM, SAX, XSLT), Abbildung von XML-Schemata auf Java-Klassen, XML-basierter Nachrichtenaustausch (SOAP) und Zugriff auf XML-Registrierungen wie UDDI oder ebXML. Für andere populäre Datenformate (wie PDF, PS, DOC) gibt es separate Frameworks. Folgende Tabelle enthält einige davon. Tabelle 1...................................... Java-Frameworks für populäre Datenformate Anbieter Webadresse Funktionen Etymon PJ http://www.etymon.com/pj/ index.html Erzeugung, Modifizierung und Parsing von PDF-Dokumenten. Openoffice.org http://www.openoffice.org Plattformunbhängige APIs für die Kontrolle über (Star)Office-Dokumente Sun Microsystems http://java.sun.com/j2se/1.4/docs/ api/javax/print/package-tree.html Unter anderem wird hier definiert, wie die Umwandlung von Dateiformaten erfolgen kann. Allerdings wird nur die Umwandlung von GIF, JPEG, PNG sowie von Objekten, die die Interfacs java.awt.print.Pageable und java.awt.print.Printable implementieren, in PS mitgeliefert. 10 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Industriestandards Browser-Unabhängigkeit Browser-Unabhängigkeit ist nur für client-seitigen Java-Code relevant d.h. für Java-Applets und Javascripts. Applets sind allgemein unabhängig von dem eingesetzten Webbrowser. Bei Skripten können Inkompatibilitäten vorkommen, die von Javascript-Entwicklern zu beachten sind. Der Grund dafür ist, dass es für bestimmte Features unterschiedliche Interpretationen je nach Browser gibt. Internationalisierung Java ermöglicht die Entwicklung globaler Applikationen, die sich an die Umgebung und Gewohnheiten des Benutzers anpassen [Sun-E]. Grundlegend ist dabei das Locale-Objekt, das jeweils mit einer Sprache und einem Land verbunden wird. Darüber hinaus gibt es eine Reihe anderer Objekte, die von dem jeweils definierten Locale abhängen. Die Klassen DateFormat und NumberFormat beispielsweise formatieren Daten und Geldbeträge je nach aktuellem Locale. Ressourcen wie Texte, Fehlermeldungen oder andere Java-Objekte können unter einem RessourceBoundle-Objekt zusammengefasst werden, das ebenfalls Locale-spezifisch ist. Unterstützung von Unicode-Schriftarten ist ebenfalls vorhanden. 2.1.1.4 Session Management Session Management wird an zwei Stellen innerhalb der J2EE-Plattform behaldelt, nämlich in der Servlet- und in der EJB-Spezifikation. Beide Technologien unterstützen die bekannten Strategien (Cookies, URL-Rewriting, Datenbank usw.) für das Session-Tracking und die -Datenspeicherung. Auf der anderen Seite wird es von Sun nicht spezifiziert wie Sessiondaten vor Ausfällen zu schützen sind. Im Hinblick darauf, bieten Anbieter proprietäre Lösungen an. Servlets Servlets sind in der Lage Benutzersitzungen zu verwalten. Zu diesem Zweck gibt es das Interface HTTPSession. Entwickler sind in der Lage Sessiondaten in der Form von Attributen einer Session zuzuordnen. Jedes Attribut wird mit einem Wert belegt, das ein beliebiges Java-Objekt sein kann. Obwohl Servlets auch kompliziertes Sessionmanagement durchführen können, sind sie für Sessiondaten auf der Ebene der Präsentation besser geeignet. Servlets können sich z.B. das von einem Nutzer ausgewählte Layout merken, während sie geschäftliche Sessiondaten den entsprechenden Session Beans übergeben. Es darf nicht außer Acht gelassen werden, dass Servlets nur HTTP-Sessions unterstützen können. Stateful Session Beans Stateful Session Beans verwalten ebenfalls Sessioninformationen als Objektattribute. Session Beans sind unabhänging vom Client-Typ. Das heißt, sie können von selbständigen Anwendungen, Webbrowsern oder mobilen Endgeräten aus angesprochen werden. Der spezielle Fokus der Stateful Session Beans liegt an den Business Operationen, die damit verbunden sind. Dies ist ein Grund warum Session Beans für komplizierte Anwendungsszenarien besser geeignet sind. Ein weiterer Grund ist, dass viele EJB-Container besser mit Ressourcen umgehen können als die entsprechenden Servlet- (oder Web-) Container. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 11 Industriestandards 2.1.1.5 Transaction Management Zur Verwaltung von Transaktionen bieten sich zwei Spezifikationen: der Java Transaction Service (JTS) und der Java Transaction API (JTA). JTA stellt eine Abbildung auf Java des X/Open XA-Standards für verteilte Transaktionen zur Verfügung, während JTS die Interoperabilität zwischen verschiedenen Transaktionsmanagern auf der Basis vom CORBA-Transaction Service und dem IIOP behandelt. Die Unterstützung geschachtelterTransaktionen ist von dem jeweiligen Transaction Manager abhängig und wird demnach in der Spezfikation nicht behandelt. Sun stellt einen Transaction Manager zur Verfügung, der aber keine genesteten Transaktionen erlaubt. Verschiedene Sperrstrategien sind möglich, allerdings von den Entwicklern selbst zu implementieren. 2.1.1.6 Web Presentation Zur Unterstützung komfortabler Benutzerschnittstellen stehen Java-Applets zur Verfügung. Innerhalb eines Java-Applet können alle bekannten AWT- oder Swing-Komponeten auftauchen. Der Nachteil ist, dass die erfordelichen Klassen heruntergeladen werden müssen, was zeitaufwendig sein kann. JSPs unterstützen die Bestimmung spezieller Seiten, die in Ausnahmesituationen angezeigt werden. Dies ist möglich durch die Anweisung <%@ page errorPage="file_name" %>. 2.1.1.7 Datenbanken / Legacy Integration Datenbanken Für die Anbindung an Datenbanken bieten sich außer den proprietären SDKs oder APIs folgende Technologien: • JDBC Java Database Connectivity ermöglicht die Zusammenarbeit zwischen Java-Applikationen und relationalen Datenquellen. Es handelt sich um ein Low-Level-API, das die üblichen Datenbankoperationen (Anfragen, Updates) ermöglicht. Für den Zugriff auf eine Datenbank ist allerdings der entsprechende JDBC-Treiber notwendig. • Entity Beans Entity Beans sind Java-Objekte, die Daten aus einer Datenbank repräsentieren. Entwickler müssen sich weder um Transaktionen noch um andere Details der Anbindung kümmern. Das erledigt der jeweilige EJB-Container. Optional können Entwickler selbst die Anbindung realisieren. • JDO Java Data Objects sowie die EJBs erlauben einen objektorientierten Zugriff auf Datenquellen. Das JDO-Modell, das noch im Aufbau ist, behebt allerdings einige EJB-Schwächen: Unter anderem ist es einfacher, nutzt keine Deployment-Descriptors und bildet DB-Relationen auf OO-Klassen und -Hierarchien bidirektional und sicher ab. Das Castor-Projekt [www.castor.org] stellt eine erste Implementierung der JDO-Spezifikation von Sun dar, allerdings ohne hunderprozentige Komformität. 12 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Industriestandards Legacy Integration Zur Integration bereits bestehender Systeme hat Sun die Connector-Spezifikation entwickelt, die noch im Aufbau ist. Dabei werden Rollen definiert, die die beteiligten Parteien darstellen (z.B. EJB, EJB-Container, Backend-System) sowie Komponenten und Interfaces, die von den entsprechenden Rollen zu implementieren sind. Die Spezifikation ist flexibel genug, um der Integration aller Arten von Backendsyststemen (z.B. ERP, DBMS usw) gewacshen zu sein. Das Hauptziel ist die Interoperabilität zwischen unterschiedlichen J2EE-Servern und Backendsystemen. Große Anbieter wie SAP oder PeopleSoft haben bereits ihre Unterstützung für die Connector-Spezifikation angekündigt. Diese Anbieter haben bisher proprietäre Java-APIs angeboten. Einen anderen Weg zur Integration öffnet die CORBA-Anbindung für Java. Dabei gibt es zwei Möglichkeiten: RMI over IIOP und IDL2Java. In beiden Fällen ist die Interaktion zwischen Java- und CORBAAnwendungen über das IIOP machbar. Das Socket-API kann auch unter Umständen für Integrationszwecke eingesetzt werden. 2.1.1.8 Sicherheit Im Abschnitt 2.1.1.1 wurden die Sicherheitsmechanismen von Java bereits diskutiert. Diese tragen ebenso zur sicheren Datenübertragung mittels Public Key Infrastructure, Datenverschlüsselung usw. bei. 2.1.1.9 Unterstützung eines effizienten Entwicklungsprozesses Folgende Tabelle faßt den Beitrag einer Java-Umgebung zu einem effizienten Entwicklungsprozess Wir betrachten hier den Basisbeitrag von Sun . Tabelle 2 ........................................................... Effiziente Entwicklung mit J2EE Assistenten Das hängt vom eingesetzten J2EE-Server ab. Beispielapplikationen Zahlreiche Applikationen stehen zur Verfügung. Für jede J2EE-Technologie gibt es Beispielapplikationen. Code-Editor Viele Code-Editoren für Java sind frei zu bekommen. Debugger Die Standard Java Virtual Machine bietet den auf Kommandozeile basierten Debugger jdb an. Kommerzielle IDE’s integrieren jdb bzw. haben eigene Debuggers. Distributed Debugging wird von proprietären Lösungen und der neuen Java Platform Debugger Architecture unterstützt. Integration der IDE Eine Reihe bekannter Java-IDEs gibt es bereits, die jetzt auch explizite Unterstützung für J2EE haben. Management von Benutzerprofilen Hängt von dem J2EE-Server ab. Modularität J2EE-Applikation sind von Natur aus modular ausgerichtet Programmiersprachentransparenz Meistens nicht nötig, da es nur in Java programmiert wird. Unterstützung anderer Sprachen ist möglich (z.B. mit CORBA, jpython, Microsoft Virtual Machine, Sockets, JNI). Services Der Bean Container kann auf Wunsch die Transaktionsverwaltung, Persistenz, Sicherheit, Zwischenspeicherung und andere Hintergrundsaufgaben übernehmen. Es werden Deployment Descriptoren verwendet, um die gewünschten Services zu deklarieren. Allerdings ist die Deklaration nur zur Deployment-Zeit möglich. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 13 Industriestandards Tabelle 2............................................................ Effiziente Entwicklung mit J2EE Trennung Business Logik / Data, Data Access Logik Mit JDBC muss der Entwickler selbst die Trennung vornehmen. Mit Entity Beans bzw. JDOs wird die Trennung mehr klargemacht. Trennung Business Logik / Präsentation Ist durch die Nutzung von JSPs möglich.. Versionierung JSR 147, ansonten proprietäre Lösungen Vollständige Dokumentation Alle Java-Technologien sind von Sun gut dokumentiert Änderbarkeit Sun und jeder J2EE-Server bieten eine Reihe fertiger Java-Klassen. Die sind meistens sehr gut änderbar.. Übersichtliche Darstellung der Applikationskomponenten Hängt von der J2EE-Umgebung ab. Marketing Sun und die Java Community, zu der eine große Menge wichtiger Softwareunternehmen gehören, reagieren in der Regel schnell auf neue Trends, wodurch Java Specification Requests und Java-Spezifikationen entstehen. Allerdings kann es dauern, bis die Spezifikationen akzeptiert werden und die entsprechenden Implementierungen vorhanden sind. Wiederverwendung / Wartung Java-Programme sind objektorientiert und damit gut wiederverwendbar. Das von Sun gelieferte JavaDoc Werkzeug trägt nebenbei zu einer fachgerechten Dokumentation bei. Darüber hinaus liegt es an den entsprechenden Produkten (Server und IDEs), die Wiederverwendung weiter zu fördern. Was die Portabilität von EJBs angeht, kann es bei Migration von Beans zwischen EJB Container zu Schwierigkeiten kommen. Der Grund ist, dass die Interfaces zwischen EJB-Container und EJBs nicht festgelegt sind. Deswegen kann es bei Beans mit Container Managed Persistence zu Inkompatibilitäten kommen, obwohl der Bean-Code an sich portabel ist. 2.1.1.10Benutzbarkeit Performanz Eine typische lauffähige Java-Klasse besteht aus sogenannten Bytecodes, die von der jeweiligen Java Virtual Machine zur Laufzeit interpretiert werden. Dies deutet automatisch Performanzeinbußen an. Obwohl es umstritten ist, ob Java-Software überhaupt langsamer als C, C++, Fortran oder andere Programmiersprachen ist, haben Messungen für rechenintensive Systeme [Sch01] gezeigt, dass es tatsächlich so ist. 14 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Industriestandards Die JIT-Technologie schafft Performanzoptiomierungen, dennoch ist aber im Vergleich zu anderen Optimierungstechniken noch zu jung und wenig ausgereizt. Dies ist ein Grund, warum die durch JIT gewonnene Performanz nicht ausreichend sind. Tools wie JProbe [www.klgroup.com], Optimizelt! [www.optimizeit.com] oder VTune [developer.intel.com/vtune/index.htm] schaffen Abhilfe durch werkzeuggestützte Performanzanalyse von JavaProgrammen. Sogenannte Native Compilers stellen eine andere Möglichkeit dar. Dabei werden Java-Klassen komplett in plattformabhängige Binärdateien kompiliert. Die bekannten Java-IDEs VisualAge for Java und Visual Café bieten leistungsfähige Native Compilers an. Zudem gibt es auch frei verfügbare Lösungen wie der GNU Compiler für Java GCJ [gcc.gnu.org/java]. 2.1.1.11Sonstiges Übergreifende Qualitätsmerkmale Sun bietet einen weitgehenden technischen Support für Java an. Zahlreiche Foren und Portale stehen unter java.sun.com aber auch unter vielen anderen Webadreßen zur Verfügung, in den Erfahrungen über Probleme und Lösungen der J2EE-Technologien ausgetauscht werden. Außerdem sind Anleitungen über das systematische Vorgehen mit J2EE reichlich vorhanden. Die bereits erwähnten Blueprints geben Empfehlungen für den Entwurf von J2EE-Applikationen, während eine Reihe von Tutorials die Aneignung der wichtigsten J2EE-Technologien wesentlich erleichtern. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 15 Industriestandards 2.1.2 Investitionssicherheit - Betriebswirtschaftliche Sicht 2.1.2.1 Integration von Geschäftsprozessen Tabelle 3................................................................................................................... SCM-Intelligenz CRM-Intelligenz Mit Java prinzipiell möglich, da die erforderlichen Technologien vorhanden sind: javax.xml, javax.mail, javax.security, javax.naming, java.net usw. Kommerzielle Werkzeuge bieten explizite Unterstützung an. Integration existierender Applikationen Ist über CORBA, Sockets, JNI u.a möglich Geschäftsprozeßmodellierung Wird nur von kommerziellen Produkten angeboten. Datenintegration Über JDBC möglich. 2.1.2.2 Plattform & Technologie Tabelle 4................................................................................................................... Hardware Hängt vom jeweiligen J2EE-Server ab. Für einfache Anwendungsszenarien sind die Hardware-Anforderungen entsprechend niedrig.. Betriebssystem Die meisten J2EE-Umgebungen unterstützen eine Reihe von Plattformen. Komponententechnologie Die Mehrheit der J2EE-Server unterstützen nur das EJB-Komponentenmodell. Programmiersprache Java und die EJB-Spezifikation. 2.1.2.3 Herstellerunterstützung Tabelle 5................................................................................................................... Bestehende Beziehung zur Herstellerfirma Unternehmensspezifisch. Regionale Unterstützung Das hängt vom ausgewählten J2EE-Produkt ab. Freigabemuster Java Community Process [www.jcp.org] Popularität Sehr populär. Firmenstabilität Sun Microsystems 2.1.2.4 Kosten Tabelle 6................................................................................................................... Entwicklungskosten projektspezifisch Betriebskosten / Lizenzkosten / Lizenzmodelle Alle Java-Spezifikationen und -Technologien sind kostenlos verfügbar. J2EEServerpreise variieren. Open Source ist ebenfalls dabei. 16 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Industriestandards 2.1.2.5 Standards Die gesamte J2EE-Platform ist auf Standards basiert. Folgende Tabelle enthält einige der von J2EE geförderten Standards Table 7: Businesskommunikation Das JSR 67 (Java APIs for XML Messaging) nimmt Rücksicht auf den RosettanNetStandard. Internationalisierung Unicode, ISO Language Codes Middleware CORBA, IIOP Sicherheit SSL, SASL, Kerberos, PKI E-Mailing MIME (S/MIME, POP3 und andere Standards gibt es als Third Party Lösungen) Management / Administration SNMP, WBEM Namensdienste LDAP Datenformate XML, DOM Webservices UDDI,WSDL, SOAP, ebXML(durch das JSR 67) 2.1.3 Installation und Betrieb Die Sun-Spezifikationen behandeln das Thema Skalierbarkeit/Verfügbarkeit nicht. Lastverteilungs- und Ressource Pooling Mechanismen werden von vielen J2EE-Servern angeboten. Was die Hardware-Unterstützung angeht, ist sie mit J2EE möglich, weil J2EE plattformunbahänging ist und daher keine Einschränkungen auf zusätzliche Hardware auferlegt. Bevor eine EJB benutzt werden kann, ist ihre Installation mit Hilfe seines Deployment Descriptor erforderlich. Diese Descriptors gelten oft als nachteilhaft, weil ihre Erstellung bzw. Verfassung aufwending sein kann. EJBs mit ihren Descriptors werden typischerweise in JAR-Dateien zusammengepackt, die ohne Probleme verteilt werden können. Administration Die Java Management Extensions [java.sun.com/products/JavaManagement] kurz JMX erlauben die Entwicklung von Applikationen, die leichter zu administrieren sind. Tools nutzen JMX, um Management-Konsolen zu realisieren, mit deren Hilfe Komponenten zur Laufzeit gestartet, runtergefahren, manipuliert und überwacht werden können. Standardprotokolle wie SNMP oder WBEM werden dabei unterstützt. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 17 Produkte 3 Produkte Aus der Vielzahl der existierenden Umgebungen werden hier repräsentativ Microsoft.Net, JBOSS sowie LAMP untersucht. 3.1 Bewertung Microsoft .NET Framework mit Visual Studio .NET Die Entwicklungs- und Laufzeitumgebungen von Microsoft erfreuen sich insgesamt großer Verbreitung und guter Unterstützung seitens des Herstellers. Verbreitet sind Visual Studio 6.0 (hier vor allem die ASP-Technologie) als Entwicklungsumgebung und Windows 2000 (Internet Information Services) als Laufzeitumgebung. Für größere Installationen mit Serverclustering und Failover ist die Windows-Version Advanced Server notwendig. Um den Betrieb in solchen Szenarien leichter zu steuern, gibt es das Management-Frontend Application Center. Microsoft hat vor einem knappen Jahr den Schwenk auf eine völlig überarbeitete Technologie - .NET angekündigt. Sie stellt in einigen Punkten einen deutlichen Bruch mit der Vergangenheit dar und übernimmt insbesondere Aspekte von Java. Entwicklungsumgebung (Visual Studio .NET) und Laufzeitumgebung (.NET Framework als Betriebssystemerweiterung sowie Internet Information Services mit Server Extensions) stehen lauffähig zur Verfügung, sind aber noch im Beta-Status. Trotz der im Moment noch geringen Verbreitung beurteilen wir hier daher .NET. 18 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte 3.1.1 Technische Funktionalität - Entwicklersicht 3.1.1.1 User Information Management BenutzerkontenverwalNicht im .NET-Framework enthalten. Microsoft bietet jedoch einen WebService mit tung / Benutzerdatenbank. Namen Passport (www.passport.com) an. Dort können zentral Benutzerdaten verwaltet werden. Vorteil: Der Benutzer muss seine Daten nur an einer Stelle pflegen und kann mit einem Kennwort auf viele verschiedene Angebote zugreifen. Für den Anwendungsentwicklung erübrigt sich in manchen Fällen die Programmierung einer entsprechenden Komponente. Nachteil dieser Lösung ist, dass manche Benutzer größere Bedenken haben, ein Passport-Konto anzulegen, als ein gesondertes für jedes Webangebot. Regeln Nein 3.1.1.2 Access Management Authentifizierung Auch hierfür stehen die Passport Services zur Verfügung. Rechtevergabe / Autorisierung 3.1.1.3 Information Preparation Integrierter Webserver .NET ist über die Frontpage Server Extensions eng mit den Internet Information Services (Bestandteil des Betriebssystems Windows 2000) integriert. Optimierung für Lesezugriffe .NET kann lokale Kopien (XmlDataSets) aus Datenbankinhalten erzeugen. Auf die Kopien kann auch schreibend zugegriffen werden. Automatisierte Inhaltsauf- Das Microsoft .NET Framework bietet vielfache Möglichkeiten, Datenbankinhalte bereitung automatisch zu visualisieren. Siehe dazu “Generierung von Webseiten aus Datenbanken. Unterstützung verschiede- XML (XSL, XPath) wird sehr gut unterstützt. ner Datenformate Browser-Unabhängigkeit .NET-Inhalte werden auf allen gängigen Browsern korrekt dargestellt. Generierung von Webseiten aus Datenbanken Das .NET Framwork bietet leistungsfähige Klassen für eine Datenbankabstraktion an. Hier sind u. a. DataGrid und Repeater zu erwähnen. Diese stellen eine Verbindung zur Datenbank her und lesen bzw. schreiben Inhalte aus/in die Datenbank. Der Entwickler muss nur noch mit Hilfe von Templates angeben, wie die einzelnen Zeilen der automatisch erzeugten Tabelle aussehen sollen. Die Tabelle wird dann selbstständig aus der Datenbank gefüllt. Erstellung einer Site Map Nein Erstellung eines Inhaltsverzeichnises Nein Erstellung alphabetisches Register Nein Suchmaschine Nein. Aber die (sowieso vorhandenen) Internet Information Services bieten eine Suchfunktion über die statischen Inhalte eines Webangebots. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 19 Produkte Internationalisierung Die Entwicklung mehrsprachiger Angebote wird von der Entwicklungsumgebung selbst nicht in besonderer Form unterstützt. Das .NET-Framework enthält jedoch im Namespace System.Globalization Klassen, die für die effiziente Umsetzung solcher Angebote benötigt werden (unterschiedliche Datums- und Zeitformate, Währungen, Landessprachen, Sortierreihenfolgen, benutzter Kalender usw.) Generation von GIFDateien. Nicht in der Entwicklungsumgebung enthalten. Es gibt jedoch Bibliotheken, die solch eine Funktion beinhalten. Vermeidung ungültiger Links Nein 3.1.1.4 Session Management Freie Auswahl zwischen Session-Datenspeicherung auf der Client- und auf der Server-Seite .NET verfolgt prinzipiell den Ansatz, dass nach Bearbeitung eines Requests und Absenden der Response alle benötigten Ressourcen wieder freigegeben werden. Aus diesem Grund werden Informationen, die während der gesamten Sitzung gebraucht werden, im sog. ViewState zum Client (und von dort wieder zurück zum Server) geschickt. Technisch gesehen ist der ViewState ein verstecktes Formularfeld. Benötigt ein Dienst größere Datenmengen als Sitzungskontext, so können diese auch auf Server-Seite gespeichert werden. Dazu existiert ein Session-Objekt. Die Sitzungsidentifikation geschieht wahlweise über Cookies oder erweiterete URLs. Verschiedene Strategien für server-seitige Sessiondatenspeicherung Nein. Management des Abbruchs einer Sitzung Definition der Länge der Time-Out-Periode Die Time-Out-Periode, nach deren Verstreichen die Sitzung vom Server beendet wird, kann eingestellt werden. Trennung des Session Daten von Session Management Prozess 3.1.1.5 Transaction Management Näheres zu diesem Thema unter dem Stichwort „Data Access Architecture“ auf MSDN (http://msdn.microsoft.com/library/default.asp?url=/ library/en-us/dnbda/html/daag.asp). Das verteilte Transaktionsmanagement beruht (noch) auf dem COM+-Dienst DTC. Die Integration mit Funktionen des SQL Server ist auch hier sehr eng, obwohl auch andere Datenbanken benutzt werden können. Automatisierte Transaktionsverwaltung Ja. Automatische Transaktionen werden aus Performancegründen nur bei verteilten Transaktionen empfohlen. Implementierung eigener Transaktionsmechanismen möglich Ja. Verschiedene Isolationsstufen Ja. Optimistische/Pessimistische Updates Hängt von Datenbankkonfiguration ab. Ersatzmechanismen / Unterstützung für langlaufende Transaktionen Ja, durch XML-Datasets. 20 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte Status-Überwachung Ja. Unterstützung verteilter Transaktionen Ja. 3.1.1.6 Web Presentation HTML-Editor Die Entwicklungsumgebung bietet dem Entwickler große Hilfen beim Gestalten sowohl statischer als auch dynamischer Seiten. Dabei kann der Entwicklung per Dragand-Drop Komponenten auf der Webseite platzieren und deren Eigenschaften über entsprechende Kontextmenüs einstellen. Erzeugung von JavaApplets und/oder ActiveX-Steuerelementen Nein Definition von Seitenmodellen für Fehlermeldungen Im Zuge von Fehlerbehandlungen können entsprechende Ausgaben erzeugt werden. .NET selbst zeigt bei Laufzeitfehlern eine entsprechende Fehlerseite mit weiteren Informationen an. Die Fehlerseite unterscheidet dabei automatisch zwischen Zugriffen von innen und von außen. Nach außen werden nur eingeschränkte Fehlermeldungen angezeigt, damit Hacker keine Informationen über Angriffsflächen erhalten. 3.1.1.7 Datenbanken / Legacy-Systeme Zusammenarbeit mit verschiedenen Datenbanken Alle SQL-Datenbanken können über ODBC angesprochen werden. Der Zugriff auf den Microsoft SQL Server ist optimiert. Werkzeuge zur DBAnbindung Zur Anbindung an Datenbanken steht ein Assistent zur Verfügung, der anschließend automatisch den entsprechenden Quelltext erzeugt. Integrierte Datenbank Nein Einheitliche Daten Nein Zugriff auf ODBMS Keine besondere Unterstützung. Zugriff auf existierende Anwendungen Über Webservices oder COM. Zugriff auf Mainframes Mainframe-Funktionen müssen durch Webservice oder COM-Schnittsellen gewrappt werden Datenauswertung Nein 3.1.1.8 Sicherheit Vertraulichkeit Mit Hilfe von SSL. Integrität Nein Non-repudiation Nein Administration der Sicher- Nein heitspolitik 3.1.1.9 Unterstützung eines effizienten Entwicklungsprozesses Insgesamt sind die Architektur-Vorgaben bei .NET weniger klar als bei J2EE: Es gibt keine Entsprechung für Enterprise Java Beans, also für Fachkomponenten in der mittleren Schicht. Von Microsoft Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 21 Produkte selbst werden hier je nach Quelle sehr unterschiedliche Techniken empfohlen. Bei .NET konzentriert sich Architektur mehr auf Schnittstellen denn auf Implementierung; in dieses Konzept paßt, dass komplexere Fachlogik in Komponenten gekapselt werden, auf die man dann aus der Webanwendung per Webservices-Schnittstelle zugreifen kann. Dies entspricht auch dem Vorgehen bei der Integration von LegacyKomponenten. Tabelle 8.........................Qualitäten für die Implementierung der Businesslogik Assistenten Assistenten sind an verschiedenen Stellen vorhanden. So wird z. B. beim Erzeugen einer neuen Klassendatei automatisch das Grobgerüst dieser Klasse erzeugt, das man dann ausfüllen muss. Auch wird der Entwickler bei etwas komplizierteren Arbeitsabläufen wie dem Zugriff auf Datenbank-Inhalte durch einen Assistenten schrittweise angeleitet. Beispielapplikationen Das .NET-Framework und Visual Studio .NET enthalten einige Beispiele, die jedoch nicht ohne Weiteres zum Laufen gebracht werden konnten. Sie decken einen großen Bereich der möglichen Einsatzfelder ab. Code-Editor Visual Studio .NET bietet dem Entwickler zahlreiche Hilfestellungen. Es gibt sowohl automatische Einrückung als auch Syntaxmarkierung. Zusätzlich werden dem Benutzer z. B. Auswahllisten mit möglichen Methoden, die auf dem aktuellen Objekt aufgerufen werden können, angeboten. Debugger Ein Debugger mit der Möglichkeit einer schrittweisen Ausführung und der Beobachtung einzelner Variablen ist vorhanden. Als Besonderheit ist zu erwähnen, dass die gesamte Entwicklung schon auf dem späteren Server durchgeführt werden kann. Auch der Debugger kann online auf den evtl. entfernten Server zugreifen. Integration der IDE Die IDE ist auf eine 2-Schichten-Architektur mit direktem Zugriff von der Präsentationsschicht auf Datenquellen optimiert. Die gute Integration von Webservice-Schnittstellen macht das wieder etwas wett. Management von Benutzerprofilen Traditionell gut. Modularität Durch das Webserivces-Konzept gegeben. Programmiersprachentransparenz Die Laufzeitumgebung des Microsoft .NET Frameworks unterstützt zur Zeit C++, C# und Visual Basic. Es können sogar in verschiedenen Klassen eines Projekts unterschiedliche Sprachen verwendet werden - trotzdem funktioniert ihr Zusammenspiel. Trennung Business Logik / Data, Data Access Logik Wie oben angedeutet, nicht so klar wie bei Java. Trennung Business Logik / Präsentation .NET unterstützt eine Trennung zwischen Geschäftslogik und Präsentation. Die Präsentation (von dynamischen Inhalten) wird mittels ASP+-Seiten vorgenommen, die Durchführung von Geschäftslogik über extra Klassen. Somit ist es möglich, die selbe Geschäftslogik von verschiedenen Präsentationsseiten zu verwenden und so z. B. verschiedene Sprachversionen o. Ä. zu verwirklichen. Übersichtliche Darstellung der Applikationskomponenten Visual Studio .NET stellt die eizelnen Projektdateien nach Typ (HTML, ASP, Klasse usw.) sortiert in einer baumförmigen Struktur dar. Prozesse (z. B. ein Bestellvorgang) mit festgelegter Ausführungsreihenfolge verschiedener Dateien (HTML-/ASP-Seiten, Geschäftslogik) werden jedoch nicht grafisch veranschaulicht. Versionierung Da Visual Studio .NET immer auf dem (späteren) Server arbeitet, werden dort auch alle Änderungen sofort wirksam. Möchte man Zwischenergebnisse und/oder lauffähige und fehlerfreie Zustände für die Zukunft sichern, so muss man ein externen Versionierungssystem in Anspruch nehmen. 22 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte Tabelle 8 ........................ Qualitäten für die Implementierung der Businesslogik Vollständige Dokumentation Es gibt zu allen Punkten eine - auch grafisch ansprechende - Dokumentation im HTML-Stil. Dort sind z. B. alle Methoden der Klassen mit Erklärungen aufgeführt. Oft findet man auch Quellcode-Beispiele, die man - mit leichten Abänderungen - in eigenen Programmen verwenden kann. Im jetzigen Beta-Stadium kann man allerdings noch manchmal kleine Lücken bei allgemeinen Erläuterungen, wie gewisse Tätigkeiten Schritt für Schritt ausgeführt werden müssen, finden. Marketing Die Unterstützung durch einen großen Betriebssystem-Hersteller und eine große Anzahl von Allianzen kann als optimal angesehen werden. Während in der Vergangenheit die Microsoft-Werkzeuge besser für kleinere Entwicklungen und weniger für größere Unternehmensanwendungen geeignet waren, könnte sich das in der Zukunft auch bei letzteren verbessern. Microsoft engagiert sich nämlich zunehmend in Partnerschaften mit großen IT-Dienstleistern und bietet selbst zunehmend Dienste in diesem Bereich an. Wiederverwendung und Wartung In diesem Bereich liegen noch recht wenig Erfahrungen vor. Wiederverwendung wird erleichtert durch eine plattformübergreifend unterstützte Komponententechnologie - den Webservices. Im Vergleich zu Visual Studio 6.0 und ASP hat sich die Wartbarkeit der Präsentationsschicht deutlich verbessert. Die Performanz der .NET Framework-Umgebung ist noch Gegenstand von Optimierungen. Daher exisitieren noch keine offiziellen Benchmarks. Da das komfortable Speichermanagement und andere Aspekte der Ausführungsumgebung Java sehr ähnlich sind, kann man ähnliche Werte erwarten. Anzumerken ist, dass ASP-Seiten bei Bedarf kompiliert werden (also nach dem Deployment), was ihre Ausführung bei zukünftigen Aufrufen beschleunigt. Anpassbarkeit Fertige Projekte unter .NET sollten in allen anderen Umgebungen (mit .NET Framework) ebenfalls ohne größe Änderungen lauffähig sein. Dokumentation Das Framework ermöglicht das Kommentieren von Methoden und Klassen. Dabei werden dem Benutzer jeweils Vorlagen an die Hand gegeben, die dieser mit den entsprechenden Inhalten (Parameter, Exceptions, Ausgaben usw.) füllen muss. Aus diesen Kommentaren im Quelltext kann automatisch eine Dokumentation im HTML-Stil erzeugt werden. Fehlerentdeckung Im Fehlerfall gibt der Server die Inhalt des Programmstacks mit allgemeinen Fehlerhinweisen aus. Diese Angaben helfen jedoch nicht immer und sind nicht so ausführlich wie man sich das als Entwickler wünschen könnte. Kommentare Soweit Visual Studio .NET automatische Codeabschnitte einfügt, erzeugt es auch entsprechende Kommentare. Die gesamten vorhandenen Klassen des Frameworks sind dokumentiert. Diese Dokumentation kann in einem Art HTML-Stil eingesehen werden. Konfigurationsmanagement Assemblies erlauben ein fehlerfreieres Upgrade von Komponenten. So können mehrere Versionen einer Komponente auf einem System installiert sein und werden automatisch gemanagt. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 23 Produkte Portabilität Gut, solange die .NET Plattform nicht verlassen wird. Sie soll zukünftig unter verschiedenen Systemgrößen, vom Smartphone bis zur Mehrprozessor-64-bitMaschine zur Verfügung stehen. Portabilität von .NET ist quasi unmöglich, da die verwendeten APIs sehr umfangreich sind. 3.1.1.10Sonstiges. Tabelle 9..........................................................Übergreifende Qualitätsmerkmale Einführung der Umgebung Schulungen werden angeboten. Support Von verschiedenen Anbietern. Anleitung Ausführliche Dokumentation aller Klassen und deren Methoden sowie BeispielQuelltexte sind vorhanden. Erfahrungen Foren sind in Fülle vorhanden. Neben den von Microsoft moderierten MSDNForen und der MSDN-Bibliothek gibt es auch viele freie Foren in verschiedenen Sprachen. Hilfesystem Visual Studio .NET enthält (zusätzlich zur Dokumentation des Frameworks) eine Hilfefunktion für die Benutzung der Programmierumgebung. Allerdings muss man hier aus einer alphabetischen Indexliste das gewünschte Thema aussuchen. 3.1.2 Investitionssicherheit - Betriebswirtschaftliche Sicht 3.1.2.1 Integration von Geschäftsprozessen Tabelle 10................................................................................................................. SCM-Intelligenz CRM-Intelligenz Hierfür gibt es noch wenig Unterstützung. .NET wird auch noch nicht als Integrationsplattform wie Java eingesetzt. Integration existierender Applikationen Z.B. über XML, Webservices Geschäftsprozeßmodellierung Im Rahmen des Biztalk Server (unter dem Stichwort Orchestration) - nicht Teil des Standard .NET Frameworks Datenintegration Über verschiedene Datenbankschnittstellen, von ODBC bis ADO.NET 3.1.2.2 Plattform & Technologie Das .NET Framework steht im Moment nur auf Windows zur Verfügung. Entwicklungen für Linux sind im Gange, aber noch nicht einsetzbar. Einmalig ist die Möglichkeit, verschiedene Programmiersprachen zu kombinieren. Mitgeliefert werden C++, C# und Visual Basic, es existieren Compiler für u.a. COBOL, Eiffel und Perl. Allerdings sind bereits vorhande Programme aufgrund der unterschiedlichen APIs nicht direkt einsetzbar. Für Java existieren Migrationswerkzeuge. 24 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte 3.1.2.3 Herstellerunterstützung Da Microsoft nicht nur Plattformen wie Windows und .NET, sondern auch viele Applikationen selbst herstellt, ist die ständige Weiterentwicklung der Plattform gesichert. Mit MSDN steht die mit am besten geführte Entwickler-Community zur Verfügung. Tabelle 11 ................................................................................................................. Entwicklungskosten Betriebskosten Lizenzkosten / Lizenzmodelle Alle Java-Spezifikationen und -Technologien sind kostenlos verfügbar. J2EEServerpreise variieren. Open Source ist ebenfalls dabei. 3.1.2.4 Standards .NET integriert praktisch alle von Microsoft propagierten DeFacto-Standards. Zusätzlich ist zu erwähnen, dass alle Webservice-Standards auch von anderen Herstellern unterstützt werden: Dazu gehören die UDDI-Mitglieder IBM und Ariba, aber auch Sun und Oracle. Die neue Programmiersprache C# ist bei der ECMA, einem ursprünglich europäisch orientierten, jetzt weltweit agierenden freien Industriekonsortium, als Standard verabschiedet. 3.1.3 Installation und Betrieb In diesem Bereich liegen noch recht wenig praktische Erfahrungen vor. Zu erwähnen ist der AssemblyMechanismus, der das Upgrade von Komponenten unterstützt. Dadurch können ältere Anwendungen ältere Versionen der Komponente weiterhin benutzen, während neue Anwendungen die neue Version benutzen. Für das Monitoring des Webserver-Betriebs gibt es eine gesondert zu erwerbende Anwendunge, das Application Center. 3.2 Bewertung JBOSS 2.4.0 mit TOMCAT 3.2.3 JBOSS ist eine Open-Source Implementierung von J2EE [www.jboss.org]. Von Vorteil ist genau dies die Unterstützung von J2EE - , denn damit sind viele unserer Anforderungskriterien bereits abgedeckt. Allerdings sind folgende Nachteile zu beachten: Das Produkt verfügt nur über eine eingeschränkte Werkzeugunterstützung (z.B. keine integrierte IDE, keine Assistenten/Wizards). Das bedeutet, dass relativ viel “von Hand“ gemacht werden muss, was sich negativ auf die Produktivität und damit auf die Entwicklungskosten auswirkt. Bzgl. Fehlertoleranz und Performance bietet JBOSS keine bzw. nur eingeschränkte Mechanismen (z.B. kein Load-Balancing). Deswegen sollte JBOSS nicht für unternehmenskritische Anwendungen eingesetzt werden. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 25 Produkte 3.2.1 Technische Funktionalität - Entwicklersicht 3.2.1.1 UserInformation Management Tabelle 12................................................................................................................. BenutzerkontenverwalKeine integrierte Benutzerverwaltung. Sie ist von den eingesetzten Mechanismen für tung / Benutzerdatenbank. Sicherheit und Personalisierung abhängig. Regeln Die Definition von Sicherheitsregeln ist möglich. 3.2.1.2 Access Management Tabelle 13................................................................................................................. Authentifizierung Ja. Verschiedene Mechanismen sind angeboten (Plain Text, Secure Remote Password Protocol) Rechtevergabe / Autorisierung Ja, durch JAAS. 3.2.1.3 Information Preparation Integrierter Webserver JBoss hat einen eigenen Webserver. Seine Aufgabe ist, das dynamische Laden von Klassen mit RMI zu vereinfachen und daher ist er nicht als Hauptserver zu benutzen. JBoss bietet aucheinen HTML-Adaptor für Administrtation mittels JMX an. Tomcat verfügt auch über einen integrierten Webserver. Der ist eher für Testzwecke geeignet. Anbindung mit anderen Webservern wird empfohlen. Das Interface mit IIS, Netscape und Apache wird beschrieben. Integrierter Webcontainer / Anbindung externer Webcontainer möglich Tomcat und Jolt. Optimierung für Lesezugriffe Mit Nutzung externer Mittel möglich (z.B. Apache-Webserver für HTML-Caching) Automatisierte Inhaltsauf- Servlets und JSPs. Eine HTML-basierte JMX-Konsole wird automatisch vom Server bereitung generiert. Unterstützung verschiede- XML ner Datenformate Browser-Unabhängigkeit Nein Generierung von Webseiten aus Datenbanken Nein Erstellung einer Site Map Nein Erstellung eines Inhaltsverzeichnises Nein Erstellung alphabetisches Register Nein Suchmaschine Nein Internationalisierung. Ja. Servlets können die vom Browser akzeptierten Sprachen abfragen und entsprechende Ressourcen liefern. 26 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte Generierung von Grafiken. Nein Vermeidung ungültiger Links Nein Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 27 Produkte 3.2.1.4 SessionManagement Tabelle 14................................................................................................................. Freie Auswahl zwischen Session-Datenspeicherung auf der Client- und auf der Server-Seite Sessions sind mit Servlets und Stateful Beans zu handhaben. Mit Servlets werden Sessions standardmäßig mit Cookies identifiziert und die Daten werden im WebserverProzeß gehalten. Dabei können Session-Daten auch im URL übergeben werden. Verschiedene Strategien für server-seitige Sessiondatenspeicherung Standardmäßig werden die Sessiondaten im Serverprozess gespeichert und bei Passivierung (von Stateful Beans) auf der Festplatte. Übergabe der Sessiondaten im URL wird ebenfalls unterstützt. Management des Abbruchs einer Sitzung Möglich (z.B. durch die Methode ejbRemove) Definition der Länge der Time-Out-Periode Ja Trennung des Session Daten von Session Management Prozess Bei Passivierung ja. Ansosnten werden die Daten im Cache gehalten und gehen bei Absturz verloren. 3.2.1.5 Transaction Management Tabelle 15................................................................................................................. Automatisierte Transaktionsverwaltung Ja Implementierung eigener Transaktionsmechanismen möglich Ja Verschiedene Isolationsstufen Ja Unterstützung Optimistischer/Pessimistischer Updates Bei CMP werden Pessimistische Updates eingesetzt. Optimistische Updates sind mittels BMP zu erreichen. Ersatzmechanismen / Unterstützung für langlaufende Transaktionen Nein. Status-Überwachung Nicht automatisch. Allerdings möglich durch JMX. TransactionManager ist ein MBean. Unterstützung verteilter Transaktionen Durch JTS/JTA 3.2.1.6 Web Presentation Tabelle 16................................................................................................................. HTML-Editor Nein Erzeugung von JavaApplets und/oder ActiveX-Steuerelementen Nein 28 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte Tabelle 16 ................................................................................................................. Definition von Seitenmodellen für Fehlermeldungen Teilweise möglich durch das Editieren von Property Files. Diese Files definieren das Aussehen von Fehlermeldungen. Ansonsten bieten sich die Fehlerseiten, die mit Hilfe des JSP Tags <%@ page errorPage="file_name" %> bestimmt werden. 3.2.1.7 Datenbanken / Legacy-Systeme Tabelle 17 ................................................................................................................. Zusammenarbeit mit verschiedenen Datenbanken Durch JDBC (Treiber mit und ohne XA-Interfaces unterstützt) Werkzeuge zur DBAnbindung Nein, es werden XML-Dateien genutzt, die von Hand editiert werden. Strategien zur DB-Anbindung Es sind verschiedene Optionen für transaktionale Operationen angeboten (Caching, Ohne Caching, Lazy Read) Integrierte Datenbank Nein. Allerdings werden Hypersonic und InstantDB mitgeliefert. Einheitliche Daten Einheitlicher Zugriff auf Datenquellen mittels JDBC. Kein Datamerge. Zugriff auf ODBMS Im Aufbau (Castor Projekt) Zugriff auf existierende Anwendungen Das JBossCX Project hat als Ziel, eine Implementierung des JBoss-Seite der JCASpezifikation Zugriff auf Mainframes Nein Datenauswertung Nein 3.2.1.8 Sicherheit Tabelle 18 ................................................................................................................. Vertraulichkeit Mittels JAAS Integrität Nachrichtenintegrität kann durch die Nutzung von Signaturen gewährleistet werden. Datenintegrität ist mit Transaktionen zu erreichen. Non-repudiation Mit Logging. Erweiterung des Standard-Logging ist allerdings nötig. Administration der Sicher- Durch das Editieren von Deployment Descriptors und Property Files. heitspolitik Deklaration von Sicherheitsattributen zu verschiedenen Zeitpunkten Nur zur Deployment-Zeit werden die Sicherheitsattribute gesetzt. 3.2.1.9 Unterstützung eines effizienten Entwicklungsprozesses Tabelle 19 ................... Qualitäten für die Implementierung der Business-Logik Assistenten Copyright Nein Fraunhofer IESE / Forschungszentrum Informatik 2001 29 Produkte Tabelle 19....................Qualitäten für die Implementierung der Business-Logik Beispielapplikationen JBoss stellt folgende Beispielapplikationen zur Verfügung • Stateless Session Bean zur Zinsenberechnung • 2 CMP Entity Beans • Jaas Beispiel mit gesichertem Servlet und zwei einfachen Session Beans (stateless und stateful) Zudem bietet Tomcat eine Reihe von Beispiel-JSPs und -Servlets an. Bei JBoss wird nur ein Teil in der Dokumentation behandelt. Ganz ohne Aufwand sind die Beispiele nicht laufen zu lassen.. Bei Tomcat sind alle Beispiele sofort lauffähig und meistens selbsterklärend.. Code-Editor Nein. Debugger Nur als Teil des Logging-Services für SQL-Debugging. Ansonsten ist Debugging durch Integration externer IDE möglich. Erweiterbarkeit Die Integration selbstgebauter Plugins (z.B Interceptor-Dienste) ist möglich. Integration der IDE Keine integrierte IDE. Anbindung mit JBuilder, Forte und Visual Age wird in der Dokumentation behandelt. Management von Benutzerprofilen Nein Modularität Ja Programmiersprachentransparenz Java ist die Hauptprogrammiersprache. Features von Java wie RMI-IIOP können die transparente Anbindung mit anderen Sprachen ermöglichen. Services Trennung Business Logik / Data, Data Access Logik Ja, durch Entity Beans und JDO (im Aufbau). JDBC kann ebenfalls eingesetzt werden, wenn Bulky Reads gewünscht sind. Trennung Business Logik / Präsentation Das MVC-Pattern wird mit Hilfe von JSPs unterstützt. Nutzung von XML/XSLT ist ebenfalls möglich. Versionierung Mit externen Tools wie CVS Vollständige Dokumentation Die Online-Dokumentation von JBoss ist gut. Allersdings an manchen Stellen unvollständig. Zum Beispiel sind nicht alle Property-Files erklärt. Die mitgelieferte Dokumentation hat Mängel. Es wird zum Beispiel von einem XML-Editor gesprochen, der nicht vorhanden ist. Es gibt auch eine “printable” Version der Dokumentation, als großes HTML Dokument (ca. 330 Seiten), das heruntergeladen werden kann. Die Tomcat-Dokumentation scheint ausreichend zu sein. Änderbarkeit Vorgefertigte Lösungen wie Interceptor-Services sind änderbar durch Auseinandersetzung mit dem Quellcode oder in manchen Fällen mit den Konfigurationsdateien. Übersichtliche Darstellung der Applikationskomponenten Teilweise gibt es entrsprechende Diagramme. Tabelle 20............................................................................................... Marketing Analyse 30 Für die Analyse von Zugriffsdaten stehen Log Files zur Verfügung. Eine Erweiterung ist allerdings für Detailanalysen nötig. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte Tabelle 20 ............................................................................................... Marketing Momentan laufen mehrere Projekte, die die Erweiterung von JBoss als Ziel haben. Reaktion des Hersteller auf Trends / Unterstützung Messaging, Connectors, und SOAP sind einige der angestrebten Verbesserungen. durch Add Ons Wiederverwendung und Wartung Tabelle 21 .................................................. Dimensionen der Wiederverwendung Wiederverwendbare Artefakte Zur Wiederverwendung stehen der JBoss-Quellcode und die mitgelieferten Beispielapplikationen zur Verfügung. Abstraktion Entwickler müssen sich mit den Javadocs oder den Code-Kommentaren auseinandersetzen, um wiederverwendbare Funktionalität zu erkennen. Für die Beispielapplikationen gibt es Online-Beschreibungen und Code-Kommentare. Auswahl Detailierte Kommentare in den Javadocs sind oft nicht vorhanden, was die Auswahl schwierig macht. Spezialisierung Unter anderem mit Vererbung und overloaded Constructors. Integration Einfach Tabelle 22 .................................................... Qualitätsmerkmale für die Wartung Anpassbarkeit Entwickelte Beans sind in andere EJB-Applikationsserver anpassbar. Keine WORA-Gewährleistung, da JBoss nicht zertifiziert ist. Dokumentation Javadoc kann eingesetzt werden. Einfluß von Änderungen Nein, da keine IDE integriert ist. Änderungen sind erst bei Deployment zu erkennen. Fehlerentdeckung Fehlermeldungen, die der JBoss-Server erzeugt, sind Java Exceptions. Die JBossspezifische Exceptions sind minimal dokumentiert. Kommentare Es wird kein Code generiert. Der Quellcode ist mit javadoc dokumentiert.. Konfigurationsmanagement Nein. Portabilität wurde nicht untersucht Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 31 Produkte 3.2.1.10Benutzbarkeit Tabelle 23............................................................................................. Performanz Asynchrone Aufrufe Ja. Caching Ja Data Merge Nein Garbage Collection Ja Kompilierung JIT für Servlets und EJBs. Laden prekompilierter JSPs. Load Balancing Nein Logging-Service konfigurierbar Teilweise Message Queuing Ja Monitoring Im Aufbau Programmieren für Parallelität Ja (Java) Service-Deaktivierung Ja Stored Procedures Ja (durch JDBC) Tuned Updates Ja (es werden nur die DB-Felder aktualisiert, die eigentlich geändert wurden) Tuning Möglich, Neustart ist oft erforderlich. Vererbung Dynamisch Verschiedene Isolationsstufen für Transaktionen Ja Zusammenhang Performanz - eingesetzes Betriebssystem Wesentliche Performanzunterschiede zwischen Windows- und Linux-Installationen bei steigenden Clienzugriffen (auf Linux Threading Mechanismus zurückzuführen) 3.2.1.11Sonstiges Tabelle 24........................................................Übergreifende Qualitätsmerkmale Einführung der Umgebung Schulungen werden angeboten. Support Technischer Support wird gegen Gebühr angeboten. Anleitung Teilweise. Erfahrungen Foren und Mailing-Listen stehen kostenlos zur Verfügung Hilfesystem Nein 32 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte 3.2.2 Investitionssicherheit - Betriebswirtschaftliche Sicht 3.2.2.1 Integration von Geschäftsprozessen Tabelle 25 ................................................................................................................. SCM-Intelligenz Messaging als zugrundeliegende Technologie wird im Projekt JBossMQ behandelt CRM-Intelligenz Nein Web Services Die JBoss ZOAP Project soll die Implementierung von Web Services mit JBoss ermöglichen. Integration existierender Applikationen JBossCX Project Geschäftsprozeßmodellierung Nein Datenintegration Mittles JDBC oder Java Data Objects im Castor Project 3.2.2.2 Plattform & Technologie Tabelle 26 ................................................................................................................. Hardware Keine Einschränkungen für die eingesetzte Hardware Betriebssystem unabhängig Komponententechnologie EJB Programmiersprachen Java 3.2.2.3 Herstellerunterstützung Table 27: Bestehende Beziehung zur Herstellerfirma Unternehmensspezifisch Regionale Unterstützung Trainings vor Ort möglich. Beiträger weltweit zu kontaktieren. Freigabemuster Open Source Popularität Gut wegen Open Source and EJB Firmenstabilität keine Aussage möglich 3.2.2.4 Kosten Table 28: Entwicklungskosten Negativ wirkt sich die eingeschränkte Werkzeugunterstützung aus (IDE, Assistenten) aus. Ansonsten projektabhängig. Betriebskosten Wartung wird erschwert durch unvollständige Dokumentation, kostenlose Lizenz, Installation, Hardwarekosten/-anforderungen vergleichbar mit anderen Produkten. Lizenzkosten / Lizenzmodell Produkt ist kostenlos zu bekommen. Support und Training nicht. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 33 Produkte 3.2.2.5 Unterstützung von Industriestandards. Tabelle 29.............................................................................. App2Web-Standards Businesskommunikation Nein Middleware EJB Sicherheit JAAS, Secure Remote Password(SRP) Protocol Management / Administration JMX Namensdienste JNDI Dynamische Inhaltsgenerierung Servlets (bei Nutzung von Tomcat oder anderer Web Container) Dynamische Webseiten JSP Datenformate HTML,XML Webservices SOAP (im Aufbau: JBOSS/ZOAP Project) 3.2.2.6 Zertifizierung Keine Zertifizierung 3.2.3 Unterstützung bei Installation und Betrieb 3.2.3.1 Skalierbarkeit Tabelle 30................................................................................................................. Clustering Nein Ressource Pooling Ja Lastverlagerung auf Client-Seite Ja (dynamische Proxies auf Client-Seite) 3.2.3.2 24/7-Betrieb Tabelle 31................................................................................................................. Fehlertoleranz Nein Automatisches Deployment Ja 3.2.3.3 Einfache Installation Die Installation von JBoss ist einfach und erfolgt auch auf Rechnern mit knappen Ressourcen (z.B. Pentium II mit 64MB RAM und 10GB Plattenspeicher). Die Nutzung der ant Utility (möglicherweise in Kombination mit dem EJX Editor) erleichtert wesentlich das Deployment von Beans. Nach Installation werden zahlreiche Property Files zur Konfiguration des Servers erzeugt. Die Einträge in diesen Files sind nicht 100% dokumentiert. 34 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte 3.3 Bewertung LAMP Unter LAMP versteht man die Kombination aus dem Betriebssystem Linux, dem Apache Web-Server, der Datenbank MySQL und der Skriptsprache PHP (oder auch Perl). Diese Technologien sind gut aufeinander abgestimmt und werden in Zigtausenden, vor allem kleineren Webpräsenzen verwendet. Sie zeichnen sich durch offenen Quellcode und geringe Kosten aus. Die Nutzung von MySQL für kommerzielle Zwecke ist lizenzpflichtig, während Linux, Apache und PHP lizenzfrei sind. Bei vielen Providern kann man inzwischen Webpräsenzen aufbauend auf diesen Technologien auf bestehenden Servern laufen lassen, d.h. ohne einen ganzen Server zu mieten. Für exotische Anforderungen oder Forschungsprototypen sind die Technologien aufgrund des offenen Quellcodes interessant, der im Notfall Anpassungen erlaubt. Während Stabilität und Performance bei einfacheren, kleinen Webpräsenzen äußerst gut sind, ist der Ansatz weniger für komplexe Geschäftsanwendungen geeignet und unterstützt Lastverteilung und Failover nur mäßig. 3.3.1 Technische Funktionalität- Entwicklersicht Allgemein läßt sich sagen, dass für alle verwendeten Standards und alle wesentliche Betriebssystem- und Webserver-Funktionen komfortable Bibliotheken zur Verfügung stehen. Für typische Aufgaben bei der Entwicklung von Webseiten wie komplexe HTML-Controls gibt es dagegen meistens keine Bibliotheken und schon gar keine Unterstützung durch die Entwicklungsumgebung. Dieser Mangel wird dadurch etwas gemildert, dass aufgrund der großen Verbreitung eine Vielzahl von Code-Schnipseln auf dem Web zur Verfügung stehen. 3.3.1.1 Zum User Information Management und Access Management Für das Verwalten von Benutzerkonten gibt es keine besonderen Bibliotheken. Für das Access Management bietet der Apache Server einige Mechanismen, wie SSL und die Verwaltung von Sessions. Optimierung für Lesezugriffe Der Apache-Webserver kann für statische Webseiten als Caching-Proxy arbeiten. Zum cachen von dynamischen PHP Seiten hat die Firma Zend Technologies den Zend Accelerator sowie den Zend Optimizer entwickelt. Automatisierte Inhaltsauf- Dynamische Daten wie Datenbankfelder werden einfach in HTML-Seiten einfügt bereitung (spezielle Tags kennzeichnen den dynamischen Teil.) Unterstützung verschiede- Bibliothek zur Erzeugung von PDF Dateien wird mitgeliefert ner Datenformate Die Erzeugung von XML-Daten ist prinzipiell möglich und wird durch funktionen zum Parsen von XML-Daten und unterstützung für XSLT Zur Erzeugung von Postscript-Dateien existiert die freie Bibliothek pslib. (http:// pslib.sourceforge.net/) Erstellung ortsabhängiger Anwendungen Keine besondere Unterstützung. Erstellung von endgeräte- Die von PHP erzeugeten Seiten sind nicht auf HTML beschränkt. Es ist z.B. durchaus abhängigen Anwendungen möglich, WML-Seiten zu liefern. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 35 Produkte Erstellung von browserun- PHP ist nicht darauf angewiesen, dass ein gewisser Mindestumfang an HTML unterabhängigen Anwendungen stützt werden muss. Um mehrere Möglichkeiten anbieten zu können, besteht die Möglichkeit z.B. den verwendeten Browser abzufragen. Erstellung von bandbreitenunabhängigen Anwendungen Auch dieser Punkt hängt letztendlich nur davon ab, was für Webseiten der Entwickler generieren lässt. Generierung von Webseiten aus Datenbanken Ist problemlos möglich, da auf die MySQL-Datenbank mit SQL-Standard Befehlen zugegriffen werden kann. Erstellung einer Site Map Nicht enthalten; für statisches HTML existieren diverse freie Tools. Erstellung eines Inhaltsverzeichnises Nicht enthalten; für statisches HTML existieren diverse freie Tools. Erstellung alphabetisches Register Nicht enthalten; für statisches HTML existieren diverse freie Tools. Suchmaschine Für statisches HTML existieren diverse fertige Tools wie z.B. ht://Dig. Für den Zugriff auf die Funktionalität der freiden Suchmaschine mnoGoSearch (http:// www.mnogosearch.ru/) (früher UdmSearch) ist eine Sammlung von Funktionen im Lieferumfang von PHP bereits enthalten. Unterstützung mehrerer Sprachen Ja. Der Webserver Apache unterstützt eine sprachabhängige Rücklieferung von Webseiten. PHP unterstützt die NLS (Native Language Support)-API Generation von Grafiken, die statistische Graphen enthalten Mit Hilfe der gdlib können Bitmaps in diversen Formaten (JPG, BMP, PNG uvm.)dynamisch generiert werden. Vermeidung ungültiger Links Nicht enthalten 3.3.1.2 Session Management Freie Auswahl zwischen Session-Datenspeicherung auf der Client- und auf der Server-Seite Die Daten können in der URL kodiert, als Cookie oder in der Datenbank mit Hilf einer Session-ID gespeichert werden. Definition der Länge der Time-Out-Periode Ja Management des Abbruchs einer Sitzung Ja. 3.3.1.3 Zum Transaction Management MySQL unterstützt bis auf die neueste Version (4.0) keine Transaktionen. Bei MySQL 4.0 kann man zwischen einer Variante mit Transaktionen und einer wesentlich schnelleren Variante ohne Transaktionen wählen. Insgesamt sind die APIs und die Sprachen PHP und Perl nicht auf Transaktionsverarbeitung ausgerichtet. Insbesondere werden keine verteilten Transaktionen unterstützt. 36 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte 3.3.1.4 Web Presentation HTML-Editor Im Paket ist kein Editor enthalten, allerdings können die meisten verfügbaren 3rdParty Produkte, die ASP untertützen auch mit PHP verwendet werden. Erzeugung von JavaApplets und/oder ActiveX-Steuerelementen Nicht möglich. Definition von Seitenmodellen für Fehlermeldungen Ja. 3.3.1.5 Datenbanken / Legacy-Systeme Zusammenarbeit mit verschiedenen Datenbanken Funktionen für den Zugriff auf MySQL, MSQL, Oracle 8, PostgresSQL, MS-SQL, Sybase, Informix, Interbase, Ingres II, Sesam, Frontbase, Filepro (read-only), DBFDateien Integrierte Datenbank MySQL Zugriff auf existierende Anwendungen Systemaufrufe und Java-Methodenaufrufe möglich Zugriff auf Mainframes Keine besondere Unterstützung. Datenauswertung Keine besondere Unterstützung. 3.3.1.6 Sicherheit Vertraulichkeit SSL-Unterstützung im Webserver Apache und Funktionen für PHP-Skripte Integrität Nicht im Standardumfang enthalten. Authentisierung Nicht im Standardumfang enthalten. Administration der Sicher- Nicht im Standardumfang enthalten. heitspolitik 3.3.1.7 Unterstützung eines effizienten Entwicklungsprozesses Integration der IDE Es wird keine IDE mitgeliefert. Allerdings existieren diverse Lösungen von Drittanbietern wie Zend IDE oder PHPCoder. Management von Benutzerprofilen Nicht im Standardumfang enthalten. Versionierung Nicht im Standardumfang enthalten. Änderbarkeit Nicht im Standardumfang enthalten. Modularität Wenig Unterstützung. Vollständige Dokumentation Vorhanden, auch online mit Kommentaren von anderen Entwicklern. Beispielapplikationen Über große Community im Internet verfügbar. Übersichtliche Darstellung der Applikationskomponenten Nein. Code-Editor Kein Code-Editor mitgeliefert. Aber diverse Editoren von Drittanbietern auf dem Markt. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 37 Produkte Assistenten Keine Assistenten. Debugger Debugging-Unterstützung integriert. Externe Debugger in den 3rd-Party IDE's integriert. Programmiersprachentransparenz PHP ist eigene Programmiersprache mit Elementen aus Perl, Java und C. Insgesamt ist LAMP nicht für die Entwicklung von komplexerer Fachlogik geeignet. Wiederverwendung und Wartung Insgesamt unterstüzt der LAMP-Ansatz an sich keine saubere Trennung zwischen Präsenationsdesign und fachlicher Logik. Diese Trennung kann nur durch Codierungsdisziplin erzeugt werden. PHP und Perl haben als Sprachen ein sehr heterogenes Design mit einer Mischung von funktionalen, prozeduralen und objektorienten Elementen. Das macht die Entwicklung von Styleguides schwierig und erschwert zum Beispiel den Einsatz teilautomatisierter Refactoring-Werkzeuge. Kommentare Keine automatische Generierung von Kommentaren Dokumentation nicht standardmässig enthalten Fehlerentdeckung Nein. Anpassbarkeit Die erstellte Software lässt sich relativ problemlos z.B. auf ein Windows-System anpassen. Einfluß von Änderungen Ja. Konfigurationsmanagement Nein. 3.3.1.8 Benutzbarkeit Die Entwicklung erfolgt vor allem mit einem üblichen Texteditor. Insbesondere fehlen Werkzeuge zur komfortablen Erstellung von Webseiten mit Skriptanteilen sowie visuelle Debugging-Werkzeuge. 3.3.1.9 Sonstiges Einführung der Umgebung Schulungen von Drittanbietern. Support Große Entwicklergemeinschaft im Internet. Hilfe über Newsgroups und Webseiten. Support gegen Entgelt von Dienstleistern Anleitung Nein. Erfahrungen Im WWW. Hilfesystem Auführliche Dokumentation; Bei Bedarf auch mit Anmerkungen anderer Entwickler. 3.3.2 Investitionssicherheit - Betriebswirtschaftliche Sicht Bei der sehr weiten Verbreitung der Werkzeuge, sowohl was laufende Applikationen angeht, als auch was verfügbare Entwickler angeht, ist davon auszugehen, dass die Plattform laufend weiterentwickelt 38 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Produkte wird. Gerade für den Apache Webserver exisitieren außer den erwähnten Werkzeugen noch eine Vielzahl von frei verfügbaren Erweiterungsmöglichkeiten. Bei den Lizenzkosten ist der LAMP-Ansatz konkurrenzlos günstig. Gerade bei kleineren Lösungen, die bei einer Vielzahl von Kunden zum Einsatz kommen sollen, kann das entscheidend sein. 3.3.2.1 Gesamtqualitäten Tabelle 32 ......................................Gesamtqualitäten von Standardumgebungen Hardware Geringe Anforderungen an die Hardware (Standard-Intel System), aber auch Unterstützung z.B. für MP-Systeme. Betriebssystem Normalerweise auf Basis von Linux. Aber auch für Windows und diverse UnixDerivate erhältlich. Komponentenmodelle CORBA-Unterstützung durch Erweiterungen (z.B. Satellite). Nach unseren Informationen noch nicht sehr stabil. Für Webservices gibt es lauffähige Unterstützung. GeschäftsprozeßIntegration Keine Unterstützung. SCM-Intelligenz Keine Unterstützung. CRM-Intelligenz Keine Unterstützung. Web Services Werden grundsätzlich unterstützt. Integration existierender Applikationen Keine besondere Unterstützung. Datenintegration Keine Unterstützung. Regionale Unterstützung Nein. Freigabemuster Nein. Popularität Sehr populär, da freies Produkt. Firmenstabilität nicht abhängig von einer Firma Kosten frei (Open-Source). MySQL bei kommerziellen Anwendungen lizenzpflichtig, im Moment 230 Euro pro Server. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 39 Abschliessende Beurteilung 3.3.3 Unterstützung bei Installation und Betrieb 3.3.3.1 Skalierbarkeit Tabelle 33......................................................................................... Skalierbarkeit Clustering Nein. Ressource Pooling Nein. Lastverlagerung auf Client-Seite Nein. 3.3.3.2 24/7-Betrieb Für die Ausfallsicherheit im 24/7-Betrieb gibt es keine besondere Unterstützung. 3.3.3.3 Einfache Installation Fortgeschrittene Kenntnisse über Betriebssystem und Webserver sind für die Installation erforderlich. Dies wird dadurch etwas gemildert, dass die Komponenten von Providern oft schon vorinstalliert sind. 4 Abschliessende Beurteilung Fazit unserer Beurteilung ist, dass mit LAMP, .NET und J2EE drei Umgebungen zur Verfügung stehen, die in unterschiedlichen Bereichen Stärken und Schwächen haben. Alle Technologien unterliegen starker Evolution und daher können Empfehlungen nur mittelfristig abgegeben werden. Unter der Berücksichtigung der in einem separaten Dokument aufgestellten Referenzarchitekturen läßt sich sagen: Der LAMP-Ansatz ist für die Realisierung von Prototypen und Kleinprojekten geeignet. Sowohl komplexere, transaktionsorientierte Anwendungen als auch hohe Zugriffszahlen, die ein Serverclustering erforderlich machen, sollte man diesem Ansatz nicht zumuten. Bei längeren Projektlaufzeiten und hohen Qualitätsanforderungen machen sich die mangelnden Debugging-Möglichkeiten bemerkbar. Die Mehrzahl der aktuell verfügbaren Webangebote ließe sich aber über diesen Ansatz realisieren. LAMP unterstützt im Wesentlichen nur eine 2-Schichten-Architektur. Nicht zu vernachlässigen ist aber die Möglichkeit, komplexere Anwendungsteile in Modulen anderer Technologie zu realisieren und z.B. über XML in eine LAMP-gestützte Webpräsentation einzubinden. 40 Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 Abschliessende Beurteilung Der .NET-Ansatz ist der jüngste und daher auch fortschrittlichste Ansatz, sowohl was Datenzugriff als auch Entwicklung und Pflege von dynamischen Webseiten angeht. Pluspunkte sammelt .NET vor allem bei der Entwicklungsumgebung, bei den verfügbaren Bibliotheken und unterstützten Industriestandards, sowie beim Support durch MSDN und verschiedene Foren. Die Entwicklung von komplexer, transaktionaler Fachlogik wird dagegen nur sehr schwach unterstützt, die vorgegebene Architektur ist wie bei LAMP eine 2-Schichten-Architektur. Hier wird es interessant sein, zu sehen, ob Microsoft eine den EJBs entsprechende Technologie demnächst vorstellen wird. Ansonsten bietet sich aber hier wie auch bei LAMP der Integrationsansatz an. Komponenten in allen wesentlichen Technologien wie COM, CORBA und Webservices lassen sich leicht integrieren. Die Kehrseite des gewonnenen Komforts ist notwendigerweise eine Bindung an Microsoft als Hersteller. Zwar halten sich die Kosten für die Laufzeit-Lizenzen im Moment noch im Rahmen, aber bei der Entwicklung mit .NET ist man dieser Lizenzpolitik auch in Zukunft ausgeliefert. Bei J2EE hat man auf Basis der Sun-Standards die freie Auswahl unter mehreren Entwicklungs- und Laufzeitumgebungen. Dies ist zunächst ein Vorteil, aber es hat auch zur Folge, dass es für jede Umgebung entsprechend weniger Benutzer, und damit weniger Entwicklungskapazität gibt. Der hohe Entwicklungsaufwand für diese Umgebungen führt im Moment zu einer Konsolidierung im Eclipse-Projekt im Bereich der Entwicklungsumgebungen, und in einer Konzentration auf JBoss, IBM Websphere und BEA Weblogic Server im Bereich der Laufzeitumgebungen. Die Trennung von Entwicklung und Laufzeitumgebung macht die Konfiguration zu einer Aufgabe von Experten und erschwert insbesondere das Debugging. Bei den Bibliotheken steht J2EE .NET in nichts nach, wenn auch oft einige Zeit vergeht, bis zu verabschiedeten Spezifikationen stabile Implementierungen erhältlich sind. Einmalig in J2EE ist die Unterstützung der Entwicklung von Fachlogik mit den Enterprise Java Beans. Näheres dazu haben wir bereits im Dokument Stand der Technik berichtet. Hier existiert eine Fülle von Erfahrung, auf die man bei der Entwicklung zugreifen kann. J2EE ist damit der einzige Ansatz, der die Entwicklung von 3- oder 4-Schichten-Architektur explizit unterstützt. Die Kehrseite des Ansatzes ist eine hohe Komplexität, die ihn für Kleinprojekte oder Prototypen unwirtschaftlich macht. Das Ziel, den Entwickler von Überlegungen zur Transaktionssteuerung und Verwendung von knappen Serverressourcen zu entlasten, hat der Ansatz bisher sicher noch nicht erreicht. Im Gegenteil: Über nichts wird unter EJB-Entwicklern so angeregt diskutiert wie über Performance-Optimierungen. Im Prinzip lassen sich die verschiedenen Ansätze in ihren Stärken kombinieren: So wäre es z.B. denkbar, auf EJB basierende komplexe Geschäftsanwendungen per Webservice in ASP.NET-Seiten einzubinden. Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001 41 Literatur / Links 5 42 Literatur / Links [BEA-B] Online Dokumentation zu BEA Tuxedo Release 7.1, BEA Systems 2001, http://e-docs.bea.com/tuxedo/tux71/index.htm [IETF00] Internet Engineering Task Force, X.509 Authentication SASL Mechanism, http://www.ietf.org/internet-drafts/draft-ietf-ldapext-x509-sasl03.txt, Februar 2000 [ISI97] The Internet Society, Simple Authentication and Security Layer, ftp:// ftp.isi.edu/in-notes/rfc2222.txt, October 1997 [Sch01] James Schatzman, Roy Donehower, Java Performanzprobleme, Java Spektrum 5/2001 [Sun-B] Sun Microsystems, J2EE Blueprints, http://java.sun.com/j2ee/blueprints [Sun-C] J2EE Blueprints, J2EE Design Patterns, Model-View-Controller Architecture, http://java.sun.com/j2ee/blueprints/design_patterns/ model_view_controller/index.html [Sun-D] Sun Microsystems: J2EE Patterns Catalog. http://developer.java.sun.com/developer/restricted/patterns/ J2EEPatternsAtAGlance.html [Sun-E] Sun Microsystems, Java Developer Connection, Internationalization and Localization, http://developer.java.sun.com/developer/technicalArticles/Intl/ [Sun-F] Sun Microsystems, The Source for Java Technology, Java 2 Platform Enterprise Edition, http://java.sun.com/j2ee/ und Java 2 Platform Standard Edition, http://java.sun.com/j2se Copyright Fraunhofer IESE / Forschungszentrum Informatik 2001