Donc il ne te reste "plus qu'à" écrire les différentes implémentations (les différents plugins).
public final class Plugin1 implements IPlugin {
// ... code d'implémentation ici
}
Tu peux...
Type: Messages; Utilisateur: le y@m's
Donc il ne te reste "plus qu'à" écrire les différentes implémentations (les différents plugins).
public final class Plugin1 implements IPlugin {
// ... code d'implémentation ici
}
Tu peux...
Oui c'est exactement ça, ainsi tu peux tout charger avec le ServiceLoader ;).
Je n'ai pas très bien compris ta question :oops:.
Dans l'exemple des codecs donné, pour ajouter des codecs tiers il suffit de rajouter un (ou plusieurs) jar(s) dans le classpath contenant (chacun)...
D'accord je comprends mieux ce que tu veux dire. Effectivement le mécanisme de chargement des implémentations est figé pour le ServiceLoader, mais comme le dit très justement Nemek, il suffit...
Même réponse que pour OSGI, le ServiceLoader est une simple classe et pas un framework complet, ce n'est pas vraiment comparable ;).
Soit tu n'as pas tout bien lu du tutoriel et des commentaires...
Le ServiceLoader est effectivement orienté service (pas pour rien qu'il s'appelle ServiceLoader :P) et on peut le rapprocher des concepts services d'OSGI.
Cependant ce sont deux choses très...
Oui le ServiceLoader est surtout adapté pour la gestion d'une collection de modules avec plusieurs implémentation simultanées et il est vrai que l'on a rarement besoin de plusieurs mécanismes...
Donc tu précises l'implémentation (via le String) lors de l'appel, on en revient à la perte d'abstraction non ? Si tu ajoutes une nouvelle implémentation tu dois modifier ton application pour y...
Et comment fais tu pour avoir plusieurs implémentations ? Tu écris X fois une Factory avec le même nom que tu mets dans chacun de tes jars ? Que va te donner un Class.forName() dans ce cas ? Comment...
C'est corrigé ;) :merci: de l'avoir signalé.
Le ServiceLoader utilise exclusivement les répertoires META-INF/services, il n'utilise jamais les System.properties ;).
@Aldian
Comme vous le soulignez il est effectivement préférable d'utiliser une factory, je suis parfaitement d'accord avec vous et c'est d'ailleurs ce qui est dit dans la javadoc du ServiceLoader....
Bonjour,
Je viens d'écrire un petit article qui présente l'utilisation des services Java.
:arrow: http://ydisanto.developpez.com/tutoriels/java/services/
Bonne lecture.
le y@m's
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.