Comment créer un pluginable programme Java?
Je veux créer un programme Java qui peut être étendu avec des plugins. Comment puis-je faire et où dois-je regarder?
J'ai un ensemble d'interfaces que le plugin doit mettre en œuvre, et il devrait être dans un bocal. Le programme devrait regarder pour les nouveaux pots dans un relatif (pour le programme) dossier et de les enregistrer en quelque sorte.
Bien que je n'aime Eclipse RCP, je pense que c'est trop pour mes besoins simples.
C'est la même chose pour le Printemps, mais depuis que je suis va regarder ça de toute façon, je pourrais aussi bien essayer.
Mais encore, je préfère trouver un moyen de créer mon propre plugin "cadre" aussi simple que possible.
- double possible de la Meilleure façon de construire un système de Plugin Java. C'est plus tôt, mais l'autre est devenu de plus en plus populaire à la fin.
Vous devez vous connecter pour publier un commentaire.
Je l'ai fait pour ce logiciel que j'ai écrit dans le passé, il est très pratique. Je l'ai fait en créant d'abord une Interface que tous mes 'plugin' classes nécessaires à mettre en œuvre. J'ai ensuite utilisé le Java Chargeur de classe à la charge de ces classes et de créer des instances d'entre eux.
Une façon, vous pouvez aller à ce sujet est ceci:
Qui a chargé la classe, maintenant, vous devez créer une instance de celle-ci, en supposant que le nom de l'interface est MyModule:
Regarder dans OSGi.
D'une part, OSGi offre toutes sortes d'infrastructures pour la gestion, de départ, et de faire bien d'autres choses modulaire avec des composants logiciels. D'autre part, il pourrait m'trop lourd pour vos besoins.
D'ailleurs, Eclipse utilise OSGi pour gérer ses plugins.
Je vous recommande de jeter un oeil de près la Java de Fournisseur de Service (SPI) de l'API. Il propose un système simple pour trouver toutes les classes dans toutes les Bocaux sur le chemin de la classe que de s'exposer en tant que mise en œuvre d'un service particulier. Je l'ai utilisé dans le passé avec le plugin systèmes avec un grand succès.
Bien que je vais deuxième la solution retenue, si un plugin de base d'appui est nécessaire (ce qui est le cas la plupart du temps), il y a aussi le Plugin Java Cadre (JPF) qui, bien que manquant de la documentation appropriée, est une très soigné plugin de mise en œuvre du cadre.
Il est facilement déployable et - lorsque vous obtenez par le biais de la classloading idiosynchrasies - très facile à développer avec. Un commentaire ci-dessus est d'être conscient que le plugin loadpaths ci-dessous le répertoire plugin doit être nommé d'après le plein classpath en plus d'avoir ses fichiers de classe déployé dans un paquet normal de chemin tracé nommé. E. g.
À la maison-grandi chargeur de classe approche:
Alors que c'est certainement une bonne façon d'apprendre sur les chargeurs de classe il ya quelque chose appelé "chargeur de classe de l'enfer", surtout connu par les gens qui lutta avec lui quand il vient à utiliser dans les grands projets. Conflit de classes sont faciles à introduire et difficile à résoudre.
Et il y a une bonne raison pourquoi eclipse fait le déplacement à OSGi ans.
Donc, si un de ses plus alors un projet de compagnie, de prendre un air sérieux dans OSGi. Sa peine de regarder.
Vous en apprendrez plus sur les chargeurs de classe, PLUS un émergentes technologie standard.
Avez-vous envisagé la construction sur Eclipse Riche Client de la Plateforme, et en l'exposant ensuite l'Éclipse cadre de l'extension?
Également, selon vos besoins, le Framework Spring pourrait aider avec cela et d'autres choses que vous pourriez faire: http://www.springframework.org/