RCP-Vergleich, ein Artikel im Java Magazin 08/2011

8
magazin Java Architekturen Web Agile www.javamagazin.de CD-INHALT Österreich € 9,80 Schweiz sFr 16,80 Deutschland € 8,50 8.2011 Alle CD-Infos ab Seite 3 CD inkl. JAVA Mag IPHONE 4 JAVA DEVELOPERS Video von der W-JAX 2010 Griffon Neuer Schwung für Swing » 25 OSGi Architektur in OSGi umgesetzt » 98 WEITERE INHALTE Jackson 1.8.1 Griffon 0.9.3 Beta 1 Cassandra GUI 0.7.1 HIGHLIGHT Eclipse Riena 3.0 Hector 0.7 Apache Cassandra Brandneues Programm » 51 JIRA & Co. erfolgreich einsetzen » S. 52, 58 User Stories in agilen Projekten » 108 RESTful JSF Ein Widerspruch? » 92 Java Web Services SOAP mit JAX-WS » 69 Cassandra und Hector Griechische NoSQL-Mythologie » 47 Tools Sonderdruck

description

n ihrem Artikel „Reiche Formulare“ vergleichen unsere Mitarbeiter Herr Holger Grosse-Plankermann und Herr Jörg Meister die drei am weitest verbreiteten RCP-Technologien Eclipse RCP, Riena und NetBeans miteinander und nennen projektspezifische Vor- und Nachteile der einzelnen Plattformen.

Transcript of RCP-Vergleich, ein Artikel im Java Magazin 08/2011

Page 1: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

magazinJava • Architekturen • Web • Agile www.javamagazin.de

CD-INHALT

Österreich € 9,80 Schweiz sFr 16,80Deutschland € 8,50 8.2011

Alle CD-Infos ab Seite 3

CDinkl

.JA

VA M

ag

IPHONE 4 JAVA DEVELOPERS

Video von der W-JAX 2010

GriffonNeuer Schwungfür Swing »25

OSGiArchitektur inOSGi umgesetzt »98

WEITERE INHALTE

• Jackson 1.8.1 • Griffon 0.9.3 Beta 1• Cassandra GUI 0.7.1

HIGHLIGHT

Eclipse Riena 3.0Hector 0.7Apache Cassandra

Brandneues Programm »51

JIRA & Co. erfolgreich einsetzen » S. 52, 58

User Stories in agilen Projekten »108

RESTful JSFEin Widerspruch? »92

Java Web Services SOAP mit JAX-WS »69

Cassandra und HectorGriechische NoSQL-Mythologie »47

Tools

Alle CD-Infos ab Seite 3

WEITERE INHALTE

• Jackson 1.8.1 • Griffon 0.9.3 Beta 1• Cassandra GUI 0.7.1

Apache Cassandra

einsetzen einsetzen »» S. 52, 58S. 52, 58

RESTful JSFRESTful JSFEin Widerspruch? Ein Widerspruch? Ein Widerspruch? Ein Widerspruch? Ein Widerspruch? Ein Widerspruch? Ein Widerspruch? Ein Widerspruch? Ein Widerspruch? »92

Sonderdruck

Page 2: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

von Holger Grosse-Plankermann und Jörg Meister

Ein Kunde aus dem Bereich der Versicherungswirtschaft wünscht sich eine neue Software zur Verwaltung von Versicherungsverträgen: Es soll eine Desktopapplikati-on sein, die In-House auf den Rechnern der Sachbearbei-ter installiert wird. Die Verwaltung der Verträge besteht aus mehreren Schritten, bei denen der Benutzer unter-stützt und geleitet wird. So ist es notwendig, abhängig von den eingegebenen Daten, einzelne Programmteile oder Eingabefelder anzuzeigen, zu verstecken oder mit anderen Werten zu belegen. Außerdem soll der Benutzer bereits bei der Eingabe der Daten auf mögliche Fehler hingewiesen oder am Verlassen eines Prozessschritts gehindert werden. Selbstverständlich wünscht der Kun-de sich zudem eine komfortable, schnell reagierende Applikation, die dem Benutzer auch ein komfortables Hilfesystem bietet. Zusammen mit dem Kunden haben wir ein grundlegendes Bild der Applikation entwickelt (Abb. 1).

