IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Plugin] Théorie


Sujet :

Langage Java

  1. #1
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut [Plugin] Théorie
    Bonsoir,

    Quelqu'un aurait-il un petit lien vers un site, un document, un tutorial, des exemples.... qui expliquerait comment mettre en place un système de plugins pour une application Java? (je précise que ce n'est pas un plugin Eclipse ou autre que je cherche à faire, mais quelque chose pour une application perso)

    En parallèle de ma question, je fais une recherche sur le net, mais c'est un peu la croix et la bannière (dès qu'on met "plugin" dans la recherche, on a droit à tous les trucs possibles et imaginables à rajouter à Eclipse et compagnie! )

    Pour info, j'ai déjà récupéré le code de divxdede dans les sources Java, ainsi que les tutoriels pour les plugins Eclipse.

    Merci
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je ne connais pas de tutoriel sur le sujet, mais il y a moyen de faire cela assez simplement...


    Il faut d'abord définir une interface de base, que chaque plugin devra implémenter, et qui permettra la "communication" entre ton application et ses plugins, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface Plugin {
     
    	public void doSomething();
     
    }


    Ensuite deux cas se présente :
    • Les différentes classes des plugins font partie du CLASSPATH dès le lancement de ton application, mais tu veux pouvoir les charger ou pas selon le contenu d'un fichier de configuration. Il te suffit de les charger dynamiquement par rapport au nom de la classe en utilisant la reflection. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public static Plugin loadPlugin(String name)
    		throws ClassNotFoundException, ClassCastException,
    			InstantiationException, IllegalAccessException {
     
    		// On récupère la classe par reflection depuis son non
    		Class pluginClass = Class.forName(name);
     
    		// On vérifie que la classe obtenu est bien assignable en tant de Plugin
    		// c'est à dire qu'elle implémente l'interface Plugin
    		if ( Plugin.class.isAssignableFrom(pluginClass) ) {
    			return (Plugin) pluginClass.newInstance();
    		}
    		// Sinon on renvoit une exception
    		throw new ClassCastException("The class " + name 
    				+ " MUST implements " + Plugin.class.getName());
    	}

    • Seconde possibilitée : tu veux charger un plugin depuis un fichier (ou plusieurs plugins depuis un ensemble de fichiers contenu dans un répertoire). Dans ce cas il te faut utiliser la classe URLClassLoader pour charger dynamiquement les classes depuis un fichier. Ainsi il te suffit de remplacer le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		Class pluginClass = Class.forName(name);
    Par son 'équivalent' en utilisant URLClassLoader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		File jarFile = new File (" chemin vers le fichier jar ");
    		URLClassLoader classLoader = new URLClassLoader(new URL[]{jarFile.toURL()});
     
    		// On récupère la classe par reflection depuis son non
    		Class pluginClass = classLoader.loadClass(name);
    Dans ce cas tu peux eventuelement spécifier qu'un fichier du jar contienne le nom de la classe du plugin...


    J'espère que c'est bien ce que tu voulais...

    a++

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 638
    Points
    7 638
    Par défaut
    Citation Envoyé par adiGuba
    J'espère que c'est bien ce que tu voulais...
    Ca y ressemble (surtout la seconde possibilité).
    Je teste ça et je te tiens au courant.

    Merci

    [edit]
    Ok, ça marche comme je veux.
    En combinant avec le PluginInspector des sources Java (et en adaptant un peu), je devrais arriver à mettre mon système en place.

    Ben c'était pas si compliqué que ça finalement!

    Merci encore
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lancer Eclipse en incluant ses plugins
    Par eclie dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 19/02/2009, 08h45
  2. Plugin MySQL
    Par Super Castor dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 30/08/2006, 02h54
  3. [UML] Problème avec le plugin omondo.uml
    Par seawolfm dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/10/2003, 17h40
  4. [plugin] XML/XSL
    Par cyrdec dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/04/2003, 17h50
  5. plugin winamp
    Par darkfrag dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 03/08/2002, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo