# RCP Verständnisfrage



## kulri (20. Mrz 2009)

Hallo Rich Clients 

Ich bin Informatik-Student und wir machen als Studienprojekt eine Rich Client Anwendung bzw. wir haben es vor.
Wir wollen eine ERP-Software erstellen. Das Projekt ist vom Umfang her recht groß, von der Komplexität her eher mittel. Ist RCP das Richtige für unser Vorhaben? Vor allem Modularität ist uns wichtig, darum die Überlegung, Module als Plugins zu realisieren.
Was wir eigentlich machen wollen, ist eine (möglichst kleine) Hauptanwendung, die lediglich den Zugriff auf die (für alle Module) gemeinsame Datenbasis ermöglicht und noch ein wenig Kernfunktionalität enthält. Alles Weitere sollte über Plugins realisiert werden.

Ich habe bereits einige Tutorials gemacht und kleine Plugins mit ein paar Views und Perspectives zum laufen gebracht. Aber so ganz verstehe ich dieses Plugin-system noch nicht. Wenn ich mit File->New->Plugin Project ein neues Projekt anlege und im Wizard bei "Would you like to create a Rich Client Application?" *Yes* auswähle, erzeuge ich ein eigenständiges Plugin, richtig??? Und an welche Hauptanwendung tue ich dieses Plugin jetz "anpluggen"?
Hätte ich *No* ausgewählt (was ich natürlich schon mal versucht habe), würde ich ein Eclipse-Plugin erstellen, also tatsächlich für die Entwicklungumgebung, ist das richtig?

Danke schonmal.

greetz
poor client


----------



## maki (20. Mrz 2009)

RCP = Rich *Client* Project

Willst du denn keinen Server mit dem sich die Clients verbinden?


----------



## kulri (20. Mrz 2009)

maki hat gesagt.:


> RCP = Rich *Client* Project
> 
> Willst du denn keinen Server mit dem sich die Clients verbinden?



Doch, natürlich! Aber wie erstelle ich dann den Server, als gewöhnliche Java Anwendung?


----------



## maki (20. Mrz 2009)

Die Frage ist doch erstmal: Wie willst du mit dem Server kommunizieren?


----------



## kulri (20. Mrz 2009)

Also um zuerst einmal wollte ich eine lokale Anwendung erstellen, um das Ganze mal zu verstehen; also ala Eclipse.

Oder wie hast du deine Frage gemeint?


----------



## maki (20. Mrz 2009)

Gut, dann lass den Server erstmal weg.

Wenn du ein RCP erstellst, dann erstellst du quasi schon "sowas wie Eclipse".
Dafür kannst du dann weitere Plugins schreiben.


----------



## kulri (20. Mrz 2009)

das heißt, auch für die "Hauptanwendung" ist mein Einstiegspunkt erstmal ein Plugin, bei dessen Erstellung ich im Wizard bei der Frage "Would you like to create a Rich Client Application?" *Yes* auswähle?


----------



## maki (20. Mrz 2009)

Dein RCP ist deine Hauptanwendung.
Deine Plugins sind soz. deine "module".


----------



## kulri (20. Mrz 2009)

hm... ok, danke.


----------



## foobar (20. Mrz 2009)

> Wenn ich mit File->New->Plugin Project ein neues Projekt anlege und im Wizard bei "Would you like to create a Rich Client Application?" Yes auswähle, erzeuge ich ein eigenständiges Plugin, richtig???


Damit erstellst du eine komplette RCP-Anwendung, die erstmal aus einem Plugin besteht.



> Und an welche Hauptanwendung tue ich dieses Plugin jetz "anpluggen"?


Das was du erstellst ist ein Plugin + nativen Launcher + Basis Plugins d.h. du hast bereits alles für eine lauffähige kleine Software erstellt.



> Hätte ich No ausgewählt (was ich natürlich schon mal versucht habe), würde ich ein Eclipse-Plugin erstellen, also tatsächlich für die Entwicklungumgebung, ist das richtig?


Damit erstellst du NUR ein Plugin und keine RCP Anwendung. Dieses Plugin kann aber genauso die Eclipse IDE erweitern als auch eine andere Eclipse RCP Anwendung.
Klingt vielleicht erstmal verwirrend ist aber eigentlich ganz einfach. Eclipse ist nicht nur eine IDE sondern ein Ecosystem das aus zahllosen Plugins besteht. D.h. alles in Eclipse ist ein Plugin(Osgi-Bundle).
Plugins können zu Features zuammen gefasst werden also eine Art Gruppe von Plugins, die eine bestimmte Funktionalität zur Verfügung stellen.

Benutz mal die Suche. Wir haben schon einige Themen zu Eclipse RCP und auch weiterführende Links hier im Forum.
Hier findest du auch ein paar Anfänger POdcasts: Eclipse Webinars, Podcasts, and more | Eclipse Live
oder hier: Eclipse Rich Client Platform (RCP) with Eclipse Ganymede (3.4) - Tutorial


----------



## kulri (20. Mrz 2009)

super, vielen dank foobar! .... endlich beantwortet mal jemand eine gestellte Frage, anstatt neue aufzuwerfen


----------



## Wildcard (20. Mrz 2009)

kulri hat gesagt.:


> Wir wollen eine ERP-Software erstellen. Das Projekt ist vom Umfang her recht groß, von der Komplexität her eher mittel. Ist RCP das Richtige für unser Vorhaben? Vor allem Modularität ist uns wichtig, darum die Überlegung, Module als Plugins zu realisieren.


Erst müsst ihr euch eine Frage beantworten:
Wollt ihr nur Modularität, oder Modularität + vorhande Eclipse Funktionalitäten verwenden.
Wenn es eigentlich nur um die Modularität geht, dann reicht OSGi, dafür braucht ihr kein Eclipse PlugIn.
Eclipse PlugIns sind eine Spezialisierung von OSGi Bundles. Ein OSGi Bundle läuft in einem OSGi Framework, konsumiert Services, stellt welche Bereit und managed seine Abhängigkeiten, Lebenszyklus,... über ein erweitertes Manifest.MF
Bei Eclipse Plugins ist das genauso, allerdings haben sie in der Regel noch zusätzlich eine plugin.xml um Eclipse Extension Points verwenden zu können und deklarieren Abhängigkeiten auf andere Eclipse PugIns (und natürlich reine OSGi Bundles) von denen sie zusätzliche Funktionalität bekommen.

Wenn du dir selbst nicht sicher bist, beschreibe deine Anforderungen, dann lässt sich besser beurteilen ob ihr auf Eclipse aufsetzen wollt, oder ob ein beliebiges OSGi Framework ausreicht.


----------



## kulri (21. Mrz 2009)

Neben der Modularität ist uns wichtig, dass die Anwendung auch von remote genutzt werden kann, ala Home Office (aber keine web clients).
Was mir an Eclipse so gut gefällt (aus Anwendersicht), sind die Views und Perspectiven und deren Eigenschaften, wie
- Größen, Positionen ändern
- Perspektiven selbst zusammenstellen
- view komplett aus der UI herauslösen ... etc.

Diese mit all ihren Eigenschaften selbst nachzubauen, wäre wohl ziemlich aufwendig, denke ich. Wenn das also die besagten Eclipse-Funktionalitäten sind, hätte ich die auch gerne drin.

Wie würde man eine solche Client-Server-Anwendung mit RCP bzw. OSGi aufziehen?

Können RCP-Plugins auch über das Netzwerk mit der "Hauptanwendung" kommunizieren?


----------



## foobar (21. Mrz 2009)

kulri hat gesagt.:


> Wie würde man eine solche Client-Server-Anwendung mit RCP bzw. OSGi aufziehen?


Das kann man nicht in 2 Sätzen erklären. Was genau willst du denn wissen?



kulri hat gesagt.:


> Können RCP-Plugins auch über das Netzwerk mit der "Hauptanwendung" kommunizieren?


Klar, dafür brauchst du aber erstmal eine "Hauptanwendung" auf Basis von JEE, Spring, Spring dm Server oder was auch immer. Eclipse RCP ist ja "nur" der Rich Client also das was der Enduser sieht.


Eclipse Riena könnte für euch auch interessant sein: The Riena Project

Damit kannste dann deine Bundles lokal und remote verwenden. Für die Remoteunterstützung wird Hessian eingesetzt, was wesentlich Ressourcenschonender als z.b. SOAP ist.


----------



## kulri (21. Mrz 2009)

seit ein paar Tagen beschäftige ich mich jetzt mit RCP, hab viel gelesen und ein paar tutorials gemacht; dabei läuft mir ständig j2ee über den weg, wie auch bei diesem Riena Project. Eigentlich wollte ich mich erstmal nur um RCP kümmern und nicht gleich eine weitere Baustelle aufreissen.... aber es geht wohl nicht anders 
Also für j2ee habe ich folgendes Tutorial gefunden The J2EE(TM) 1.4 Tutorial.
Aber da brauche ich ja bis übernächstes Jahr, um nur das Inhaltsverzeichnis zu lesen.....
gibts da nichts .... kleineres, sofern man das Wörtchen "klein" überhaupt in Zusammenhang mit j2ee verwenden kann??
Nur, um mal einen Überblick zu bekommen.

Nochmal kurz zum Hintergrund:
Unser Team besteht aus 3 Informatik-Studenten, wir machen zusammen ein Studienprojekt, das über 1 Jahr läuft.
Jeder von uns hat natürlich auch noch etliche Vorlesungen und Praktika und ausserdem arbeiten wir alle, also Zeit ist in unserem Team knapp bemessen.
Keiner von uns hat viel Erfahrung in Java; in RCP und J2EE schon gleich dreimal nicht!
Ist es wirklich ratsam, das Studienprojekt mithilfe von RCP bzw. J2EE zu realisieren???
Ist da nicht der Einarbeitungsaufwand zu hoch???


----------



## Wildcard (21. Mrz 2009)

Ich sag es nochmal: überlegt euch welche Features das Produkt beinhalten muss/soll, vorher macht es wenig Sinn über konkrete Technologien zu diskutieren.
Welche Features hat der Client, welche der Server, wie soll die Kommunikation zwischen beiden aussehen?
Danach kann man überlegen mit welcher Technologie man am schnellsten zum Ziel kommt.


----------



## foobar (21. Mrz 2009)

Also wenn ihr wenig Erfahrung mit J2SE habt, fast keine Erfahrung mit Eclipse RCP und JEE, seid ihr wohl mit einer einfachen Swing-Fatclient Anwendung oder einer simplen Eclipse RCP Anwendung am besten beraten.
Um in Eclipse RCP richtig einzusteigen, müsst ihr auf jeden Fall mehrere Wochen planen. Da gibts schon einige APIs mit denen man sich auseinander setzen muß und die Lernkurve ist steil. 
Wenn ihr wisst was euer Produkt leisten soll, solltet ihr auch in Betracht ziehen wieviel Zeit ihr bereit seit in das Projekt zu stecken.


----------

