![]() |
|
|
|||||||
| Plattformprogrammierung Eclipse RCP und Co. |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 21.12.2006
Beiträge: 348
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Hallo,
wenn man mittels eines EMF-Modells eine komplexe RCP-Anwendung auf Basis von Eclipse erstellen will, wie geht man dann vor? Ich hab zwar ein Buch über EMF, aber da wird nix über RCP gesagt, und ein Buch über RCP, aber da wird nix über EMF gesagt. Meine naive Vorstellung ist: Man kann von EMF ja auch einen Editor für das Datenmodell erzeugen lasssen. Damit kann man das Modell grundsätzlich bearbeiten, aber diese Editor-Applikation entspricht ja bei weitem noch nicht der angepeilten, fertigen Anwendung. Dennoch ist das automatisierte Erzeugen von Editor für Baumstrukturen, Properties usw. natürlich enorm praktisch. Man lässt sich also den Editor-Code erzeugen, hat damit ein Grundgerüst für die Anwendung, und bearbeitet diesen dann per Hand nach. Oder wie? Gruß+Danke Jan |
|
|
|
| #2 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.752
Abgegebene Danke: 0
Erhielt 49 Danke für 48 Beiträge
|
Der EMF Editor ist sehr erweiterbar. Du kannst auch deinen eigenen Implementieren, wenn er dir nicht zusagt und trotzdem von EMF profitieren, da dir im generierten Edit Code schon ContentProvider, LabelProvider, Commands,... erstellt wurden. Damit ist es dann sehr einfach einen eigenen Editor umzusetzen.
Zusätzlich gibt es auch noch GMF um grafische Editoren zu generieren und XText für textuelle. Eine schickere Properties View kann man sich mit wenigen Klicks mit EFF erzeugen. Allen Ansätzen gemein ist, dass ausdrücklich erwünscht ist generierten Code mit händischem zu mischen. Versteh es allerdings nicht als initialen Generator und danach händisches weiterarbeiten. Der Workflow ist üblicherweise: -generieren -customizen -generieren -weiter customizen... Händische Änderungen bleiben dabei dank JMerge erhalten sofern man sich an die Doku hält. @generated NOT usw.Wenn du nun daraus einen RCP haben möchtest, dann erstellst du mit Eclipse eine Product Definition, wählst die PlugIns/Features aus die enthalten sein soll, definierst Icon und Splashscreen und schon kannst du den RCP auf Knopfdruck bauen.
__________________
Take back the Desktop |
|
|
|
| #3 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.12.2006
Beiträge: 348
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Danke für die Antwort. Es hat sich aber mal wieder herausgestellt, wie es so oft mit leistungsfähigen Frameworks ist.. man muss sich da erstmal ziemlich intensiv einarbeiten, in diesem Fall sogar in mindetens zwei (EMF und Eclipse RCP), und das dauert dann alles in allem sehr viel länger, als wenn ich die Sachen einfach per Hand selber programmiere. Es bringt einem wenig, wenn man weiss das die tollsten Sachen möglich sind, aber bevor sie das dann auch ganz praktisch sind, liegt die Lektüre eines oder mehrer Bücher mit 500 Seiten Dicke vor einem, noch dazu auf Englisch.
Zumal das Datenmodell in meiner Anwendung relativ simpel ist. Kann man in einer Stunde selber programmieren, und XML mittels JaxB ist auch schnell obendraufgesetzt. Hab mich jetzt endgültig dafür entschieden, das Datenmodell selber zu schreiben, XML-konvertieren mit JaxB zu integrieren, Persistenz mittels JPA und alles nicht als RCP-Anwendung, sondern als seam-basierte Webanwendung. Das ist die beste und produktivste Variante. |
|
|
|
| #4 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.752
Abgegebene Danke: 0
Erhielt 49 Danke für 48 Beiträge
|
Wie du meinst, ich würde allerdings unabhängig von dieser Anwendung die Einarbeitung in EMF in Erwähgung ziehen, als Investition in die Zukunft...
Eclipse on my mind: Lessons learned about modeling
__________________
Take back the Desktop |
|
|
|
| #5 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.12.2006
Beiträge: 348
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Ich finde EMF ja auch grundsätzlich schon gut. Es hängt wirklich von der konkreten Anwendung ab. EMF hat schon viel Overhead, den man erstmal lernen muss. Wenn man z.B. gar keine RCP-Editoren gebrauchen kann (weil man eine Webanwendung schreibt), ist z.B. JaxB deutlich einfacher, wenn es "nur" darum geht, aus Objekten XML zu machen und umgekehrt. Einarbeitung samt Ausprobieren 10 Minuten, ein paar Annotationen, vier Zeilen java-Code, fertig. Und bereits mit JaxB hat man schon viel produktiven Gewinn. Da EMF ja sicherlich noch deutlich mehr kann, kann ich mir schon vorstellen, dass man damit sehr gut effizient Anwendungen entwickeln kann. Aber um ein Projekt innerhalb weniger Tage fertigzustellen, ist der Einarbeitungsaufwand erstmal zu groß.
|
|
|
|
| #6 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.752
Abgegebene Danke: 0
Erhielt 49 Danke für 48 Beiträge
|
Das gleiche bekommt man mit EMF aber auch. Mehr als 10 Minuten dauert es nicht ein Modell inklusive XML Repräsentierung zu erzeugen. Wahlweise wie bei JaxB aus Annotationen, per Ecore Editor, Grammatik, oder XML Schema. Also dabei sehe ich keinen großen Unterschied ausser, dass das EMF Modell deutlich besser als das JaxB Modell ist.
__________________
Take back the Desktop |
|
|
|
| #7 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.12.2006
Beiträge: 348
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Aber die Einarbeitungszeit ist deutlich grösser, selbst für die einfachen Dinge muss man bei EMF mindesens ein oder zwei Stunden ansetzen, bei JaxB 10 Minuten! Ausserdem ist JaxB Java-Standard und steht überall funktionsfähig zur Verfügung; wenn man EMF hingegen ausserhalb von Eclipse einsetzen will, wirds zusätzlich bastelig, sofern es überhaupt funktioniert.. hab mal spasseshalber versucht, EMF in einer NetBeans-RCP-Anwendung einzusetzen, und das hat nicht geklappt (aus mir nicht erklärlichen Ursachen). Ausserdem ist JaxB nur ein "obendrauf" auf bestehende Klassen, EMF ist ein wesentlich tieferer Eingriff (eigene Objekt-Klassen, dieser ganze Kram mit E davor), und so weiter, und so fort.. naja man kann die beide im Grunde kaum vergleichen. Für "schnell und einfach XML-Funktionalität" kann JaxB die bessere Wahl sein.
Ist wohl eine ganz allgemeine Feststellung, man muss immer den Produktivitätsgewinn durch ein Framework abwiegen gegen den Aufwand, sich da einzuarbeiten. Je nach Situatipn ist mal das eine, mal das andere besser. |
|
|
|
| #8 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.752
Abgegebene Danke: 0
Erhielt 49 Danke für 48 Beiträge
|
Ich weiß nicht wo du das mit den Stunden hernimmst.
-Neue Ecore Datei anlegen -Klassen und Properties eintragen -Genmodel aus der Ecore anlegen -Auf generieren drücken fertig. Dauert 2 Minuten und ist unbestreitbar schneller als Java Interfaces anzulegen und Annotationen einzutragen. Wenn das Schema schon da ist geht es noch schneller, per Wizard genmodel und ecore aus der XSD anlegen lassen (4 Klicks), generieren, fertig. Das generierte Modell ist um Klassen besser als das JaxB Modell. EMF ist von Anfang an auf Standalone Betrieb ausgelegt und mit basteln hat das nichts zu tun. Du brauchst ein paar Runtime Jars (im Bereich einiger KB, nicht mehr), wie bei JaxB auch bevor es ins JDK aufgenommen wurde, also auch hier kein Unterschied. EMF ist nicht nur sehr viel mächtiger als JaxB, sondern auch Performance und Heap Optimiert. Wenn es dir auf minimalen Heap ankommt, wirst du es schwer haben händisch ein Modell zu erstellen das weniger Memory Footprint hat als ein EMF Modell mit der Ultra-Slim-Diet. JaxB Modelle können sich nicht selbst konsistent halten und enthalten keine Business Logik. Du musst diese Teile also alle noch selbst coden und umständlich an dein Modell anflanschen, während all das Bereits Teil von EMF ist. Ein gutes Modell braucht fast immer eine Observer Schnittstelle. Mit JaxB musst du sie selbst implementieren (was keine triviale Aufgabe ist, da es einige Pitfalls zu beachten gibt). Mit EMF bekommst du es geschenkt. Query Support, Indexing, Model Repository, DB Persistenz, Diff Model, Match Model, Versionierung, Validierung, OCL Support, ... Alles optionale EMF Komponenten die du geschenkt bekommst. JaxB hingegen erzeugt lediglich stumpfe Datencontainer die nichts mit einem echten Datenmodell gemein haben und klopft sie anschließend in XML...
__________________
Take back the Desktop |
|
|
|
| #9 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.12.2006
Beiträge: 348
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Irgendwie berücksichtigst Du bei Deinen Zeitangaben allerdings nie die Zeit, die es für jemanden, der von all diesen Dingen absolut keine oder nur teilweise Ahnung hat, braucht, um sich erstmal einzuarbeiten. Wenn man all die von Dir erwähnten Features nutzen will, können da, wenn mans nur nebenbei macht, einige Wochen ins Land ziehen.
Und zu dem "kein Gebastel".. das hab ich ja gemacht, die paar runtime-jars meinem Netbeans-Projekt hinzugefügt, es liess ich auch kompilieren, aber es lief nicht.. und nu? Wenn da gemeckrt wird, es würden Klassen nicht gefunden werden, die man aber dennoch problemlos im Quellcode importieren konnte? Ich gebe Dir schon grundsätzlich Recht dass EMF eine gute Sache ist und einem vieles abnimmt, aber man muss sich da auch erst einarbeiten, und das Projekt muss von Anfang an auf EMF ausgerichtet sein (bzw. EMF ist ja quasi der Kern des ganzen dann). Obs Sinn macht oder nicht hängt dann natürlich auch ganz stark davon ab, ob man in der Zukunft auch weitere Projekte haben wird, wo sowas wie EMF von Nutzen ist, und bei mir ist das vorraussichtlich nicht so. Geändert von JanHH (14.02.2010 um 03:44 Uhr) |
|
|
|
| #10 (permalink) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.752
Abgegebene Danke: 0
Erhielt 49 Danke für 48 Beiträge
|
EMF/FAQ - Eclipsepedia
Wenn deine Anwendung also sauber aufgebaut ist, kann ihr egal sein welche Technolgie zum Einsatz kommt. Wenn die Migration funktioniert hat, kann man den angeflanschten Zusatzcode löschen den man bisher brauchte um das JaxB Modell sinnvoll benutzen zu können. Nun, ich bin der Meinung das EMF für jede Java Anwendung von Nutzen ist.
__________________
Take back the Desktop |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #11 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.12.2006
Beiträge: 348
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
Naja, keine Sorge, das Thema EMF ist für mich ja auch noch lange nicht abgehakt.. finds ja schon für sich faszinierend genug, um sich damit mal zu beschäftigen.
Dass es bei Netbeans nicht lief, hat wohl eher was mit der doch etwas eigenwilligen Konfiguration von Netbeans-RCP-Anwendungen zu tun. Die richtigen Jars waren auf jeden Fall dabei. Aber ist nun auch egal, das Thema Netbeans ist auch mal wieder abgehakt. Wie siehts bei EMF eigentlich mit JPA-Persistenz aus? |
|
|
|
| #12 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.752
Abgegebene Danke: 0
Erhielt 49 Danke für 48 Beiträge
|
Alles vorhanden.
EMF/Teneo/EclipseLink JPA - Eclipsepedia CDO Hibernate Store Model Relational Mapping - Eclipsepedia
__________________
Take back the Desktop |
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| RCP Anwendung nicht weiterladen bei Exception in Plugin | SegFault | Plattformprogrammierung | 2 | 22.12.2009 11:10 |
| RCP Anwendung Neustarten und Argumente mitgeben | Koringar | Plattformprogrammierung | 1 | 01.12.2009 11:09 |
| JPA und Eclipse RCP Anwendung mit Fragmenten | Saxony | Datenbankprogrammierung | 3 | 20.10.2009 10:21 |
| Inkompatibilität meiner RCP Anwendung zwischen JAVA 1.5 & JAVA6 | SaSa83 | Plattformprogrammierung | 2 | 08.04.2009 20:16 |
| eclipse rcp + emf | Allgemeine Java-Themen | 13 | 24.10.2007 16:46 | |