Evaluierung der Rich Ajax Platform (RAP) anhand einer Beispielanwendung Evaluation of the Rich Ajax Platform (RAP) based on an example application Diplomarbeit zur Erlangung des akademischen Grades des Dipl.-Inf. (FH) eingereicht an der Fachhochschule Brandenburg Fachbereich Informatik und Medien 1. Betreuer: Prof. Dr. Thomas Preuß 2. Betreuer: Dipl.-Inf. Wolfgang Kn¨apper Abgabe: 1. Juli 2008 Name: Jonas Bru¨stel Matrikelnummer: 20042001 In Kooperation mit der Axway Software GmbH. Eingereicht an der Fachhochschule Brandenburg Fachbereich Informatik und Medien. Inhaltsverzeichnis Abbildungsverzeichnis vii Verzeichnis der Listings ix Danksagung xi 1 Einleitung 1 1.1 Betriebliches Umfeld . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Ziele der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Grundlagen 5 2.1 Electronic Data Interchange (EDI) . . . . . . . . . . . . . . . . . . 5 2.2 Message Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.2 Ajax-Technik . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3.3 Browserunterstu¨tzung . . . . . . . . . . . . . . . . . . . . . 10 2.3.4 Unterschiede zum klassischen Modell . . . . . . . . . . . . . 10 2.4 Rich Internet Applications (RIA) . . . . . . . . . . . . . . . . . . . 13 2.4.1 Begriff und Definition . . . . . . . . . . . . . . . . . . . . . . 13 2.4.2 Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.5 Eclipse Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5.2 Workbench-Benutzeroberfl¨ache . . . . . . . . . . . . . . . . 16 2.5.3 Ressourcen- und Workspace-API . . . . . . . . . . . . . . . 16 2.5.4 Architektur der Eclipse-Plattform . . . . . . . . . . . . . . . 17 2.5.5 OSGi/Equinox . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5.6 Standard Widget Toolkit (SWT) . . . . . . . . . . . . . . . 20 2.5.7 JFace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3 Rich Ajax Platform (RAP) 23 3.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.1 Rich Ajax Platform Widget Toolkit (RWT) . . . . . . . . . 25 3.2.2 RWT Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2.3 Qooxdoo Ajax-Framework . . . . . . . . . . . . . . . . . . . 28 iii Inhaltsverzeichnis 3.2.4 RWT-Client-Server-Kommunikation . . . . . . . . . . . . . . 29 3.2.5 Mehrbenutzer-Anwendung (Sessions und Singletons) . . . . 31 3.3 Internationalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.1 Eclipse String Externalization Mechanism . . . . . . . . . . 32 3.3.2 Sprachabh¨angige Komponenten . . . . . . . . . . . . . . . . 34 4 Analyse 37 4.1 Ist-Aufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.1 Laufzeitumgebung . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.2 Ist-Aufnahme aus funktionaler Sicht . . . . . . . . . . . . . 37 4.1.3 Grafische Komponenten . . . . . . . . . . . . . . . . . . . . 39 4.1.4 Ereignisbehandlung innerhalb der grafischen Komponenten . 40 4.1.5 Plugin-Struktur . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2 Soll-Kriterien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.2.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2.2 Laufzeitumgebung . . . . . . . . . . . . . . . . . . . . . . . 43 4.2.3 Grafische Komponenten . . . . . . . . . . . . . . . . . . . . 43 4.3 Kann-Kriterien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5 Realisierung 45 5.1 Workbench-Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.1.1 Startpunkt (Entrypoint) . . . . . . . . . . . . . . . . . . . . 45 5.1.2 Workbench-Perspektive . . . . . . . . . . . . . . . . . . . . . 46 5.2 Workspace- und Ressource-API . . . . . . . . . . . . . . . . . . . . 47 5.3 Editor-Bereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.3.1 Text-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.3.2 Hex-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.4 Ansichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.4.1 Struktur- und Nachrichtendetails-Ansicht . . . . . . . . . . . 51 5.4.2 Outline-Ansicht . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.5 Plugin-Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.6 Sprachunterstu¨tzung . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6 Zusammenfassung und Auswertung 57 Glossar 61 Index 63 Quellen- und Literaturverzeichnis 65 Erkl¨arung zur Diplomarbeit 69 A Quellcode und Ressourcen 71 iv Inhaltsverzeichnis A.1 RAP ResourceBundle Beispiel . . . . . . . . . . . . . . . . . . . . . 71 A.2 RAP CSS-Theming Beispiel . . . . . . . . . . . . . . . . . . . . . . 71 A.3 Implementierte Perspektive . . . . . . . . . . . . . . . . . . . . . . 76 A.4 Ver¨anderte MessageBundle-Klasse . . . . . . . . . . . . . . . . . . . 77 v Inhaltsverzeichnis vi Abbildungsverzeichnis 2.1 Screenshot des Message Viewer (Hex-Sicht) . . . . . . . . . . . . . 6 2.2 ScreenshotdesMessageViewer (geladenenUN/EDIFACT97ANach- richt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Baum-Ansicht zum Listing 2.1 ([McL07]) . . . . . . . . . . . . . . . 9 2.4 Modell-Vergleich einer traditionellen Webanwendung (links) mit ei- ner Ajax-Webanwendung (rechts) ([Hai07a]) . . . . . . . . . . . . . 11 2.5 Prozessfluss einer traditionellen Webanwendung ([Hai07b]) . . . . . 12 2.6 Prozessfluss einer Ajax-Anwendung ([Hai07c]) . . . . . . . . . . . . 12 2.7 Offizielle Eclipse-Logo ([Ecl08a]). . . . . . . . . . . . . . . . . . . . 15 2.8 Screenshot der Eclipse-Workbench dar ([Neh]) . . . . . . . . . . . . 17 2.9 Schichtenaufbau der Eclipse-Architektur ([FMK04] 8. Kapitel) . . . 18 2.10 Zustandsdiagramm: Zyklus eines OSGi-Bundles . . . . . . . . . . . 19 2.11 Screenshots:SWT-FensterninverschiedenenBetriebssystemoberfl¨ach- en ([Ecl08b]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1 Screenshots: Eclipse-Mail-Demo auf Basis von RCP und RAP . . . 23 3.2 Gegenu¨berstellung RCP- und RAP-Architektur ([RAP08a]) . . . . . 24 3.3 Beispiel fu¨r Synchronisation zwischen dem Client- und Serverobjekt 26 3.4 Zustandsdiagramm:AbgleichdesClient-undServerzustandsimRAP Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5 Sequenzielle Darstellung: Long-Polling-Mechanismus zwischen Brow- ser und Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6 Funktionsweise eines Session-Singletons . . . . . . . . . . . . . . . . 32 4.1 Anwendungsfalldiagramm: Message Viewer . . . . . . . . . . . . . . 38 4.2 Screenshot: Oberfl¨ache des Message Viewers . . . . . . . . . . . . . 39 4.3 UML-Klassendiagramm: Java-Realisierung des Observer-Entwurfs- musters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.4 Sequenzdiagramm: Phasen zwischen Beobachter und Subjekt (Ob- server-Muster) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.5 Paketdiagramm: Plugins des Message Viewers . . . . . . . . . . . . 42 5.1 Screenshot: Eclipse-Wizard fu¨r die Konfiguration des Entrypoint- Erweiterungspunktes . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.2 Nachrichten-Ansicht in der Webbrowser-Variante . . . . . . . . . . . 48 5.3 Hex-Ansicht in der Webbrowser-Variante . . . . . . . . . . . . . . . 50 vii Abbildungsverzeichnis 5.4 Screenshot: Message Viewers im Firefox-Webbrowser . . . . . . . . 52 5.5 Nachrichtendetails-Ansicht in der Webbrowser-Variante . . . . . . . 53 5.6 Paketdiagramm: Plugins der RAP-Variante des Message Viewers . 54 viii Verzeichnis der Listings 2.1 Beispiel einer einfachen HTML-Seite ([McL07]) . . . . . . . . . . . 9 3.1 HTTP-Request Beispiel . . . . . . . . . . . . . . . . . . . . . . . . 33 3.2 Standard Eclipse-RCP String Externalization Mechanism . . . . . . 34 3.3 Eclipse-RAP String Externalization Mechanism . . . . . . . . . . . 35 5.1 Entrypoint-Implementierung . . . . . . . . . . . . . . . . . . . . . . 46 5.2 Sprachauswahl-Logik . . . . . . . . . . . . . . . . . . . . . . . . . . 55 A.1 RAP CSS-Theming Beispiel . . . . . . . . . . . . . . . . . . . . . . 71 A.2 Implementierte Perspektive . . . . . . . . . . . . . . . . . . . . . . 76 A.3 Ver¨anderte MessageBundle-Klasse . . . . . . . . . . . . . . . . . . . 78 ix Verzeichnis der Listings x
Description: