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

Java Discussion :

Concevoir et implémenter une application modulaire [Tutoriel]


Sujet :

Java

  1. #1
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut Concevoir et implémenter une application modulaire
    Bonjour,

    Je viens de terminer l'écriture d'un article sur la conception et l'împlémentation d'une application modulaire.

    Ce tutoriel présente les différentes étapes de réflexion qui se montrent quand on développe une application modulaire. Un exemple complet d'une petite application modulaire est également disponible.

    Tout commentaire est bienvenu

  2. #2
    Membre à l'essai
    Profil pro
    Directeur de projet
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 23
    Points
    23
    Par défaut
    Salut,

    Très bon tuto dans l'ensemble... Je compte en présenter un dans quelques temps se basant sur le même principe mais en tirant plus vers OSGi et une implementation de type Extender Pattern...

    Merci en tout cas.
    A plus,

  3. #3
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut
    Bonjour,

    Bravo et merci pour cet article ! Il est très riche et cela faisait longtemps que je cherchais quelque chose d'aussi clair pour appréhender le principe d'un vrai 'ERP' en Java.

    Merci !

    PS : 2.3 "Vous pouvez bien sûr imaginez" --> imaginer

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Très bon article. Intéressant et clair.

    Je me demande ce que l'introduction d'OSGI apporterait en termes de simplification de code (la partie chargement de module j'imagine) et d'inconvénients éventuels.

  5. #5
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Merci pour vos commentaires

    Pour ce qui est d'OSGi, ça permettrait de ne pas considérer certaines questions, comme le chargement des modules, la spécification des interfaces et déléguer ces problèmes au conteneur OSGI.

    OSGI permet de faire des choses plus évoluées que ce que l'on voit ici, mais je l'ai trouvé assez lourd et il ne m'a pas tout à fait plu.

    Citation Envoyé par if_zen Voir le message
    PS : 2.3 "Vous pouvez bien sûr imaginez" --> imaginer
    Merci pour la correction

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Points : 20
    Points
    20
    Par défaut
    Félicitations pour ce très bon tutoriel qui m'aurait bien servi quelques mois en arrière sur un projet d'études !

    Cela dit, je trouve qu'utiliser les annotations en lieu et place ou en complément des interfaces est une bonne approche pour gérer la modularité, non ?

    M'enfin bon, ça reste très cosmétique comme remarque !

    Merci encore pour cet article,

  7. #7
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par jinh68 Voir le message
    Félicitations pour ce très bon tutoriel qui m'aurait bien servi quelques mois en arrière sur un projet d'études !

    Cela dit, je trouve qu'utiliser les annotations en lieu et place ou en complément des interfaces est une bonne approche pour gérer la modularité, non ?

    M'enfin bon, ça reste très cosmétique comme remarque !

    Merci encore pour cet article,
    Merci

    Effectivement, les annotations peuvent être un excellent moyen de spécifier les modules

    Personnellement, pour mon projet personnel qui utilise la modularité, j'ai fait un mix des deux, j'ai par exemple une annotation PrimaryModule pour indiquer que le module est primaire, mais la classe étant aussi IModule pour indiquer que c'est un module.

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut les évenements
    bonjour,
    je vous félicite pour ce tutorial.
    je suis débutant en java et j'ai suivit à la lettre les étapes de votre tutorial et ça marche.
    mnt je veux ajouter un module qui permet de récupérer un évènement de la classe Coreview (par exemple un clique sur un bouton) et d'effectuer des traittement dans le module à travers le viewmanager.

    puisque le viewmanaager dans le tuto permet uniquement de faire des actions sur les contrôles de coreview mais ne permet pas d'ajouter des nouveaux conroles et de gerer les évènements associés dans des modules.

    pouvez vous me guider un peu?
    merci

  9. #9
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par med_aboub Voir le message
    bonjour,
    je vous félicite pour ce tutorial.
    je suis débutant en java et j'ai suivit à la lettre les étapes de votre tutorial et ça marche.
    mnt je veux ajouter un module qui permet de récupérer un évènement de la classe Coreview (par exemple un clique sur un bouton) et d'effectuer des traittement dans le module à travers le viewmanager.

    puisque le viewmanaager dans le tuto permet uniquement de faire des actions sur les contrôles de coreview mais ne permet pas d'ajouter des nouveaux conroles et de gerer les évènements associés dans des modules.

    pouvez vous me guider un peu?
    merci
    Pour ça, ça sort un peu du cadre. Comme je l'ai dit dans l'article, cette structure est très basique.

    Pour ce que vous voulez faire, voici ce que je ferais :
    • Modifier CoreView pour permettre de modifier le composant principal ==> Ajouter une méthode setMainComponent() dans ViewManager qui permet de modifier le composant principal (contentPane) de CoreView.
    • Modifier le composant principal depuis le module. On a ainsi le contrôle sur le composant.


    Par contre, avec ça, si 2 modules veulent modifier le composant principal, ils vont se marcher dessus. Une autre solution est de mettre un JTabbedPane comme content pane de CoreView et d'ajouter une méthode sur ViewManager qui permette de rajouter un onglet au tableau. Comme ça, les modules ne se marcheront pas dessus.

    J'espère avoir été clair

    Sinon, tu peux aussi regarder http://baptiste-wicht.developpez.com...tting-started/ qui permet de développer une application modulaire avec une librairie beaucoup plus complète.

  10. #10
    Membre habitué
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    Merci beaucoup pour ton tutorial...

  11. #11
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut
    Excuse moi mais j'ai un peu du mal à appréhendé le principe de l'application modulaire. J'ai lu votre tutoriel sur le sujet et j'aimerais savoir:
    1- Es ce que le différents module constitue tous de petit application developper en java? d'après moi ce n'est pas le cas
    2- Comment générer le jar d'un package si je suppose que chacun de mes modules sont réuni dans des packages
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

  12. #12
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ce ne sont pas des applications, dans le sens, ou ils ne pourraient rien faire tout seul (sans l'application de base). Par contre, ils sont chacun dans un fichier .jar séparé.

    Si par package, tu entends l'application, tu ne peux plus utiliser un seul gros .jar. Tu auras plusieurs jar, un exécutable pour l'application, des jars pour les modules et éventuellement des jars pour des librairies éventuelles. Pour livrer ton application, tu peux faire une archive avec tout ça.

  13. #13
    Membre actif Avatar de aljessy
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 319
    Points : 200
    Points
    200
    Par défaut
    je parlais de petit application mais sans classe main. Es ce que les modules sont de petite application mais sans la classe main?
    Faire aisément ce qui est difficile aux autres, voilà le talent. Faire ce qui est impossible au talent, voilà le génie.

  14. #14
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Oui, on pourrait dire ça.

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2013
    Messages : 49
    Points : 68
    Points
    68
    Par défaut Petite correction
    Bonjour Baptiste Wicht,

    Tout d'abord je tiens à vous féliciter pour ce tuto qui est très bien expliqué (et moi même débutant dans la programmation modulaire avec Java ceci m'a bien aidé).

    Mais si je peux me permettre, quand vous chargez votre Module, je vous conseillerai quand même une petite sécurité :

    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
    17
    18
    19
    20
    21
    22
    23
     
    public synchronized Class loadClass(String className, boolean resolveIt) throws 
    ClassNotFoundException { 
    Class result;
    Byte []classData;
     
     // 1) Cherche dans le cache si la classe n’a pas déjà été chargée 
    result = (Class) classes.get(className); 
    if(result != null)
    return result;
     
     // 2) Utilisation du primordial CL pour voir s’il s’agit d’une classe 
    // Systeme. Très important de faire ce test ! Sinon on pourrait remplacer 
    // Le security manager ! 
    try {
     result = super.findSystemClass(className);
     return result;
    } catch(ClassNotFoundException e) {
    System.out.println("Pas une classe système !");
     }
    .
    .
    .
    Au moins là vous êtes sur de ne pas "corrompre" votre programme java.
    Si vous appelez votre module System (par exemple) sans faire ce test de sécurité, il se peut que vous ne pourriez plus utiliser les méthodes de System

    Après comme j'ai dit, je débute dans ce genre de programmation et il se peut que je me trompe sur l'explication... N'hésitez pas à me le faire remarquer

Discussions similaires

  1. Problème de refresh dans une application modulaire
    Par TigrouMeow dans le forum Windows Forms
    Réponses: 8
    Dernier message: 11/10/2007, 16h06
  2. Réponses: 7
    Dernier message: 16/06/2007, 13h03
  3. Comment faire une application modulaire
    Par JuJu° dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/08/2006, 12h35

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