Aus der Tatsache, dass die Benutzer verschiedenen Aufgabenbereichen zugeordnet sind, ergeben sich wei-tere Anforderungen: Es sollen nur relevante Applikati-onsteile angezeigt werden, und neue Funktionalität für weitere Aufgabenbereiche soll rasch und einfach hin-zugefügt werden können (Modulkonzept). Die IT des Kunden ist Java-zentriert, somit wurden Lösungen aus dem Java-Umfeld bevorzugt. Im nächsten Schritt suchen wir nun eine technologische Basis, die diese Anforderun-gen abdeckt. Da diese Architekturentscheidung ähnlich grundlegenden Charakter hat, wie die Auswahl des Per-sistenzframeworks, muss diese Entscheidung sehr früh, aber nichtsdestoweniger mit sehr viel Weitblick getrof-fen werden.

Recht schnell ist klar, dass eine Applikation auf Ba-sis einer Rich-Client-Plattform (RCP) der beste Ansatz für diese Anwendung ist (Kasten: „Eigenschaften von Rich-Client-Frameworks“). Es bleiben für uns im We-sentlichen drei Plattformen übrig, die wir nun einem in-tensiveren Vergleich unterziehen:

Die Eclipse Rich Client Platform (Version 3.6) [1] •Eclipse Riena (Version 2.0), das auf Eclipse RCP •basiert [2]Die NetBeans Rich Client Platform (Version 6.9) [3]•

Die betrachteten FrameworksSowohl Eclipse RCP als auch NetBeans RCP haben ih-ren Ursprung in den entsprechenden IDEs. Bereits im Jahr 2001 wurde die NetBeans IDE so umgebaut und modularisiert, dass NetBeans zu einer Plattform für Desktopapplikationen wurde. Auch Eclipse wurde ur-sprünglich als reine IDE und Toolplattform entwickelt. Man erkannte jedoch, dass es sich auch zum Bau von Rich Clients eignet. Die vorhandenen Technologien wurden neu strukturiert, sodass aus der ehemaligen IDE eine offene und erweiterbare Plattform zur Entwicklung von Desktopapplikationen entstand. Mit der Version 6.0 hat Sun das Thema Plattform wiederaufgegriffen und weitere APIs hinzugefügt, um gegenüber Eclipse RCP konkurrenzfähig zu sein. Aber Eclipse RCP ist so weit verbreitet, dass man es als De-facto-Standard an-sehen kann.

Eclipse Riena nimmt hier eine Sonderrolle ein: Riena basiert auf Eclipse RCP. Ziel von Eclipse Riena ist es, die Erstellung von „üblichen“ Businessanwendungen zu vereinfachen. Auch versucht es, die Nutzerführung für Anwender mit nicht technischem Background zu verein-

Das passende Rich-Client-Framework für Ihr Projekt

Reiche Formulare Die „Brot und Butter“-Anwendungen eines Softwareentwicklers sind nach wie vor formularbasierte Verwaltungsapplikationen: sei es ein CRM-System, ein System zur Kreditbearbeitung oder die Verwal-tung von Versicherungsverträgen. Soll die Anwendung eine Webapplikation sein, hat der Architekt eine große Auswahl an passenden Frameworks. Entscheidet man sich für eine Rich-Client-Architektur, tappt man häufig im Dunkeln. Dieser Artikel bietet Ihnen Entscheidungshilfen an, um das für Ihr Projekt pas-sende Rich-Client-Framework auszuwählen.

2 www.JAXenter.dejavamagazin 8 | 2011

Sonderdruck

Page 3: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

fachen. Diese haben häufig Probleme mit der Vielzahl der Möglichkeiten, die eine Eclipse-Applikation enthält. Riena bietet u. a. ein eigenes Interaktionskonzept, eigene GUI-Elemente und ein eigenes Look and Feel. Zudem kann Riena die Einbindung in eine JEE-Umgebung ver-einfachen. Zur Kommunikation mit dem Backend wer-den Remote OSGi Services angeboten, die proprietäre JEE Jars im Client überflüssig machen.

Vergleich der FrameworksNach der allgemeinen Vorstellung wollen wir nun die Frameworks genauer vergleichen. Wir konzentrieren uns dabei auf die Teile der RC-Plattformen, die bei einer formularbasierten Anwendung anders sind als bei den üblichen RCP-Demoapplikationen. Wir gehen somit auf die Fragen „Wie kann das gewünschte Layout des Wi-reframes umgesetzt werden?“ und „Wie bildet der Ent-wickler den eingangs umrissenen Prozess ab?“ ein.

Layouting in den PlattformenIn diesem Abschnitt interessiert uns, welche Techno-logie verwendet wird, um Layouts mit dem gewählten Framework zu erstellen, inwiefern der Kunde Einfluss auf das Aussehen (Farben, Schriften etc.) der Anwen-dung nehmen kann und die verfügbaren Tools. Auch beachten wir die Besonderheiten des formularbasierten Ansatzes hinsichtlich des gezeigten Wireframe der An-wendung.

Eclipse RCP verwendet das systemnahe SWT. Vorteil ist das betriebssystemnahe Aussehen der Anwendung. Nachteile sind die schwierigere Anpassbarkeit und der sehr kleine Markt an Zusatzkomponenten. Kom-plexere Controls sind oft nur über das Nebula-Projekt verfügbar. Allerdings haben diese oft noch keine Pro-duktionsreife. Der Tool-Support ist mit dem neuerdings kostenlos verfügbaren Google Window Builder exzel-

Abb. 1: Wireframe der Versicherungsapplikation

lent. Formulare lassen sich damit sehr schnell erstellen. Allerdings sollte sich der Entwickler schon mit den Ei-genheiten der Layout Mana-ger auskennen. Eclipse RCP gibt keinerlei Vorgaben, wie ein Layout auszusehen hat, sodass das Wireframe nahezu 1:1 umsetzbar ist. Einschränkungen gibt es (zumindest in unserem An-satz) bei der Abbildung der Prozessschritte. Doch dazu später mehr. Eine Demo-applikation mit Eclipse RCP sehen Sie in Abbildung 2.

Einer Eclipse-RCP-An-wendung sieht man meistens an, dass Eclipse der Unter-

bau ist. Über das eher unhandliche Presentation API ist viel vom Look and Feel anpassbar. In Eclipse RCP 4.0 wird es möglich sein, eine Anwendung mittels CSS zu verschönern.

Allerdings gibt es hier einige Einschränkungen, die durch SWT ins Spiel kommen. In einigen Fällen über-nimmt SWT schlichtweg den Standard des Betriebssys-tems, ohne dass das änderbar wäre. Ein Beispiel hierfür ist die Vordergrundfarbe eines nicht aktiven Felds.

Wie erwähnt, ist Riena ein Aufsatz auf Eclipse RCP und benutzt als GUI-Technologie ebenfalls SWT. Als Tool-Support bietet sich somit ebenfalls der Google Window Builder an. Riena bringt allerdings noch einen praxiserprobten Satz an GUI-Komponenten mit. Es geht auch in puncto GUI-Entwicklung einen eigenen Weg: Es forciert den Model-View-Controller-Ansatz und trennt mithilfe der Ridgets [4] die Darstellung des Controls von seinem Verhalten. Resultat sind eine besser struk-turierte Anwendung und eine bessere Testbarkeit der GUI. Dieser MVC-Ansatz ist in Eclipse RCP selber nur umständlich einzupflegen. Das Ridget-Konzept macht den Einstieg etwas schwieriger. Verwendet man Cont-rols, die nicht von Riena mitgeliefert werden, so muss man eigenhändig Ridgets hierfür erzeugen. Aufgrund der guten Beispiel-Snippets [5] ist das allerdings kein größeres Problem.

Die hierarchische Struktur der Anwendung, sichtbar in der Navigationsleiste, wird deklarativ definiert. Hier findet die Zuordnung von Views und Controllern zu einem Menüpunkt oder einem Prozessschritt statt und bildet den Kern einer Riena-Applikation.

Das vorgestellte Wireframe lässt sich mit Riena al-lerdings nicht 1:1 umsetzen, da das Framework ein eigenes GUI-Konzept verfolgt. Die vorgestellte An-wendungsstruktur findet sich aber wieder: Wir erläu-tern das genauer im Kasten „Riena-UI-Konzept“. Das

3www.JAXenter.de javamagazin 8 | 2011

Sonderdruck

Page 4: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

Aussehen (Farben, Fonts, Bilder etc.) einer Riena-An-wendung kann relativ einfach angepasst werden. Auch ist es möglich, für einige Teile der Navigation eigene Renderer einzusetzen. Eine Demoapplikation mit Rie-na ist in Abbildung 3 zu sehen.

Mit Swing als Grundlage von NetBeans RCP ist es für jeden JSE-Entwickler einfach, die geforderten GUIs umzusetzen. Der GUI Builder Matisse ist Teil der NetBeans IDE und intuitiv bedienbar. Für Swing gibt es einen breiten Markt an kommerziellen und nicht kommerziellen GUI-Komponenten und Tools, die das

Vorhandene ergänzen. So findet man in den SwingLabs von Sun beispielsweise Kalenderkomponenten oder den später erwähnten JXLayer zur besseren Dar-stellung von Fehlern bei der Datenein-gabe. Durch die Möglichkeit, das Look and Feel einer Swing-Applikation aus-tauschen zu können, kann das Aussehen des Programms eigenen Wünschen ange-passt werden.

Mittels des Nodes und des Explorer API ist es einfach, strukturierte Daten in Komponenten wie Tabellen, Bäume oder Property-Editoren darzustellen, sie in der Darstellung zu manipulieren und Aktionen oder Kontextmenüs damit zu verknüpfen. Swing stellte uns u. a. mit dem GroupLayout alles Notwendige zur Verfügung, um das Wireframe in unserer Applikation umzusetzen. Das

Group Layout ist ein Layoutmanager, der seit Java 6 im JDK vorhanden und für die Darstellung unserer formularbasierten GUI bestens geeignet ist.

GUI-Steuerung der PlattformenIn diesem Abschnitt wollen wir uns mit den Kernpunk-ten der oben umrissenen Versicherungsanwendung be-fassen. Wie können die Frameworks den Entwickler bei der Umsetzung und Visualisierung der Geschäftsprozes-se unterstützen?

Zum einen beschäftigt uns hier, wie man bestimm-te Elemente eines Formulars (Knöpfe, Eingabefelder

Abb. 2: Demoapplikation mit Eclipse RCP (die NetBeans-RCP-Applikation sieht ähnlich aus)

Ein RCP-Framework besteht aus einer Vielzahl von Komponen-ten, die zum Teil in unserer Versicherungsapplikation verwendet wurden. Diese lassen sich wie folgt klassifizieren.

User Interface ManagementDie Frameworks bieten komfortable Möglichkeiten wie Fenster, Editoren, Menüs, Werkzeugleisten, Statusbars etc., um sowohl einfache als auch aufwendige GUIs zu programmieren.

ModulsystemAlle drei Plattformen benutzen OSGi als Modulsystem (Net Beans bietet zusätzlich noch ein einfacheres, eigenes System an). Mithilfe des Modulsystems ist es für die Versicherung möglich, Teilapplika-tionen je nach Bedarf an die entsprechenden Mitarbeiter auszulie-fern. So bekommt die Haftpflichtabteilung das Modul für die Scha-densregulierung, aber nicht das Modul für die Krankenversicherung.

UpdatemanagerEin Updatemanager erlaubt der Applikation, sich mit einem Updateserver zu verbinden und Programmteile auszutauschen.

Das kann programmatisch oder durch den Benutzer getriggert werden. Bei NetBeans RCP wird es über das Auto Update Ser-vice API und bei Eclipse RCP bzw. Riena über P2 durchgeführt.

Data BindingDas Data Binding dient zur Synchronisierung von Datenmodel und GUI. Es sorgt dafür, dass die Werte eines Modells in den verknüpften GUI-Elementen angezeigt und Änderungen aus den GUI-Elementen in das Modell transferiert werden. Dabei können die Daten konvertiert und validiert werden.

HilfesystemDas Hilfesystem bietet dem Benutzer die Möglichkeit, kontext-sensitive Hilfeseiten aufzurufen.

InternationalisierungDie Frameworks bieten Methoden zum automatischen Einbin-den von sprachabhängigen Ressourcen in der GUI und dem Hilfesystem.

Eigenschaften von Rich-Client-Frameworks

4 www.JAXenter.dejavamagazin 8 | 2011

Sonderdruck

Page 5: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

etc.) aufgrund von Regeln (beispielsweise fachliche oder technische Validierungen) markiert, ein- oder ausblendet. Zum an-deren wird hier thematisiert, wie man den geforderten Prozess visualisiert und wie man zwischen einzelnen Prozessschritten wechselt oder Prozessschritte ein- oder ausblendet.

Um einen Geschäftsprozess für unsere Art der Anwendung abzubilden, liefert Ec-lipse RCP von Hause aus keine Vorgaben. Eine Möglichkeit, die von uns bereits in Projekten eingesetzt wurde, ist der FormE-ditor, der in der Eclipse IDE für die Proper-ty-Editoren verwendet wird. Hier können einzelne Prozessschritte als Tabs unterhalb des Eingabebereichs dargestellt werden. Da diese Lösung allerdings die Basis in den eher statisch angelegten Property-Editoren hat, ist das Verstecken und nachträgliche Hinzufügen eines Tabs nicht trivial. Hat man allerdings lediglich die Anforderung, dass die Tab-Leiste statisch sein soll, stellt der FormEditor eine perfekte Lösung dar.

Alle offenen Geschäftsvorfälle zeigt Eclipse RCP als Reiter oberhalb des Eingabebereichs an. Der Benutzer kann so schnell zwischen ihnen wechseln.

Eclipse RCP bietet ebenso wie die beiden anderen RCP-Frameworks ein Data Binding. Dieses sorgt nicht nur für ein komfortables Verknüpfen von Modell und Formularelementen. Mit einer eigenen kleinen Erweite-rung wurde diese Funktionalität auch für das Steuern der GUI-Interaktion verwendet. Bei Zustandsänderun-gen in unserem Modell, beispielsweise dem Setzen eines bestimmten Werts, wurden je nach fachlicher Anforde-rung GUI Controls ein- oder ausgeschaltet.

Knöpfe und Menüpunkte werden über das so ge-nannte Command API angebunden. Das Command API sieht im Kern eine deklarative Herangehensweise für die Verwaltung des Status (sichtbar, anklickbar etc.) vor. Im Kontext der Eclipse IDE ist es sicherlich der richtige Weg, um eine Nutzerinteraktion in verschiede-nen Kontexten (z. B. Java Perspective, Debugging Per-spective) zu handhaben. In unserer Art der Anwendung fanden wir diese Herangehensweise zu aufwändig, uns fehlt eine programmatische Alternative. Über das Com-mand API können auch deklarativ einzelnen Befehlen Tastaturkürzel zugewiesen werden. Eclipse RCP bietet für die so zugewiesenen Kürzel direkt eine Übersicht an. Falls man es zulässt, sind diese Zuordnungen auch vom Benutzer änderbar.

Für die Navigation zwischen einzelnen Reitern und Tabs liefert Eclipse ebenso Commands mit. Verwendet man diese, sind die aus der Eclipse IDE bekannten GUI Widgets zum Navigieren zwischen Reitern und Tabs direkt benutzbar. Unterm Strich kann man sagen, dass

Abb. 3: Demoapplikation mit Riena

unsere Anforderungen mit etwas Handarbeit in die-sem Bereich umsetzbar sind. Die Herkunft von Eclipse RCP als IDE-Framework merkt man allerdings recht deutlich.

Alle in der Einleitung genannten Punkte sind in Riena umsetzbar. Wie bereits im vorherigen Kapitel erläutert, geht Riena hier aber eigene Wege [4]. Im Kasten „Das Riena-UI-Konzept“ gehen wir auch schon auf einige Punkte der Prozesssteuerung ein.

Das Ein- und Ausblenden bzw. Deaktivieren eines Prozessschritts wird in Riena weitgehend deklarativ über UIFilter erledigt. Dies kann für Neulinge fehler-anfällig sein. Es besteht aber auch der programmatische Weg, der etwas umständlicher wirkt. Für den Einstieg, um einen Überblick über die Konzepte zu bekommen, ist dieser Weg allerdings empfehlenswert. Die mitgelie-ferten Beispielanwendungen bieten hier umfangreiche und gute Vorlagen.

