Table Of ContentEvaluierung 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-Benutzerober߬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-FensterninverschiedenenBetriebssystemober߬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: Ober߬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:Evaluation of the Rich Ajax Platform (RAP) based on an example application. Diplomarbeit zur Erlangung des akademischen Grades des Dipl.-Inf. (FH).