49,99 €
Diplomarbeit aus dem Jahr 2003 im Fachbereich Informatik - Angewandte Informatik, Note: 1,0, Hochschule für angewandte Wissenschaften Augsburg, Sprache: Deutsch, Abstract: Die Diplomarbeit beschreibt die prototypische Entwicklung einer Infrastruktur und Architektur für eine Plattform zur Anbindung mobiler Endgeräte an bestehende Infrastrukturen in Unternehmen und die Erweiterung der Funktionalität der Geräte durch internetbasierte Dienste. Dazu wurde mit myEspresso.net eine modulare und erweiterbare Architektur entwickelt, die es ermöglicht, mobile Lösungen für bestehende Anwendungen schnell und flexibel zu entwickeln. Es können sowohl neue Anwendungen erstellt, als auch bestehende Infrastrukturen integriert werden. In der Diplomarbeit werden die zur Realisierung benutzten Technologien erläutert und deren Anwendung in myEspresso.net beispielhaft demonstriert. Außerdem wird auf das Design der Architektur der Applikation, unter Berücksichtigung von Entwurfsmustern, eingegangen und die Vor- und Nachteile verschiedener Architekturen beschrieben. Zuletzt wird auch die Entwicklung von J2EE Anwendungen im Team und die Probleme, die dabei auftreten können, erörtert. Es werden Werkzeuge vorgestellt, die diese Probleme vermeiden helfen und deren Anwendung bei myEspresso.net gezeigt.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Veröffentlichungsjahr: 2007
Page 1
Page 2
Autor:Torsten Straßer
Abgabesemester:SS03Themengebiet:
Desciptoren:
Zusammenfassung:
Die Diplomarbeit beschreibt die prototypische Entwicklung einer Infrastruktur und Architektur für eine Plattform zur Anbindung mobiler Endgeräte an bestehende Infrastrukturen in Unternehmen und die Erweiterung der Funktionalität der Geräte durch internetbasierte Dienste.
Dazu wurde mit myEspresso.net eine modulare und erweiterbare Architektur entwickelt, die es ermöglicht, mobile Lösungen für bestehende Anwendungen schnell und flexibel zu entwickeln. Es können sowohl neue Anwendungen erstellt, als auch bestehende Infrastrukturen integriert werden. In der Diplomarbeit werden die zur Realisierung benutzten Technologien erläutert und deren Anwendung in myEspresso.net beispielhaft demonstriert. Außerdem wird auf das Design der Architektur der Applikation, unter Berücksichtigung von Entwurfsmustern, eingegangen und die Vor- und Nachteile verschiedener Architekturen beschrieben.
Zuletzt wird auch die Entwicklung von J2EE Anwendungen im Team und die Probleme, die dabei auftreten können, erörtert. Es werden Werkzeuge vorgestellt, die diese Probleme vermeiden helfen und deren Anwendung bei myEspresso.net gezeigt.
Page 3
Page 7
1Einleitung und Übersicht
Diese Diplomarbeit beschreibt die prototypische Entwicklung einer Infrastruktur und Architektur für eine Plattform zur Anbindung mobiler Endgeräte an bestehende Infrastrukturen in Unternehmen und die Erweiterung der Funktionalität der Geräte durch internetbasierte Dienste.
Aufgrund der Größe und Komplexität teilt sich dieses Projekt in drei weitere Diplomarbeiten mit jeweils unterschiedlichen Schwerpunkten auf:
Andreas Jocham,
„Dienste- und Benutzerprofilkomponenten für Espresso, eine komponenten-orientierte Plattform zur benutzerbezogenen Anbindung von javafähigen mobilen Geräten an Informationsdienste und Geschäftsprozesse“ Hubert Schweiger,
„Die Daten-Persistenz-Schicht für Espresso, eine komponentenorientierte Platt-form zur benutzerbezogenen Anbindung von javafähigen mobilen Geräten an In-formationsdienste und Geschäftsprozesse“ Jürgen Kanzler,
„Entwurf und Programmierung einer Kommunikationsschnittstelle zwischen J2EE-Servern und SAP/R3 Systemen zum Datenaustausch für eine mobile Außendienstapplikation“
Page 8
Der Zugriff auf das Internet ist heute nicht mehr nur auf den PC eingeschränkt. Das Handy und der Organizer verschmelzen immer mehr zu einem Gerät und die neuen Netze garantieren von diesen einen fast gleichwertigen Zugang zum Internet, wie ihn auch der heimische PC bietet.
Der Benutzer kann 24 Stunden rund um die Uhr, 7 Tage die Woche, diese Dienste nutzen, egal wo er sich befindet und was er gerade tut. myEspresso.net soll nun einerseits aufzeigen, welche Wege es gibt, diesen An-forderungen gerecht zu werden, andererseits aber auch die Chance bieten, sich mit den neuesten Technologien zu befassen und ein größeres Projekt von Grund auf zu planen und realisieren.
Diese Punkte waren ausschlaggebend für die Entscheidung, dieses Projekt ohne Beteiligung einer Firma zu entwickeln, da nur so die nötige Entscheidungsfreiheit in allen Fragen des Projekts gegeben war.
Durch die Entscheidung myEspresso.net im Team zu entwickeln, bot sich auch die Möglichkeit, den Ablauf eines realen Projekts in einer Firma nachzubilden, inklusive aller Probleme die daraus entstehen können.
1.2Zielsetzung
myEspresso.net ist eine modulare und erweiterbare Architektur, die es ermöglicht, mobile Lösungen für bestehende Anwendungen schnell und flexibel zu entwickeln. Es können sowohl neue Anwendungen erstellt, als auch bestehende Infrastrukturen integriert werden.
Im Hinblick auf Anforderungen von Unternehmen wurde myEspresso.net unter folgenden Zielsetzungen entwickelt:
•Modulare Architektur, die es unnötig macht, bestehende Infrastrukturen für die mobile Anwendung zu überarbeiten.•Skalierbar, um die Erweiterbarkeit und Anpassungsfähigkeit für zukünftige Applikationen, Geräte und auch die Anzahl der Benutzer zu garantieren. myEspresso.net ist darauf ausgelegt, mit den Anforderungen zu wachsen.
•Auf Standards basierend, um Entwicklern eine geringe Einarbeitungsphase zu bieten und eine nahtlose Integration in existierende Systeme zu ermöglichen.
Primäre Zielgruppen von myEspresso.net sind Außendienstmitarbeiter, denen der ständige Zugriff auf aktuelle Daten ihrer Firma ermöglicht wird und Privatanwender, welche die Möglichkeiten ihrer Mobiltelefone erweitern wollen.
Page 9
2Voraussetzungen
In diesem Kapitel werden die Vorüberlegungen für die Entwicklung von myEspresso.net beschrieben.
Eine der wichtigsten Entscheidungen für den weiteren Verlauf der Entwicklung, ist die Wahl einer geigneten Plattform für myEspresso.net. Um diese Auswahl treffen zu können, werden im verfügbaren Plattformen kurz vorgestellt und die Kritierien der Bewertung beschrieben.
Page 10
Komponenten
Komponenten sind eigenständige und wiederverwertbare Softwarebausteine mit wohldefinierten Schnittstellen, welche ihre Implementierung nach außen verbergen.
Eine weitere, etwas ausführlichere Definition lautet:„Eine Komponente ist ein Stück Software, das klein genug ist, um es in einem Stück erzeugen und pflegen zu können, groß genug ist, um eine sinnvoll einsetzbare Funktionalität zu bieten und eine individuelle Unterstützung zu rechtfertigen, sowie mit standardisierten Schnittstellen ausgestattet ist, um mit anderen Komponenten zusammenzuarbeiten.“2
Laufzeitumgebung
Komponenten können nicht für sich alleine existieren, sondern müssen in eine Laufzeitumgebung„deployed“,das heißt eingebunden werden. Diese Laufzeitumgebung wird als„Container“bezeichnet und ist die Grundlage einer komponentenorientierten Architektur. Der Container stellt die Funktionalität zur Verfügung, die für die Ausführung der Komponenten benötigt wird. Beispiele hierfür sind:•Thread- und Prozeßmanagement•Clustering und Lastverteilung•Ausfallsicherheit•Namens- und Verzeichnisdienst
•Zugriffsmöglichkeiten und Pooling von Betriebssystemressourcen (z. B. Netzwerk-Sockets)
Deshalb:
Die Idee der komponentenbasierten Softwareentwicklung ist es, die Komponenten möglichst einfach und flexibel zu halten, um sie möglichst oft wiederverwenden zu können.
Die Entwicklungszeit soll durch Wiederverwendung oder durch Zukauf von fertigen, standardisierten Komponenten reduziert und somit auch die Fehlerhäufigkeit verringert werden.
Ein weiterer Vorteil ist, daß Komponenten eine genau spezifizierte Aufgabe haben und sich nicht um weitere Belange kümmern müssen. Dies wiederum ermöglicht es dem Entwickler, sich ausschließlich auf sein Spezialgebiet zu
Page 11
konzentrieren.
Page 12
Die fertige Komponente wird dann mit anderen in einen Container „deployed“, der die Ablaufumgebung für diese zur Verfügung stellt und die verschieden Dienste wie Persistenz oder Transaktionsmanagement enthält. Applikationen können dann im besten Fall aus vielen bestehenden Komponenten „zusammengestellt“ werden. So muß nur noch das Zusammenspiel dieser programmiert werden.
Plattformen
2.1.2Komponentenorientierte
Um die Zielsetzungen von myEspresso.net zu erreichen, ist es nötig, eine geeignete Umgebung für das Projekt zu wählen. Vorgaben wie Modularität und Skalierbarkeit verlangen hier eine stark komponentenorientierte Plattform, da nur eine solche die benötigten Dienste wie Transaktionen, Persistenz, Sicherheit, usw., für die Realisierung eines solchen Projektes bereitstellt. Auf dem Markt haben sich im Moment folgende zwei Plattformen etabliert:•Microsoft .NET•Sun J2EE
Microsoft .NET3
Microsoft .NET ist ein Produkt, welches es ermöglicht, intelligente Enterprise-Web Services zu erstellen. Es ist größtenteils eine Wiederauflage von Windows DNA (Distributed Net Application Architecture), Microsoft's vorhergehender Plattform für die Entwicklung von Enterprise Anwendungen. Windows DNA verfügt über viele bewährte Technologien wie Microsoft Transaction Server, COM+, Microsoft Message Queue und Microsoft SQL Server, welche bis heute erfolgreich in Produktionsumgebungen eingesetzt werden. Das neue .NET Framework ersetzt diese Technologien und fügt darüber hinaus noch eine Webservice-Schicht und eine verbesserte Sprachenunterstützung hinzu.
Page 13
.NET Programmiermodell für Web Services
Abbildung 1: .NET Programmiermodell für Web Services
Die .NET-Applikation läuft in einem Container, der für Enterprise Anwendungen nötige Dienste wie Transaktionen, Sicherheit und Messaging zur Verfügung stellt. Die Anwendungsschicht der .NET-Applikation ist aus .NET„managed components“aufgebaut und beinhaltet die Verarbeitungslogik. Sie kann sich über ADO.NET („Active Data Objects“) mit Datenbanken verbinden und hat über den Microsoft Host Integration Server auch Zugriff auf bereits existierende Dienste. Außerdem ist es möglich, Unternehmensanwendungen über Web Services anzubinden.
Die Anwendung selbst kann ihre eigenen Dienste auch über die Web Service Schicht zur Verfügung stellen.
Für herkömmliche Clients wie Browser oder Desktop Anwendungen, werden über ASP.NET („Active Server Pages“) oder „Windows Forms“, einem Ersatz für MFC, angebunden.
Page 14
Das .NET Framework
Microsoft .NET bietet Sprachunabhängigkeit und Interoperabilität zwischen verschiedenen Sprachen, was einen der elementaren Aspekte dieser Plattform darstellt. Eine einzelne Komponente kann teilweise in VB.NET, der .NET Version von Visual Basic, und in C#, Microsoft's neuer objektorientierten Programmiersprache, geschrieben werden.
Der Quellcode beider Sprachen wird in die„Microsoft Intermediate Language“übersetzt, welche mit Java Bytecode vergleichbar ist. Dieser Zwischencode wird dann von der„Common Language Runtime“(CLR) interpretiert und in einen ausführbaren Code übersetzt. Die CLR ist eine Schicht zwischen dem Quellcode und der Zielhardware. Der Code läuft nur in der CLR. Damit ist dieses Verfahren vergleichbar mit der„Java Runtime Environment“(JRE) .
Java 2 Enterprise Edition (J2EE)4
Die Java 2 Enterprise Edition (J2EE) wurde entwickelt, um Entwicklung, Deployment und Management von Multitier Enterprise Anwendungen zu ereinfachen.
J2EE ist ein Industriestandard, der durch die Initiative von Sun Microsystems entstanden ist und heute von mehr als 30 Unternehmen mit getragen wird. Wichtig ist, daß J2EE kein Produkt, sondern ein Standard ist, der beschreibt, wie Anwendungen und Container implementiert werden müssen, um zueinander kompatibel zu sein.
Ziel von J2EE ist es, dem Kunden die Wahl aus Herstellern und Werkzeugen zu lassen, damit durch die Konkurrenz dieser, die bestmögliche Lösung entsteht. Um diesen Standard zu schaffen, arbeitet Sun mit weiteren Anbietern von eBusiness Plattformen wie Oracle, IBM und BEA zusammen. Weiterhin wurde auch der„Java Community Process“(JCP) ins Leben gerufen, der über neue Ideen zur Verbesserung von Java und J2EE berät und über ihre Einführung entscheidet.Java, die Grundlage von J2EE
Die J2EE Architektur basiert auf der Programmiersprache Java. Der Vorteil von Java ist, daß ein einmal geschriebener Code auf jeder Plattform, für die eine„Java Runtime Environment“(JRE) verfügbar ist, ohne Änderung ablauffähig ist. J2EE ist eine Anwendung von Java, deshalb können entwickelte Komponenten in Bytecode übersetzt und von der JRE ausgeführt werden. In der Regel werden auch die Container in Java implementiert. Die strengen Kontrakte von J2EE ermöglichen zusammen mit den Eigenschaften von Java daher, Komponenten auf unterschiedlichen Plattformen und in unterschiedlichen Containern, ohne Änderungen des Codes, ablaufen zu lassen.
Page 15
J2EE und Web Services
J2EE wurde als Architektur zur Entwicklung von serverseitigen, in Java implementieren Anwendungen konzipiert. Es kann benutzt werden, um Internetauftritte, Softwarekomponenten oder ganze Applikationen damit zu entwickeln. Aufbauend auf bestehenden APIs wurde es vor Kurzem um die Fähigkeit, auf XML basierende Web Services zu verarbeiten, erweitert.J2EE Programmiermodell für Web Services
J2EE Applikationen werden in einem Container verarbeitet, welcher für Enterprise Anwendungen nötige Dienste wie Transaktionen, Sicherheit und Persistenz zur Verfügung stellt.
Die Businesschicht beherbergt die Geschäftslogik und die Datenhaltung. In großen J2EE Anwendungen besteht diese üblicherweise aus kooperierenden Komponenten, sogenannten„Enterprise Java Beans“(EJB). Der Zugriff auf Datenbanken oder Legacy Systeme erfolgt über die„Java Database Connectivity“(JDBC) oder SQL/J bzw. die„Java Connector Architecture“(JCA). Zusätzlich können andere Anwendungen auch über Web Services mit Hilfe der„Java APIs for XML“(JAX APIs) angebunden werden. Auf die Dienste der J2EE Anwendung kann sowohl über Web Services als auch über das„Internet Inter ORB Protocol“(IIOP) zugegriffen werden. Für webbasierte Clients steht mit„Servlets“und„Java Server Pages“(JSP) eine
Page 16
eigene Präsentationsschicht zur Verfügung.
(Genaueres zu Enterprise Java Beans und der Datenhaltung in [Schweiger03]).
Vergleich .NET und J2EE5
Wie Tabelle 1 zeigt, gibt es sehr viele Ähnlichkeiten zwischen beiden Technologien. Im folgenden werden jedoch noch die Unterschiede erläutert.Time-To-Market Eigenschaften
„Time-To-Market“gibt an, welche Möglichkeiten das Produkt dem Entwickler bietet, um schnell auf neue Entwicklungen des Marktes zu reagieren. Heutzutage entscheiden schon wenige Monate über das Gelingen oder Scheitern einer Idee, denn die Gefahr, daß ein anderes Unternehmen schneller sein könnte, ist groß. J2EE und .NET setzen hier auf unterschiedliche Wege, welche beide Vor- und Nachteile haben. Für eine genauere Erläuterung dieser sei auf [J2EE2001] verwiesen.Single-Vendor Solution
Generell ist es einfacher, eine Lösung einzusetzen, die aus einer Hand stammt. Obwohl J2EE für sich eine vom Hersteller unabhängige Kompatibilität in Anspruch nimmt, trifft das in der Realität nicht immer zu. Zu oft behindern noch herstellerspezifische Eigenheiten die Portabilität einer Anwendung. (Siehe hierzu auch [ServerSide03a] und [ServerSide03b]).
Dagegen ermöglicht J2EE es, aus verschiedenen Produkten verschiedener Hersteller zu wählen, sowohl im Bereich des Application Servers als auch im Bereich der eingesetzten Werkzeuge.
.NET verfügt über eine komplette Lösung von einem einzelnen Hersteller: Microsoft. .NET fehlen zwar einige Highnd Features, welche J2EE besitzt, aber trotzdem bietet es vergleichbare Möglichkeiten wie J2EE. Außerdem hat es mit .NET-Studio eine vollständig integrierte Entwicklungsumgebung.
Page 17
Ein anderer Ansatz, um eine Single-Vendor Lösung zu beurteilen, ist es, bestehende Systeme in Unternehmen mit einzubeziehen. Die meisten dieser Legacy Systeme sind von Herstellern wie IBM oder BEA, deren J2EE Plattformen sich nahtlos an diese anbinden lassen. Deshalb könnte man hier im Gegensatz zu .NET eher eine J2EE Lösung des entsprechenden Herstellers als eine Single-Vendor Solution bezeichnen.Unterstützung existierender Systeme
In den meisten Unternehmen existiert bereits Code, der in vielen verschiedenen Programmiersprachen entwickelt wurde. Außerdem benutzen sie eine Reihe von Legacy-Systemen wie SAP R/3 oder Siebel.
Notwendigerweise müssen diese Investitionen der Unternehmen in neue Anwendungen mit integriert werden, da die Unternehmen in der Regel kein Budget und keine Zeit für eine Neuentwicklung ihrer Systeme haben. J2EE bietet eine Reihe von Möglichkeiten, die Anforderung der Integration von Legacy-Systemen zu erfüllen:•Java Message Service (JMS)•Web Services•Schnittstellen für CORBA•Java Native Interface (JNI)•Java Connector Architecture (JCA)
.NET bietet für die Integration von Legacy Systemen eigene Serverprodukte:•Microsoft Host Integration Server 2000•Microsoft COM Transaction Integrator (COM TI)•Microsoft Message Queu (MSMQ)•Microsoft BizTalk Server 2000
Der große Vorteil von J2EE liegt hier eindeutig in der Java Connector Architecture, die einen großen Markt von Adaptern für verschiedene Systeme schaffen wird. .NET bietet diese Möglichkeit nicht und unterstützt im Moment nur einige ausgewählte Systeme.Ausgereiftheit der Plattform
Wichtig für die Wahl einer geeigneten Plattform ist auch deren Ausgereiftheit. Es gibt bereits viele J2EE-Anwendungen, die seit Jahren laufen und auch in geschäftskritischen Bereichen keine Probleme verursachen. Trotzdem gibt es noch einige Risiken beim Einsatz von J2EE:•Die automatische Persistenz ist noch nicht völlig ausgereift•Die Java Connector Architecture ist völlig neu•Die Integration der Web Services ist völlig neu .NET basiert, obwohl neu entwickelt, in Teilen immer noch auf Windows DNA, welches ebenso wie J2EE bereits seine Fähigkeit, geschäftskritische Anwendungen zu betreiben, unter Beweis gestellt hat. Aber auch hier gibt es
Page 18
Punkte, auf die geachtet werden sollte:
•Ein großer Teil der .NET-Plattform wurde komplett neuentwickelt•Die Programmiersprache C# ist völlig neu•Die Web Service-Unterstützung ist völlig neu
Offensichtlich ist J2EE aufgrund der Dauer seiner Anwendung die ausgereiftere Plattform, obwohl der Einsatz der neuen APIs ebenfalls risikoreich sein kann. Im Gegensatz zu .NET ist bei J2EE die Plattform keine komplette Neuentwicklung und es wurde auch keine neue Programmiersprache eingeführt. Diese beiden Punkte bilden ein enormes Risiko im Vergleich zu J2EE.Sprachunterstützung
J2EE basiert auf Java und deshalb müssen alle Komponenten, die in eine J2EE Umgebung deployed werden, auch in Java geschrieben werden. Eine Anbindung an andere Sprachen läßt sich nur über die bereits vorher genannten Wege wie CORBA, JNI, usw. umsetzen. Es ist nicht möglich, verschiedene Sprachen zur Erstellung einer Komponente zu mischen, obwohl der Bytecode sprachneutral ist und es so theoretisch machbar wäre.
.NET unterstützt dagegen die Entwicklung in jeder Sprache, die von Microsoft's Werkzeugen unterstützt wird. Mit Ausnahme von Java können fast alle gängigen Programmiersprachen werden. Außerdem wurde für .NET eine eigene Programmiersprache C# neuentwickelt, die im Wesentlichen vergleichbar mit Java ist. Diese Sprachunabhängigkeit ermöglicht es, einzelne Komponente in einer ganzen Reihe von Sprachen zu schreiben. Damit verfügt .NET über einen klaren Vorteil gegenüber J2EE , unabhängig davon, ob dieser wirklich sinnvoll ist (siehe dazu: [J2EE2001]).Migration existierender Anwendungen
Besitzen Unternehmen bereits existierende Anwendungen, die auf J2EE oder Windows DNA basieren, so stellt sich die Frage nach der Portierbarkeit auf eine neue Plattform.
Da neue Fähigkeiten und APIs in J2EE immer nur eine Erweiterung der bereits bestehenden sind (z. B. JCA oder Web Services), sollte die Migration keine größeren Probleme ergeben.
.NET unterstützt zwar noch Anwendungen, die auf älternen Technologien wie COM+ aufbauen, aber nur als sogenannten„unmanaged code“,der nicht die vollen Fähigkeiten des .NET-Frameworks besitzt. Deshalb muß zwangsläufig älterer Code angepasst oder schlimmstenfalls neu geschrieben werden.Portabilität
Einer der wichtigsten Unterschiede zwischen J2EE und .NET ist die Plattformunabhängigkeit von J2EE, welches auf einer großen Spanne von Hardware und Betriebssystemen eingesetzt werden kann und wird. J2EE ist für jede Plattform erhältlich, für die eine JRE existiert. Ein zweiter Punkt und wichtigerer Aspekt bei J2EE ist jedoch, daß J2EE ein Standard ist und die einzelnen Hersteller eigene Produkte nach diesem entwickeln. Die Gefahr liegt nun darin, daß diese Produkte sich nicht strikt an den
Page 19
Standard halten oder diesen um eigene Eigenschaften erweitern. Um dies zu verhindern, entwickelte Sun einen Kompatibilitätstest, anhand dem Hersteller ihre Produkte zertifizieren können, was die Portabilität von Anwendungen garantiert. .NET akzeptiert als Betriebssystem nur Windows und ist auch eng mit diesem verzahnt. Somit kann es nur auf Hardware eingesetzt werden, die auch von Windows unterstützt wird. Es ist sehr unwahrscheinlich, daß Microsoft eine Portierung des .NET Frameworks auf andere Plattformen plant.Unterstützung von Web Services
Im Gegensatz zu Sun hat Microsoft bereits sehr früh die Bedeutung von Web Services erkannt und konsequent seine .NET-Plattform darauf aufgebaut. Dies ermöglicht eine schnelle Entwicklung von neuen Web Services und die Anbindung von bestehendem Code, unterstützt durch die von Microsoft Produkten bekannten Assistenten.
In J2EE wird die Intergration von Web Services durch die neu hinzugekommene„Java API for XML Parsing“(JAXP) und weitere, auf dieser aufbauenden APIs, realisiert.
In J2EE sind Web Services nicht so tief integriert wie in .NET, sondern nur eine weitere API, die bei der Erstellung von Komponenten verwendet werden kann. Dadurch ist die Verwendung von Web Services noch nicht so komfortabel wie dies in .NET der Fall ist.Entwicklungswerkzeuge