Fehlerzustände können ebenfalls deklarativ oder aber direkt am Ridget über Data Binding definiert werden. Das Data Binding entspricht im Kern dem von Eclipse RCP, gebunden wird hier allerdings das Ridget. Die Dar-stellung des Eingabebereichs selber ähnelt den NetBeans- und Eclipse-RCP-Lösungen, die Standarddekorationen sehen allerdings etwas moderner aus. Fehlerzustände werden auch in der Navigationsleiste angedeutet.

Das Einbinden von Tastaturkommandos folgt dem Prinzip von Eclipse RCP. Riena bringt aber noch eigene Commands zur Steuerung der Navigation mit.

Abschließend sei noch gesagt, dass es dem Entwickler natürlich immer freisteht, neben den Riena APIs auch die Eclipse RCP APIs zu benutzen, es handelt sich schließ-lich um eine Eclipse-RCP-Anwendung. Das Ändern der

5www.JAXenter.de javamagazin 8 | 2011

Sonderdruck

Page 6: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

beschriebenen Struktur kann aber größeren Aufwand nach sich ziehen (Abb. 4).

Ähnlich wie bei Eclipse RCP gibt es bei NetBeans RCP keinen durchgängigen Weg, um unsere Anforde-rungen zu erreichen. Bei NetBeans RCP benutzt man für die Applikationen eine TopComponent aus dem Windows-System-API. Dieses erlaubt ein komfortables Fenster-Handling, das für unsere Ansprüche ausrei-chend war. Mit den TopComponents ist es möglich, mehrere Geschäftsvorfälle in der Applikation gleichzei-tig und unabhängig voneinander zu bearbeiten. Um in-nerhalb einer TopComponent einzelne Prozessschritte abbilden zu können, kann man die MultiViews benut-zen. Leider war es bei diesen Views aber nicht möglich, einzelne Views programmatisch (je nach fachlichen Anforderungen) ein- bzw. auszublenden. Wird das nicht verlangt, sind MultiViews die richtige Wahl. Im

Gegensatz zu Eclipse RCP war das Handling der MultiViews leider in internen NetBeans-Klassen gekap-selt, sodass es keinen Weg gab, das Ein- und Ausblenden von einzelnen Views nachträglich hinzuzufügen. Somit mussten wir die einzelnen Pro-zessschritte mit Swing-Mitteln abbil-den. Jeder Prozessschritt entsprach einem Tab in einer JTabbedPane. Das führte zu Mehraufwand, da das Handling selbst programmiert wer-den musste.

Das Data Binding musste ebenfalls, wie im Eclipse-Abschnitt beschrieben, mit der Möglichkeit ergänzt werden, bei Zustandsänderungen im modell-

eigenen Programmcode, wie das Aktivieren oder Deakti-vieren von Formularelementen, auszuführen. Ansonsten reicht die angebotene Funktionalität des Bindings aus. Bei der visuellen Manipulation von Formularelementen hat man alle Freiheiten von Swing. Um Validierungser-gebnisse an Formularelementen zu bekommen, mussten wir auf den JXLayer aus den SwingLabs-Projekten [6] zurückgreifen. Dadurch war es uns möglich, Fehlermar-ker direkt an einem Formularelement anzuzeigen. Bei NetBeans RCP war deutlich mehr Handarbeit notwen-dig als bei Eclipse RCP.

Tastaturkommandos, das Klicken in Toolbars, Pop-up-Menüs, Knöpfen oder Menüpunkten werden in der NetBeans RCP mit Actions aus dem Action API behan-delt. Das Action API erweitert das bekannte Swing-Ac-tion-Framework und verknüpft deklarativ pro Modul die Interaktion mit ausführbarem Code. Es sorgt dafür, dass beispielsweise Menüpunkte in einem Menü er-scheinen, wenn das entsprechende Modul gestartet ist. Wie bei vielen Dingen in der NetBeans IDE, wird der Programmierer gut durch Wizards bei der Deklaration unterstützt.

FazitEclipse RCP ist der bekannteste und verbreitetste Ver-treter unseres Vergleichsartikels. Das Framework ermöglicht große Freiheiten bei der Gestaltung der ge-wünschten Applikation. Viele, oft auch kommerzielle Produkte nutzen Eclipse RCP als Basis. Das zeigt nicht nur, dass ein breites Vertrauen in die Fähigkeiten der Plattform existiert, sondern auch, dass Eclipse RCP pra-xiserprobt und sehr stabil ist. Auch ist für Eclipse RCP im Vergleich mit den anderen beiden Frameworks deut-lich mehr Dokumentation verfügbar, sei es im Web [7], in Newsgroups oder in Form von Büchern.

Das Vertrauen in die Plattform ist unserer Meinung nach völlig gerechtfertigt, allerdings erkauft man sich mit der Flexibilität speziell im Hinblick auf die „nor-male“ Businessanwendung auch einige Nachteile. Der

Abb. 4: Riena-UI-Konzept

Riena-UI-Konzept

Um dem Benutzer das sonst eher technische Verhalten einer RCP-Anwendung zu ersparen, verfolgt Riena beim UI-Konzept einen eigenen Weg, der den Aufbau der Applikation fest-schreibt. Der aktuelle Programmteil (Application) wird immer als Reiter oberhalb des Formulars dargestellt. Darunter befindet sich die Menüleiste. Am linken Rand ist die nicht versteckbare Navigationsleiste positioniert. Der Eingabebe-reich befindet sich rechts. Die Prozessstruktur wird ähnlich wie ein Wizard dargestellt, Riena zeigt immer nur einen aktiven Eingabebereich an. Der Wechsel zu einem anderen Prozessschritt erfolgt entweder programmatisch über das Navigations-API oder manuell über die Navigationsleiste. Die aus Eclipse und NetBeans bekannte Möglichkeit, mehrere Editoren gleichzeitig darzustellen, fehlt bewusst. Auf Tabs und Reiter verzichtet Riena. Die Navigationsleiste bildet den Kern der Applikation und zeigt sowohl die Geschäftsvorfälle als auch die einzelnen Schritte eines Geschäftsvorfalls an.

6 www.JAXenter.dejavamagazin 8 | 2011

Sonderdruck

Page 7: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

Einstieg in Eclipse RCP ist recht mühsam und einige Konzepte wollen nicht so recht in die von uns beschrie-bene Anwendungsklasse hineinpassen. Auch die The-men Testen und Continuous Integration sind nach wie vor nur unhandlich zu lösen. Maven Tycho verspricht hier Besserung. Alles in allem stellt Eclipse RCP aber das Referenzframework im Bereich Rich Clients dar und ist den Anforderungen an eine moderne formularbasierte Anwendung gewachsen.

Die oben beschriebenen Schwachpunkte von Eclipse RCP greift nun Eclipse Riena auf. Es geht speziell bei der Benutzerführung einen recht eigenen Weg, der aber lei-der nicht für jedes Projekt passen wird. Dieses Konzept wurde laut Aussagen aus dem Riena-Team für eine In-House-Applikation eines Finanzdienstleisters entwickelt und ist somit auch praxiserprobt.

Mit dem Ridget-Konzept und des Navigations-API bietet Riena richtig gute Lösungen für formularbasierte Applikationen. In den beiden anderen Frameworks ist man gezwungen, einiges hiervon selber zu entwickeln, wenn man vergleichbaren Komfort und Leistungsfä-higkeit erhalten möchte. Die GUI weitestgehend über Controller-Tests zu testen und auf GUI-Testtools wie SWTBot zu verzichten, ist speziell im Headless Build ein riesiger Vorteil. Zudem sieht eine Riena-Applikation out of the Box schon sehr schick aus.

Die Dokumentation ist weniger umfangreich als bei Eclipse RCP [4], [8], aber die bereitgestellten Snippets [5] geben die Fähigkeiten des Frameworks sehr gut wie-der. Allerdings sollte man bereits grundlegende Eclipse-RCP-Kenntnisse haben, um mit Eclipse Riena zu starten. Falls Riena nicht zum Projekt passen sollte und Eclipse RCP erste Wahl ist, kann man immer noch Teile von Ri-ena verwenden. Unsere Empfehlung ist, sich speziell das Ridget-Konzept anzuschauen, um Themen wie Control-ler-Tests und das MVC Pattern elegant umzusetzen.

Ebenso wie bei der Eclipse-RC-Plattform ist die Einar-beitung in NetBeans RCP aufwändig. Auch passen man-che Konzepte der Plattform nicht zu den Anforderungen unserer Versicherungsapplikation. Das NetBeans RCP Framework ist eine konkurrenzfähige RC-Plattform und bietet, wie die beiden Konkurrenten, alles, was das Herz eines RC-Entwicklers erfreut. Die ausgefeilten Konzepte von Riena kennt es allerdings nicht. Im Netz findet man

deutlich weniger Dokumentation als beim Hauptkon-kurrenten, aber genügend, um sich in die APIs einzuar-beiten. Es gibt Produkte auf Basis von NetBeans RCP, allerdings sind uns nur wenige bekannt. Die Community ist vergleichsweise klein, die NetBeans-Kernentwickler sind aber sehr auskunftsfreudig. Einen großen Vorteil sehen wir in der Verwendung von Swing als Widget Toolkit in der NetBeans-Plattform. Swing ist besser er-weiterbar als SWT, es gibt mehr kommerzielle und nicht kommerzielle GUI-Komponenten und man bekommt mehr Hilfe im Netz, weil es mehr Entwickler gibt, die sich mit Swing auskennen. Googelt man „Rich Client Platform”, bekommt man auf den ersten Ergebnisseiten (fast) ausschließlich Links auf Eclipse RCP. Unverständ-lich, warum Oracle Eclipse das Feld mehr oder weniger kampflos überlässt.

Alle drei vorgestellten Frameworks haben ihre indi-viduellen Stärken und Schwächen, sie sind aber alle-samt für den Einsatz im Businessumfeld geeignet und können von uns empfohlen werden. Das wichtigste Entscheidungskriterium bei der Wahl sind allerdings die Projektrahmenbedingungen. Wir hoffen, dass unsere Erfahrungen eine Entscheidungshilfe für Ihr Projekt bietet, das passende Rich Client Framework auszuwählen.

Eclipse RCP ermöglicht große Freiheiten bei der Gestaltung der

gewünschten Applikation.

Links & Literatur

[1] Eclipse RCP: http://www.eclipse.org/home/categories/rcp.php

[2] Eclipse Riena: http://www.eclipse.org/riena/

[3] NetBeans RCP: http://netbeans.org/features/platform/

[4] Eclipse Riena Getting Started: http://wiki.eclipse.org/Riena_Getting_started

[5] Eclipse Riena Snippets: http://wiki.eclipse.org/Riena_Snippets

[6] SwingLabs: http://swinglabs.org/index.jsp

[7] Eclipse RCP Tutorial: http://www.vogella.de/articles/EclipseRCP/article.html

[8] Eclipse Riena Tutorial: http://www.ralfebert.de/blog/eclipsercp/riena_tutorial/

[9] NetBeans Platform Learning Trail: http://netbeans.org/features/platform/all-docs.html

Holger Grosse-Plankermann ([email protected]), Diplominformatiker, ist als IT-Berater bei der iks Gesellschaft für Informations- und Kommunikationssysteme mbH tätig. Er be-schäftigt sich seit vielen Jahren mit verteilten JEE-Systemen, Web-2.0-Technologien sowie Rich-Client-Architekturen.

Jörg Meister ([email protected]) arbeitet seit vielen Jahren als freiberuflicher Softwareentwickler und Berater. Seine Schwerpunk-te sind Rich-Client-Architekturen und JEE-Systeme.

7www.JAXenter.de javamagazin 8 | 2011

Sonderdruck

Page 8: RCP-Vergleich, ein Artikel im Java Magazin 08/2011

© Software & Support Verlag GmbH

Notizen:

8 javamagazin 8 | 2011

Sonderdruck

iks Gesellschaft fürInformations- undKommunikationssysteme mbH

Siemensstraße 2740721 Hilden

Telefon 0 21 03 - 58 72 -0Telefax 0 21 03 - 58 72 -58

[email protected]

i sk

Gesellschaft fürInformations- und Kommunikationssysteme mbH

Softwareentwicklung

IT-Beratung

IT-Konzepte

Business Intelligence

Individuelle IT-Konzepte und Softwarelösungen

Anzeige_1-3-hoch_Print_x.indd 1 20.02.2009 11:22:17