Choix du framework de plug-in Java

Nous essayons de déterminer comment implémenter une simple structure de plug-in pour un service que nous mettons en œuvre et qui permet de «twigr» différents types de calculateurs.

Après avoir lu plusieurs articles sur les frameworks Java, il semble que les options les plus courantes soient:

  • OSGI
  • ” Rolling your own ” framework de plugin
  • Le Java Plugin Framework (JPF)
  • Le Java Simple Plugin Framework (JSPF)

OSGI semble être plus que nécessaire.

“Rouler la vôtre” est bien, mais ce serait bien de réutiliser une bibliothèque commune.

Nous sums donc à la JPF et à la JSPF. JPF ne semble plus être en développement actif.

JSPF semble très simple et vraiment tout ce dont nous avons besoin. Cependant, je n’en ai pas beaucoup entendu parler. Je n’ai vu qu’un seul article sur StackOverflow à ce sujet. Est-ce que quelqu’un d’autre a de l’expérience avec JSPF? Ou tout autre commentaire sur ce choix de conception?


Mise à jour : Il n’y a pas forcément de réponse correcte à cela. Cependant, nous allons suivre l’idée de Pavol car nous avons besoin d’une solution vraiment simple. Merci EoH pour le bon guide.

    Si vous prévoyez de ne disposer que d’un (ou de quelques) points d’extension peu complexes, un SPI bien défini et un élément de configuration peuvent suffire. Pas besoin d’utiliser un framework de plugin.

    Par morceau de configuration, je veux dire un mécanisme pour trouver vos plugins. Par exemple, quelque chose comme META-INF/services/ ou simplement lister vos plugins dans un fichier de configuration.

    Plus de détails (sur demande):

    SPI = Interface du fournisseur de services , un “équivalent côté API d’une API”. Pour en savoir plus, essayez de rechercher une différence entre API et SPI. Cependant, dans ce contexte, il est juste un terme compliqué pour une interface à implémenter par vos plugins (c.-à-d. Définit le contrat pour vos plugins).

    Un article court et intéressant intitulé « Créer une interface de fournisseur de services » par Ethan Nicholas décrit comment créer votre propre SPI de la même manière que dans plusieurs parties de la plate-forme Java.

    META-INF/services/ peut être considéré comme une approche plus généralisée de la création de SPI. Plus d’informations peuvent être trouvées dans la section respective de la spécification de fichier JAR .

    (Disclaimer: je suis l’auteur de JSPF, alors mieux vaut prendre mon commentaire avec un grain de sel 😉

    La principale raison pour laquelle j’ai commencé avec le JSPF était que j’avais le même problème que maintenant: je cherchais une solution simple pour rendre mon projet de thèse 1) extensible et 2) lui donner une structure de code plus ou moins claire.

    La raison pour laquelle je n’ai pas décidé d’utiliser un framework existant était que la plupart d’entre eux étaient si lourds au départ, que je me suis perdu dans la lecture de la documentation et que j’avais presque oublié ma tâche initiale. Donc, selon votre déclaration

    Nous essayons de déterminer comment implémenter une simple structure de plug-in pour un service que nous mettons en œuvre et qui permet de «twigr» différents types de calculateurs.

    Je pense que vous pourriez donner un coup de feu à JSPF et voir à quelle distance vous vous trouvez en une heure ou deux.

    Cependant, la décision finale dépend également de ce que vous voulez réaliser et des circonstances spécifiques.

    J’ai entendu des résultats positifs de plusieurs personnes qui l’utilisaient pour structurer leurs projets ou charger des plugins dans leurs projets. D’autre part, je connais également une personne de notre département qui l’a rejetée à nouveau parce qu’il ne pensait pas qu’elle se mélangeait bien avec son style de programmation.

    Donc, pour répondre brièvement à votre question (et sûrement de manière biaisée), j’utiliserais

    OSGi pour les projets et les équipes

    • qui sont grandes et ont beaucoup de gens qui y travaillent
    • qui justifient le surcoût de la mise en place de l’infrastructure
    • besoin des services spécifiques offerts

    JPF pour les projets et les équipes

    • de taille moyenne (honnêtement, je ne suis pas sûr de la taille du projet / de l’équipe ciblée)
    • qui ont besoin d’installations plus structurées pour organiser leur code, comme les configurations XML, la gestion détaillée du cycle de vie des plug-ins, les plug-ins extensibles …

    JSPF pour les projets et les équipes

    • de petite taille, suivant un paradigme agile
    • qui ont juste besoin de quelque chose qui fonctionne immédiatement, sans configuration ni configuration
    • prêt à sacrifier certaines fonctionnalités pour plus de simplicité

    J’espère que vous trouverez le framework de plug-ins le mieux adapté à votre scénario. Et, peu importe ce que vous essayez, je serais heureux d’entendre parler de vos résultats.

    Si vous avez besoin d’une solution vraiment simple, essayez jin-plugin . C’est un framework de plugin minimaliste pour Java et PHP.