La meilleure technologie pour ajouter la prise en charge de plug-in à une application J2SE? [fermé]

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

Question

J'écris une application de bureau J2SE qui requiert que l’un de ses composants soit enfichable. J'ai déjà défini l'interface Java pour ce plugin. L'utilisateur doit pouvoir sélectionner au moment de l'exécution (via l'interface graphique) quelle implémentation de cette interface il souhaite utiliser (par exemple, dans une boîte de dialogue d'initialisation). Je pense que chaque plugin sera présenté sous la forme d’un fichier JAR contenant la classe d’implémentation et toutes les classes d’aide nécessaires.

Quelle est la meilleure technologie pour effectuer ce type de tâche dans une application Java de bureau?

Était-ce utile?

La solution

Après de nombreuses tentatives d'architectures Java basées sur des plug-ins (c'est précisément ce que vous semblez rechercher), j'ai finalement trouvé JSPF est la meilleure solution pour le code Java5. il n’a pas les besoins énormes des solutions OSGI, mais est plutôt facile à utiliser.

Autres conseils

OSGI est certainement une solution valable. Mais, en supposant que vous n’ayez pas besoin de décharger pour recharger le plugin, il se peut qu’il utilise un marteau pour casser un écrou.

Vous pouvez utiliser les classes de 'java.util.jar' pour analyser chaque fichier JAR de votre dossier de plugins, puis utiliser un 'java.net.URLClassLoader' pour charger le fichier correct.

Si vous êtes simplement "&"; Pour pouvoir brancher un composant, il suffit d'instancier les classes en fonction de méta-informations, par exemple. lire via un META-INF / des chargeurs de classes à partir des différents fichiers JAR situés sur votre chemin de classe ou dans un répertoire de plug-in donné.

OSGi, d’autre part, permet de structurer l’ensemble de votre application. Si vous avez déjà une application de bureau volumineuse nécessitant une partie enfichable, la courbe d'apprentissage est longue. Si vous démarrez vierge avec ce qui sera une application de bureau, OSGi fournit des moyens de modulariser l'ensemble de l'application. Il s’agit de "l’isolation des composants". et indépendance des modules.

Apache Felix est un bon début si vous voulez descendre dans la voie OSGi. Cela peut paraître compliqué et lourd, mais c'est uniquement parce qu'on n'est pas habitué à ce niveau d'isolement entre les modules. Auparavant, il était si facile d'appeler n'importe quelle méthode publique ...

Avez-vous pensé à utiliser OSGi en tant que plugin? Avec OSGi, vous pouvez mettre à jour / remplacer, charger ou décharger vos modules à la demande.

Une des solutions envisagées consiste à faire en sorte que mon application lance un conteneur OSGi léger, qui, si je comprends bien, pourrait découvrir quels fichiers JAR de plug-in existent dans un dossier désigné, ce qui me permettrait de les répertorier pour la l'utilisateur à choisir. Est-ce faisable?

J'ai aussi trouvé cet article de Richard Deadman, mais il semble un peu daté (2006?) Et ne mentionne ni OSGi (du moins pas par son nom) ni le package java.util.jar

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top