2009-10-23 7 views
57

Nous essayons de déterminer comment implémenter un framework de plugin simple pour un service que nous implémentons et qui permet de "brancher" différents types de calculatrices.Choix du framework de plugin Java

Après avoir lu number des messages sur les cadres de plug-in Java, il semble que les options les plus courantes sont:

OSGI semble être plus que nous avons besoin. "Rolling your own" est ok mais il serait bon de réutiliser une bibliothèque commune. Donc, nous sommes à la JPF et 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. J'ai seulement vu un post sur StackOverflow à ce sujet. Est-ce que quelqu'un d'autre a une expérience avec JSPF? Ou d'autres commentaires sur ce choix de design?


Mise à jour: Il n'y a pas nécessairement une bonne réponse à ce .. mais nous allons aller avec l'idée de Pavol que nous avons juste besoin vraiment, solution très simple. Merci EoH pour le bon guide.

Répondre

29

Si vous envisagez d'avoir un seul (ou seulement quelques) points d'extension pas très complexes, il se peut qu'un SPI bien défini et une configuration soient suffisants. Pas besoin d'utiliser un framework de plugin.

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

Plus de détails (sur demande):

SPI = Service Provider Interface, un "équivalent côté d'implémenteur 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 de fantaisie pour une interface à mettre en œuvre par vos plugins (c'est-à-dire, définit le contrat pour vos plugins). Un joli petit article "Creating a Service Provider Interface" d'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 elle-même. 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 du JAR File Specification.

+0

API ou SPI? Qu'est-ce que SPI? – Egwor

+0

Nous avons juste un (ou tout au plus quelques) extensions simples. Pouvez-vous élaborer sur votre idée? –

+0

Désolé pour une réponse tardive. J'ai mis à jour ma réponse originale avec plus de détails. –

43

(Disclaimer: Je suis l'auteur de JSPF, afin de mieux prendre mes commentaires avec un grain de sel ;-)

La principale raison pour laquelle j'ai commencé avec le JSPF était parce que j'ai eu le même problème que vous avez 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 perdais dans la lecture de documentation et que j'oubliais presque ma tâche initiale. Donc, selon votre déclaration

Nous essayons de déterminer comment mettre en œuvre un cadre simple plug-in pour un service que nous mettons en œuvre que permet différents types de calculatrices pour être « embroché ».

Je pense que vous pourriez donner une chance à JSPF et voir dans quelle mesure vous venez dans une heure ou deux. Cependant, la décision finale dépend également un peu de ce que vous voulez exactement réaliser et des circonstances spécifiques.

J'ai entendu des résultats positifs d'un certain nombre de personnes qui l'utilisaient pour structurer leurs projets ou charger des plugins dans leurs projets. D'un autre côté, je connais aussi une personne de notre département qui l'a rejetée parce qu'elle ne pensait pas que ça se mélangeait bien avec son style de programmation.

Donc, pour répondre à votre question brièvement (et sûrement d'une manière biaisée), j'utiliser

OSGi pour les projets et les équipes

  • qui sont grandes et ont beaucoup de gens qui travaillent là-dessus
  • qui justifient les frais généraux de la mise en place de l'infrastructure
  • dans le 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/équipe qu'ils ciblent)
  • qui sont dans le besoin d'installations plus structurées pour organiser leur code, comme les configurations XML, la gestion détaillée du cycle de vie des plugins, les plugins extensibles ...

JSPF pour les projets et les équipes

  • de petite taille, à la suite d'un paradigme agile
  • que juste besoin quelque chose qui fonctionne hors de la boîte, sans avoir besoin de configurations ou configuration
  • prêt à sacrifier certaines fonctionnalités pour plus de simplicité

J'espère que vous trouverez le cadre de plugin le plus approprié pour votre scénario. Et, peu importe ce que vous essayez, je serais heureux d'entendre parler de vos résultats.

+3

Quelqu'un at-il utilisé JSPF? en production? –

+0

a quelqu'un avec un exemple simple avec JSPF? Je voudrais comprendre la fonctionnalité Options. – capovawi

+4

Est-ce que jspf est déprécié? – wener

2

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