# Plugin-Architektur - Welche nehmen?



## schlingel (17. Dez 2010)

Hallo Leute,

ich möchte - zu Übungszwecken - ein altes .Net-Projekt von mir aufwärmen und neu in Java implementieren. Dazu benötige ich eine Plugin-Funktionalität mit der ich zur Laufzeit beliebige "Binaries" laden kann.

Wozu ist das gut? Bei dem alten Projekt handelt es sich um einen Skript-Interpreter dessen Syntax und Handling Forth ähneln. Dabei konnte man Words bzw. Kommandos nicht nur in dem Skript selbst schreiben sondern "nativ" mit .Net. 

Die DLLs konte man dann mittels Befehl laden. Dahinter verbarg sich ein simpler Code der sich alle Klassen instanzierte die von dem Interface IWord ableiteten. Technisch habe ich das mit dem Activator-Objekt aus der Reflection-Funktionalität von .Net umgesetzt.

FÜr Java habe ich mir das JPF angesehen. Das schien mir viel Code für das simple Nachladen von Objekten und die anderen Sachen die ich gefunden habe, so wie OSGi, schienen noch mehr Boiler-Code zu beinhalten.

Wie implementiert man solch eine Plugin-Funktionalität am besten in Java? Auf Google hab ich nichts brauchbares gefunden.


----------



## maki (17. Dez 2010)

Hat keine Erfahrung mit JPF, sieht aber ziemlich tot aus 
Letzter Release war 2007: JPF (Java Plugin Framework) - Browse Files at SourceForge.net

OSGi wäre eine Möglichkeit, Eclipse bietet exzellentes Tooling, mit SpringDm wird der Biolerplatte Code vermieden.
Wenn dir das zu aufwändig ist oder dich mit keinem der Frameworks auskennst, kannst du dir immer noch deinen eigenen Mechanismus schreiben, je nach Anforderung ist das entweder ziemlich einfach oder kann  sehr haarig werden, kannst ja mal nach URLClassLoader suchen.


----------



## Wildcard (17. Dez 2010)

> FÜr Java habe ich mir das JPF angesehen. Das schien mir viel Code für das simple Nachladen von Objekten und die anderen Sachen die ich gefunden habe, so wie OSGi, schienen noch mehr Boiler-Code zu beinhalten.


Mit OSGi Declarative Services oder Guice + Peaberry reduziert sich der Boilerplate Code (der auch bei Plain OSGi nicht viel ist) ebenfalls auf 0. OSGi ist der de-facto Modularisierungsstandard in Java.


----------



## SebastianM (18. Dez 2010)

So wie ich das sehe brauchst du überhaupt kein Plugin Framework, sondern das standard SPI Framework von Java sollte dir reichen.


----------



## maki (18. Dez 2010)

SebastianM hat gesagt.:


> So wie ich das sehe brauchst du überhaupt kein Plugin Framework, sondern das standard SPI Framework von Java sollte dir reichen.


"standard SPI Framework von Java" soll was genau sein??


----------



## mjdv (18. Dez 2010)

Wenn man nichts spezielle brauch, kann man das auch eben selber machen.

Das hab ich bei google zB gefunden: Develop a Java Plugin Framework | twit88.com

Trail: The Reflection API (The Java™ Tutorials)

design patterns - Best way to build a Plugin system with Java - Stack Overflow

ZIP/JAR basierendes Plugin System @ tutorials.de: Tutorials, Forum & Hilfe

http://www.java-forum.org/java-basi...7593-programmiert-man-plugin-system-java.html

Ein fachmal bisschen schauen, des geht eigentlich fast genauso wie man es in .net machen kann.


----------



## schlingel (19. Dez 2010)

Hallo Leute, danke für die Rückmeldung.

Ich werde mich jetzt zu aller erst mit der einfachsten Methode beschäftigen und rein mit den Möglichkeiten aus der JRE arbeiten. Das Tutorial sieht ganz gut aus, was sagt ihr dazu?


----------

