www.mikrocontroller.net

Forum: PC-Programmierung Java: PlugIn-Schnittstelle implantieren


Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich wollte mal Fragen, wie ich am einfachsten in Java eine 
PlugIn-Schnittstelle implantiere.

In .Net ist das für mich kein Problem, da braucht man nur ein Interface 
im Hauptprogramm zu erstellen, erstellt eine Libary-Projekt, welches 
dieses Interface "mit Leben ausfüllt" und schon kann man diese Libary in 
der Hauptanwendung mittels "System.Reflection.Assembly.LoadFile" laden 
und benutzen. Aber gut, da .Net nicht wirklich für Linux geeignet ist, 
kann ich leider .Net nicht nutzen.

In JAVA scheint das ja leider nicht so einfach zu geh'n. Könnte mir 
evtl. da einer helfen, wie ich das möglichst einfach umsetzten kann? 
Wenn es nicht zu kompliziert ist, wäre ein kleiner Code-Schnippsel für 
mich am besten.

Vielen Danke schonmal!

Julian

Autor: Marvin S. (demo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

* Schonmal was von mono gehoert?
* Klasse nachladen: Class myPluginClass = 
Class.forName("bla.blub.plugin");
* Instantiieren: Object myPlugin = myPluginClass.newInstance();

Das ist natuerlich die unsaubere Variante. Wenn dus genauer haben willst 
kannst du das ganze auch mit einem Interface und den Klassen 
"Constructor" und "Method" machen. Das geht da recht huebsch mit.

Gruesse

Marvin

Autor: apfelmännchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeit wäre, das ganze Project als Elcipse/Equinox RCP 
Anwendung zu schreiben.

http://www.ralfebert.de/rcpbuch/overview/

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, schon mal Danke für die Antworten.
Mono ist mir bekannt, ich sehe das ganze aber eher als "Notlösung" an 
und nehme es ehrlich gesagt nicht so ernst, da einfach viele Funktionen 
fehlen und viele zusätzliche Bibliotheken, wie z.B. viele UI-Komponenten 
aus Drittbibliotheken unter Mono nicht funktionieren.

Class myPluginClass = Class.forName("bla.blub.plugin");
myPlugin = myPluginClass.newInstance();

Das hört sich schon recht einfach an. Nur wie muss ich das oben mit dem 
Class.forName("bla.blub.plugin"); verstehen. Die PlugIn's werden ja wohl 
in einem Unterordner sein. Woher will JAVA denn dann wissen, woher es 
die PlugIn's laden muss!?


Und die Möglichkeit als Elcipse/Equinox RCP hab ich mir auch schon 
angesehn, jedoch empfinde ich das ganze als "Overkill".


Das PlugIn soll später in einem Verwaltungsprogramm als Schnittstelle 
zwischen Programm und Online-Shops, wie z.B. reichelt und conrad, 
fungieren, um dort die Preise zu ermitteln. Von daher werden keine 
"komplexen" PlugIn's benötigt.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Julian W. schrieb:

> Das hört sich schon recht einfach an. Nur wie muss ich das oben mit dem
> Class.forName("bla.blub.plugin"); verstehen. Die PlugIn's werden ja wohl
> in einem Unterordner sein. Woher will JAVA denn dann wissen, woher es
> die PlugIn's laden muss!?

Die muessen natuerlich im CLASSPATH sein. Alternativ kannst du dich mit 
Classloadern beschaeftigen. Ohne ein wenig Grundlagenarbeit wirst du 
aber weder so noch so sonderlich gut weiterkommen...

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, google mal mit besseren Suchbegriffen gefüttert (Danke für das Wort 
Refelction, das hab ich gebraucht) und schon was brauchbares gefunden:

http://www.java-blog-buch.de/d-plugin-entwicklung-in-java/

Das sieht schon mal brauchbar aus...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.