Plugin System Verständnisfrage

agent47

Aktives Mitglied
Ich versuche gerade ein mini Plugin System zu entwerfen, habe aber noch ein paar kleine Probleme. Ziel ist es das man ähnlich wie bei Eclipse zum installieren von einem Plugin lediglich eine Jar Datei in einen bestimmten Ordner kopieren muss und der Rest automatisch passiert.

Im Endeffekt soll ein Swing Fenster mit Menüleiste und einem TabbedPane im Hauptbereich entstehen in das man über Plugins jederzeit neue Tabs einfügen kann und diese über das Menü öffnen und schließen kann. Prinzipjell braucht man dafür nicht zwingend Plugins aber zum verstehen wie man sowas in Java umsetzt ist das ein schönes Projekt. Bisher habe ich Plugin Systeme in PHP geschrieben aber das lässt sich mit Java schlecht vergleichen.

Mein Ablauf währe das beim Programmstart ein Unterordner Namens "Plugin" nach .Jar Dateien durchsucht wird, in den Jar Dateien müsste dann außer dem Programmcode eine Manifest Datei oder XML Datei mit Informationen zu den Klassen sein die den Menüpunkt und das Tab beschreiben und zugehörige Klassen verraten. Werden Jar Dateien gefunden müsste die Meta Datei gelesen werden, die Jar Datei in den ClassPath eingetragen werden und dann weiß ich aber nicht weiter, schon das Eintragen in den ClassPath weiß ich nicht wie ich das programmiertechnisch umsetzen kann.

Kann mir da jemand weiter helfen?
 

agent47

Aktives Mitglied
Ich möchte das zumindest in diesem kleinen Umfang schon mal selbst schreiben. Mir geht es vor allem erst mal darum den Aufbau und Ablauf 100% zu verstehen.
 

Wildcard

Top Contributor
Dann lies dir doch die OSGi Spezifikation durch...
Die Sache ist nicht trivial. Eine Klasse per URLClassloader zur Laufzeit zu laden ist kein Problem, wenn deine Plugins aber miteinander kommunizieren müssen oder zB Bibliotheken benötigen dann wird es richtig tricky. Dann brauchst du ein komplexes Classloader Konstrukt das damit dynamisch umgehen kann und dann fängst du an OSGi neu zu implementieren, nur viel schlechter.
Ehrlich gesagt ist mir selbst nicht ganz klar wie die OSGi Implementierungen mit reinem Java funktionieren, da das OSGi Classloader Konstrukt die Classloading Regeln der JVM aushebeln kann.
Wenn du dich stattdessen gleich mit OSGi beschäftigst lernst du wichtige Skills für deine weitere Laufbahn, denn OSGi ist die Zukunft.
 
Zuletzt bearbeitet:

agent47

Aktives Mitglied
Untereinander kommunizieren müssen die Plugins nicht auch externe Bibliotheken sind nicht vorgesehen. Im Prinzip ist es nichts anderes als das anstatt mehrere einzelne Tools zu machen alles in ein Fenster gepackt werden soll.
 

Wildcard

Top Contributor
Du sagst jetzt das sie das nicht müssen, das ändert sich aber vielleicht.
Ich verstehe nicht ganz warum du dich so gegen den Standard für Modulsysteme wehrst. OSGi ist deshalb so weit verbreitet weil es hervorragend ist. Du tust dir einen Gefallen die Zeit sinnvoll zu nutzen und dich in OSGi einzuarbeiten als versuchen das selbst stricken zu wollen. Das wird sonst höchstens eine halbgare Lösung und dauert auch viel länger als sich in OSGi einzuarbeiten.
 
G

Gast2

Gast
Ziel ist es das man ähnlich wie bei Eclipse zum installieren von einem Plugin lediglich eine Jar Datei in einen bestimmten Ordner kopieren muss und der Rest automatisch passiert.
wahrscheinlich ist Wildcard deshalb gleich zu OSGi gerutsch, da die Ecpliseplugins um einiges komplizierter sind als das was Du machen willst

Bisher habe ich Plugin Systeme in PHP geschrieben aber das lässt sich mit Java schlecht vergleichen.
kannst Du mir dazu mal was per PN schicken - ich will zumindest mal rein schauen wie das unter PHP funktioniert - danke

Mein Ablauf währe das beim Programmstart ein Unterordner Namens "Plugin" nach .Jar Dateien durchsucht wird, in den Jar Dateien müsste dann außer dem Programmcode eine Manifest Datei oder XML Datei mit Informationen zu den Klassen sein die den Menüpunkt und das Tab beschreiben und zugehörige Klassen verraten. Werden Jar Dateien gefunden müsste die Meta Datei gelesen werden, die Jar Datei in den ClassPath eingetragen werden und dann weiß ich aber nicht weiter, schon das Eintragen in den ClassPath weiß ich nicht wie ich das programmiertechnisch umsetzen kann.
Du musst nur im Hauptprogramm den Pfad zum Pluginverzeichnis an den Classpath hängen, dann brauchst Du die Plugins nur noch ins Verzeichnis kopieren ... zum Laden reicht für einfache Dinge der URLClassloader ... willst Du die Plugins zur Laufzeit auch wieder rausschmeißen oder oder oder - dann brauchst Du einen eigenen Classloader

Kann mir da jemand weiter helfen?
ist zwar .NET - aber das Prinzip ist unter Java (und anderen Sprachen) das Gleiche ... Calculon - All My Plugins

hand, mogel
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java Plugin System (ohne OSGI) Allgemeine Java-Themen 10
Joew0815 Best Practice Wie am besten Plugin-System erstellen? Allgemeine Java-Themen 12
P System.out im Eclipse plugin Allgemeine Java-Themen 4
M Plugin-System Allgemeine Java-Themen 4
F Probleme mit eigenem Plugin-System Allgemeine Java-Themen 3
N Plugin-System: Klassen über String laden Allgemeine Java-Themen 3
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Meeresgott Best Practice MVC mit Plugin-Feature Allgemeine Java-Themen 4
J Application mit PLugin erweitern Allgemeine Java-Themen 2
T Eclipse IDE Plugin Error Log Allgemeine Java-Themen 0
S Maven Jars dynamisch laden / Plugin-Struktur erstellen Allgemeine Java-Themen 14
D Bradley Local Thresholding plugin imagej Allgemeine Java-Themen 6
A Best Practice Java - eine Art Plugin-Struktur Allgemeine Java-Themen 3
M eigenes Seekarten-Tool (oder PlugIn?) Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
P Find Bugs plugin Allgemeine Java-Themen 2
C BlackBox-Framework - Plugin Programmierung Allgemeine Java-Themen 4
F Framework/Plugin für Tree-Darstellung in Graph Allgemeine Java-Themen 0
F Parser Framework/Plugin für Datei in Custom-Format Allgemeine Java-Themen 2
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
M ImageJ: Mit PlugIn Weichzeichnungsfilter schreiben Allgemeine Java-Themen 9
X Java Plugin Befehle Allgemeine Java-Themen 2
O Plugin perfomrant implementieren Allgemeine Java-Themen 12
Y PlugIn für ImageJ Allgemeine Java-Themen 2
B Java Plugin schreiben Allgemeine Java-Themen 11
U Realisierung einer "Plugin-Schnittstelle": Allgemeine Java-Themen 12
D Checkstyle Plugin Allgemeine Java-Themen 4
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
partsch Eclipse UML - Plugin Allgemeine Java-Themen 2
A Start von Java Plugin Allgemeine Java-Themen 2
S URLClassLoader und Eclipse Plugin Allgemeine Java-Themen 4
S Intellisense nach SVN Subclipse Plugin Allgemeine Java-Themen 2
B maven 2 error bei plugin download Allgemeine Java-Themen 7
V plugin.jar in application aus jar Allgemeine Java-Themen 2
N Java Plugin? Allgemeine Java-Themen 2
N Argumente für Plugin-Architektur Allgemeine Java-Themen 5
S Plugin zur Generierung von Builds Allgemeine Java-Themen 7
J Java Plugin probleme beim Laden? Allgemeine Java-Themen 3
G AI als PlugIn Allgemeine Java-Themen 2
R Synthesizer-PlugIn Allgemeine Java-Themen 4
S java plugin in firefox/chroot_x86_32 integrieren Allgemeine Java-Themen 3
L Java6 update N bekommt neues Browser-Plugin, bitte testen. Allgemeine Java-Themen 7
G Plugin (Visual Editor) in Eclipse einfügen Allgemeine Java-Themen 2
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
V Relative Pfade in Eclipse RCP Plugin Allgemeine Java-Themen 14
G Java-Plugin für Vista (x64)? Allgemeine Java-Themen 3
J Suse + Tomcat + Sysdeo Plugin: Tomcat als user starten Allgemeine Java-Themen 2
G Eclipse RCP vs. PlugIn Allgemeine Java-Themen 2
reibi Eclipse PlugIn selber programmieren Allgemeine Java-Themen 3
M PlugIn für Klasse bauen Allgemeine Java-Themen 6
G plugin für eclipse zum kommentieren Allgemeine Java-Themen 9
N Als *.esp (Elder Scrolls Plugin) exportieren Allgemeine Java-Themen 12
C Dynamisches Nachladen von JARs (Plugin) Allgemeine Java-Themen 3
D Eigener Maven2 Plugin Server? Allgemeine Java-Themen 3
P Fehlermeldung "Die Klasse sun/plugin/javaRunTime kann n Allgemeine Java-Themen 3
S Nice Plugin in Eclipse Allgemeine Java-Themen 2
K PDF PlugIn zur Anzeige/Druck von PDF's Allgemeine Java-Themen 7
T Plugin um unbenötigte librarys zu finden Allgemeine Java-Themen 12
E Visueller Editor für Druckformulare - Plugin für Eclipse Allgemeine Java-Themen 2
rambozola jpg in mit eclipse-plugin one-jar erstellter jar-datei Allgemeine Java-Themen 2
T eigenes Browser Plugin Allgemeine Java-Themen 6
T Plugin engine? Allgemeine Java-Themen 10
S ActiveX Java Plugin Allgemeine Java-Themen 2
G Plugin Management Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4
T OJI-Plugin Allgemeine Java-Themen 4
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
J Frage zu System.getproperties. Allgemeine Java-Themen 60
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
F Frage zu System.in Allgemeine Java-Themen 3
E System property setzten Allgemeine Java-Themen 8
Kirby.exe Movement System für Spiel Allgemeine Java-Themen 13
O Beziehung System.exit(x) <>Errorlevel Allgemeine Java-Themen 2
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
H Im Tiled-Map-System ein Item anklicken Allgemeine Java-Themen 0
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Login System Allgemeine Java-Themen 19
A BufferedReader ohne System.in Allgemeine Java-Themen 9
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
J System.arraycopy ergibt anderes Resultat als for-loop Allgemeine Java-Themen 4
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
D Java System.out::println Allgemeine Java-Themen 1
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
S Ist Java ein geschlossenes System? Allgemeine Java-Themen 2
L Erste Schritte Suche Java Wiki System? Allgemeine Java-Themen 5
chuxXo System/JLayer Volume ändern Allgemeine Java-Themen 0
Neumi5694 System.out und System.err umleiten - NICHT im Quelltext Allgemeine Java-Themen 4
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
S Best Practice System.arrayCopy verändert Ziel-Array Allgemeine Java-Themen 2
A Methoden Der Sinn von system.out.print(); Allgemeine Java-Themen 9
A System freezes when trying to run external command from Java with wait for Allgemeine Java-Themen 3
A Java | Login-System Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
M collection persistence system Allgemeine Java-Themen 4
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben