Erweiterung eines Programms

Status
Nicht offen für weitere Antworten.

Generic1

Top Contributor
Hallo,

ich plane gerade ein größeres Projekt und frage mich gerade wie ich die zukünftigen Erweiterungen berücksichtigen soll,
Ich plane natürlich in die Richtung das einige Patterns verwende (wos Sinn macht) aber mir geht der Gedanke mit den Plugins nicht mehr aus dem Kopf, macht es Sinn dass ich mein Projekt in die Richtung treibe, dass ich mit plugins das Programm erweitern könnte und wieviel Aufwand steckt dahinter, das so zu Realisieren,

Es geht um eine Datenbankanbindung auf der einen Seite (Model) und dem Darstellen der Daten auf der anderen Seite (View)
Das Projekt soll dann stetig erweitert werden,

Was denkt ihr darüber? Gibts vielleicht einen Link oder ein gutes Buch zu diesem Thema?
 
M

maki

Gast
Man hält das Programm am flexibelsten in dem man nur Dinge einbaut, die gebraucht werden und genügend Unittests hat um Refactoring zu ermöglichen.
 

Generic1

Top Contributor
UnitTest sind sowieso Standard, und ich werd auch nur programmieren, was wirklich von nöten ist, aber ich möchte mir das Erweitern so einfach wie möglich machen, wenn ein Kunde etwas will, dann soll er sich das Plugin, dass ich ihm programmiere, einfach installieren,
es geht ja auch um die Vermeidung einer Neuinstallation,
am Besten wäre es, wenn man die Erweiterung sogar zur Laufzeit tätigen kann,

Gibts in diese Richtung einen vernünftigen Lösungsweg?
 
M

maki

Gast
Was, wenn sich die Basis ändert, also keines der Plugins?

Beschreib doch mal ein bisschen mehr, muss dein Tool 24/7 laufen?

Desktop oder Serveranwendung?
 

Generic1

Top Contributor
maki hat gesagt.:
Was, wenn sich die Basis ändert, also keines der Plugins?

Beschreib doch mal ein bisschen mehr, muss dein Tool 24/7 laufen?

Desktop oder Serveranwendung?


Wenn sich die Basis ändert wird nichts anderes übrigbleiben, als eine Umprogrammierung aber aus erfahrung kann ich sagen dass die Basis meistens im Großen und Ganzen bestehen bleibt und nur zusätze erwünscht werden,

Es geht um eine Server-Client Anwendung, der Server stellt Daten von einem externen Gerät zur Verfügung, Clients können sich zum Verbinden und zyklich Daten vom Server Abfragen und stellen diese mit einer Swing GUI- dar, der Server stellt übrigens auch zyklische Anfragen an das externe Gerät,
 

Generic1

Top Contributor
Wildcard hat gesagt.:
OSGi dürfte dann Mittel der Wahl sein.


hab mir gerade die Erklärung in wiki durchgelesen, hört sich interessant an obwohl ich noch keinen blassen Schimmer habe, wie ich das machen soll,
das OSGi- Framework wird wohl mit sehr viel Reflection arbeiten, kann das sein?
 

Wildcard

Top Contributor
Nur mit Reflection kannst du anhand eines zur Laufzeit gegebenen Strings eines Klassennames ein Objekt erstellen, aber das läuft alles im Hintergrund und sollte dich nicht interessieren.
Der Punkt ist, das du mit einem OSGi Framework in der Lage bist Module zur Laufzeit hinzuzufügen, zu entfernen und zu aktualisieren und ich denke, das ist was du haben wolltest.
Auch Application Server wie zB JBoss werden in Zukunft auf OSGi basieren.
 

Generic1

Top Contributor
steht das OSGi irgendwie im Widerspruch zum MVC Pattern oder unterstützen sich beide?
[Diese Frage könnte allerdings jetzt völliger nonsense sein aber meine Anwendung baut jetzt auf dieses Pattern auf und ich versuch mir gerade einen Überblick zu verschaffen, wie ich das OSGi implementieren könnte]
 

Wildcard

Top Contributor
Generic1 hat gesagt.:
steht das OSGi irgendwie im Widerspruch zum MVC Pattern oder unterstützen sich beide?
Das eine hat mit dem anderen überhaupt gar nichts zu tun. Was innerhalb der Bundles geschiet, interessiert OSGi nicht.
OSGi implementiert man übrigens nicht selbst, sondern verwendet eine der bestehenden Implementierungen.
Equinox, Felix,...
 

Generic1

Top Contributor
Ok ich verstehe,
hab mir gerade ein Step by Step Tutorial angesehen, welches Knopflerfish verwendet,

[url]http://www.knopflerfish.org/tutorials/osgi_tutorial.pdf [/url]

Was mir jetzt nicht ganz klar ist ist, das bei diesem Tutorial ein desktop heruntergeladen wird und in diesem dann die Bundels zum Laufen gebracht werden,

Mir ist der zusammenhang zwischen meiner Java- Applikation und dem OSPi desktop nicht klar, soll der Knopferfish meine Java- Applikation simulieren?
 

Wildcard

Top Contributor
Ich habe Knopflerfish noch nciht verwendet, aber der Desktop ist wohl als Management Konsole zu verstehen die dir erlaubt Bundles zu laden, starten, stoppen,...
Also eine Testumgebung um deine Bundles in Aktion zu sehen.
 

Generic1

Top Contributor
wie würde ich dann meine Bundels in meine Java- Applikation einbinden,
das müsste ich ja dann wie Testumgebung machen?
 

Wildcard

Top Contributor
Du bindest keine Bundles in deine Java Applikation ein, du erstellst deine Java Applikation als Sammlung von Bundles.
Die Bundles kommen dann in das OSGi Framework und stellen sich gegenseitig Services bereit.
 

Generic1

Top Contributor
ok ich hab [hoffentlich] verstanden, ich teile mein projekt in teilprojekte auf, programmier die Bundels und erstelle mein programm mit dem OSGi Framework,

eine Frage drängt sich bei mir noch auf, wie bekomme ich die teilprojekte, mach ich da mal ein uml vom ganzen damit ich weiß welchen service die objektverbände anbieten,
wie gehst du da vor,
danke
 

Wildcard

Top Contributor
Du erstellst die Teile nicht mit einem OSGi Framework, du klinkst die Teile in ein OSGi Framework ein.
Zur Aufteilung, naja, versuch dein Produkt in sinnvoll getrennte (möglichst unabhängige) Module aufzuteilen, das werden dann die Bundles.
 

Generic1

Top Contributor
ok verstanden, und das einzige, was ich bei der Programmierung der Teile berücksichtigen muss, ist dass ich eine build.xml und eine manifest- Datei habe und bei meinen Teilprojekten das Interface BundleActivator implementiere


ich muss ja auch zukünftige implementierungen berücksichtigen um dann einen Service bereitstellen zu können, oder?
 

Wildcard

Top Contributor
Eine IDE wie Eclipse hilft dir dabei gewaltig.
Eclipse läuft mit Equinox, die Bundles funktionieren aber auch für beliebige andere OSGi Frameworks.
Eclipse kümmert sich um das Manifest, bindet die nötigen jars ein usw. Von da ab ist es im Prinzip ganz normale Java Entwicklung mit einigen zusätzlichen (mächtigen) Bibliotheken die man mitverwenden kann,
 

Generic1

Top Contributor
Wildcard hat gesagt.:
Das eine hat mit dem anderen überhaupt gar nichts zu tun. Was innerhalb der Bundles geschiet, interessiert OSGi nicht.
OSGi implementiert man übrigens nicht selbst, sondern verwendet eine der bestehenden Implementierungen.
Equinox, Felix,...

Da happerts bei mir noch mit dem verständnis, ich verstehe deine Antwort so, dass ich innerhalb eines Bundles eine MVC- Architektur haben kann, dem OSGi ist diese MVC- Struktur in einem Bundle egal!??

und in meinem "MVC- Bundle" muss ich eben Services zur verfügung stellen, damit ich neue Bundles hinzufügen kann,

Hab ich das so richtig verstanden?
 

Wildcard

Top Contributor
Ich geb dir jetzt mal ein Beispiel, damit du siehst, dass MVC nichts damit zu tun hat.
Wie oben schonmal erwähnt, läuft Eclipse auf dem OSGi Framework Equinox.
Die Java IDE, die jeder sofort mit Eclipse assoziert ist ein solches Bundle (bzw. ein paar). Die Eclipse Hilfe ist ein Bundle. Die Suche ist ein Bundle.
 

Generic1

Top Contributor
Hab mich jetzt das ganze Wochenende mit der RCP- Programmierung beschäftigt (mit NetBeans) und bin zu der Erkenntnis gekommen, dass das genau das Richtige ist, genau das brauche ich,
jetzt ist nur mehr die Frage ob ich das Ganze mit NetBeans oder mit Eclipse mache und was eigentlich der Unterschied zwischen dem OSGi und dem RCP ist,

Vielleicht kann mir das jemand erklären, ich bin bis jetzt noch nicht auf die schliche gekomnen,


schönen Tag noch,
 

Wildcard

Top Contributor
OSGi und RCP haben erstmal nichts miteinander zu tun. Erstellt man eine Eclipse RCP, läuft im Hintergrund ein OSGi Framework, bei einer Netbeans RCP nicht.
Ob du Netbeans RCP, oder Eclipse RCP verwendest, bleibt dir überlassen, wenn du nach Rat fragst, würde ich allerdings Eclipse RCP empfehlen, weil das nunmal de facto Standard ist und Netbeans eher ein Exot.
 

Generic1

Top Contributor
Wie würdest du die Einarbeitungszeit beziffern und könntest Du eine Literatur zum Einarbeiten empfehlen,
Ich habe bei Amazon nachgesehen, da sind manche Bücher sehr schlecht bewertet, vor allem das Buch
Rich-Client-Entwicklung mit Eclipse 3.3.
Ich habe nich nicht sehr viel mit Eclipse programmiert, programmier aber seit ca. 3 Jahren mit NetBeans,
 

Wildcard

Top Contributor
Einarbeitungszeit für was genau?
Bücher für Eclipse RCP gibt es einige sehr gute.
Bekannt sind vor allem diese:
http://www.amazon.de/Contributing-Eclipse-Principles-Patterns-Plug-Ins/dp/0321205758
http://www.amazon.de/Eclipse-Building-Commercial-Quality-Plug-ins/dp/0321228472

Ob man's braucht ist wieder eine andere Frage, da die Eclipse Hilfe sehr ausführlich ist und es tonnenweise Tutorials im Netz gibt.
Ich habe nich nicht sehr viel mit Eclipse programmiert, programmier aber seit ca. 3 Jahren mit NetBeans,
Was nützt dir das? Die Schwierigkeit ist wohl kaum, den Java Editor zu bedienen (ob nun Eclipse, oder NetBeans), sondern seine Software auf der jeweiligen Plattform aufbauen zu lassen und da fängst du in beiden Fällen von 0 an.
 

Generic1

Top Contributor
Einarbeitungszeit, damit ich eine ansprechende GUI mit funktionalität bekomme, wie z.B.: JTabbedPanes die man docken und undocken kann, ein ordentliches Hilfe- System, Floatable Panel an den seiten,

aber das werd ich dann eh sehen, nach dem nächsten we :) herzlichen Dank für den Rat!!
 

Wildcard

Top Contributor
Generic1 hat gesagt.:
Einarbeitungszeit, damit ich eine ansprechende GUI mit funktionalität bekomme, wie z.B.: JTabbedPanes die man docken und undocken kann, ein ordentliches Hilfe- System, Floatable Panel an den seiten,
Das ist schon fertig und kann genauso weiter verwendet werden. Heißt dann zwar nicht mehr JTabbedPanes, weil Eclipse kein Swing verwendet, tut aber hier nichts zur Sache.
 
T

tuxedo

Gast
Naja, wer sich mit Swing auskennt und sich gegen SWT (was auf der Eclipse Schiene verwendet wird) wehrt, der ist mit NetBeans evtl besser dran, da ja schon alles bekannt ist (also die Swing-Welt).

Aber das ist dann wohl schon eher Glaubens-/Einstellungssache eines jeden einzelnen.

- Alex
 

Generic1

Top Contributor
alex0801 hat gesagt.:
Naja, wer sich mit Swing auskennt und sich gegen SWT (was auf der Eclipse Schiene verwendet wird) wehrt, der ist mit NetBeans evtl besser dran, da ja schon alles bekannt ist (also die Swing-Welt).

Aber das ist dann wohl schon eher Glaubens-/Einstellungssache eines jeden einzelnen.

- Alex

ich hab mir die Sache mit dem SWT gerade angesehen, das ist genau das was ich brauche da meine GUI auf allen Plattformen laufen soll und man den Unterschied zwischen meiner GUI und den anderen Programmen kaum kenne soll,
also ich werd jetzt mal bei Eclipse bleiben, schließlich verwenden auch 80% der Entwickler Eclipse,

mal schauen, wieviel aufwand das ist sich in SWT einzuarbeiten,
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
N Dateien mit einer bestimmten Erweiterung suchen Allgemeine Java-Themen 9
L ö,ä,ü werden mit text/plain nicht dargestellt - Erweiterung Allgemeine Java-Themen 2
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
RalleYTN DPI eines Bildes ändern Allgemeine Java-Themen 4
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
A einmalige Ausführung eines Methodenabschnittes Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
F Teil eines Bildes laden Allgemeine Java-Themen 1
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
RalleYTN Input/Output URL eines Zip Entry? Allgemeine Java-Themen 2
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
P Wie funktioniert das Feedback eines Klicks auf eine Java GUI Allgemeine Java-Themen 10
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
T Bezeichnung eines Objektes mit String/int kombinieren Allgemeine Java-Themen 3
Z Auswerten eines eingegeben Termes Allgemeine Java-Themen 13
X Registrierung eines Ecore-Models außerhalb der Eclipse-Umgebung Allgemeine Java-Themen 0
R Instanzen eines Programms Allgemeine Java-Themen 8
I Arbeitsmaterialien eines Softwareentwicklers? Allgemeine Java-Themen 7
L Größe eines Objekts im Arbeitsspeicher Allgemeine Java-Themen 1
D Name eines Nicht-String Objekts ausgeben Allgemeine Java-Themen 4
A Helligkeit eines Bildes berechnen Allgemeine Java-Themen 1
L Anzahl der Tage eines Monats Allgemeine Java-Themen 3
S Java Problem bei der Rückgabe eines Arrays Allgemeine Java-Themen 19
C Best Practice Tiefe Kopie eines Arrays unbekannter Dimension und unbekannten Typs Allgemeine Java-Themen 4
H Klassennamen zum Aufruf eines statischen Feldes aus Variable holen Allgemeine Java-Themen 4
C Methode für tiefe Kopie eines unbekannt (dimensionierten & typisierten) Feldes realisierbar? Allgemeine Java-Themen 7
M final vor dem parameter eines Konstruktors Allgemeine Java-Themen 1
B Hintergrundbild eines JFrames? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben