Beste Technologie zum Hinzufügen von Plugin -Support zu einer J2SE -Anwendung? [abgeschlossen

StackOverflow https://stackoverflow.com/questions/81495

Frage

Ich schreibe eine J2SE -Desktop -Anwendung, bei der eine ihrer Komponenten steckbar ist. Ich habe die Java -Schnittstelle für dieses Plugin bereits definiert. Der Benutzer sollte in der Lage sein, zur Laufzeit (über die GUI) auszuwählen, welche Implementierung diese Schnittstelle verwenden möchte (z. B. in einem Initialisierungsdialog). Ich stelle mir vor, dass jedes Plugin als JAR -Datei verpackt wird, das die implementierende Klasse sowie alle Helferklassen enthält, die möglicherweise erforderlich ist.

Was ist die beste Technologie, um diese Art von Dingen in einer Desktop -Java -App zu tun?

War es hilfreich?

Lösung

Nachdem viele Versuche für Plugin-basierte Java-Architekturen (was genau das ist, wonach Sie zu suchen scheinen), fand ich endlich JSPF die beste Lösung für den Java5 -Code sein. Es hat nicht die enormen Bedürfnisse von OSGI -ähnlichen Lösungen, sondern ist stattdessen ziemlich einfach zu bedienen.

Andere Tipps

OSGI ist sicherlich ein gültiger Weg. Angenommen, Sie müssen nicht entladen, um das Plugin neu zu laden, kann ein Hammer verwendet werden, um eine Mutter zu knacken.

Sie können die Klassen in 'java.util.jar' verwenden, um jede JAR -Datei in Ihrem Plugins -Ordner zu scannen und dann einen 'java.net.urlclassloader' zu verwenden, um in die richtige zu laden.

Wenn Sie "nur" eine Komponente benötigen, um steckbar zu sein, reicht es aus, die Klassen auf der Grundlage von Meta-Informationen einfach zu instanziieren. .

OSGI hingegen bietet Mittel zur Strukturierung Ihrer gesamten Anwendung. Wenn Sie bereits eine große Desktop -Anwendung haben, die einen Teil steckbar benötigt, wäre dies eine steile Lernkurve. Wenn Sie mit einer Desktop -App leer beginnen, bietet OSGI Mittel zur Modularisierung der gesamten Anwendung. Es geht um "Isolation von Komponenten" und Unabhängigkeit von Modulen.

Apache Felix bietet einen schönen Start, wenn Sie die Osgi Lane entlang gehen möchten. Es mag kompliziert und schwerwiegend aussehen, aber das liegt nur daran, dass man nicht an diese Isolationsniveau zwischen Modulen verwendet wird. Früher war es so einfach, einfach eine öffentliche Methode anzurufen ...

Haben Sie sich vorgestellt, OSGI als Plugin -Framework zu verwenden? Mit OSGI können Sie Ihre Module bei Bedarf aktualisieren, ersetzen, laden oder entladen.

Ein Ansatz, den ich nachdenke, ist, dass meine Anwendung einen leichten OSGI -Container startet. aus. Ist das machbar?

Ich habe auch gefunden Dieser Artikel von Richard Deadman, aber es sieht ein wenig veraltet aus (2006?) Und erwähnt weder Osgi (zumindest nicht namentlich) noch die java.util.jar Paket

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top