Question

Comment rendre une application de bureau Java modulaire? Comment classer les modules?

Était-ce utile?

La solution

Par objectif de conception, la modularité signifie que vous souhaitez avoir une application composée de parties distinctes (modules) dans laquelle chaque partie a son domaine de responsabilité et contient toutes les classes concernées par ce domaine (high cohésion ), et la communication entre ces parties s'effectue par le biais d'interfaces étroites, bien définies et documentées ( couplage lâche ).

Pour ce faire, planifiez votre conception à l'avance, ajustez ces plans et refacturez le code de manière constante pendant la mise en œuvre.

Il est utile de faire la différence entre des modules techniques tels que l'interface graphique, la communication réseau ou l'accès à une base de données (qui forment souvent des couches, même si elles peuvent être subdivisées en plusieurs modules), et des modules de domaine contenant la logique et les applications spécifiques à l'application. souvent ne forment pas de couches.

Autres conseils

Découvrez les technologies OSGi. Chaque module de votre application (appelé bundle) est un fichier jar distinct. OSGi prend en charge la résolution des dépendances et le chargement dynamique des chemins de classe des bundles, etc.

Pour les applications de bureau, je vous recommande vivement de consulter DA-Launcher à partir de www.dynamicjava.org . Cela facilite beaucoup le déploiement de votre application SOOO. Ils ont également quelques fonctionnalités, comme l’APP dynamique, utiles pour toute application OSGi.

Vous voulez dire modulaire comme Eclipse?

Si vous basez votre application de bureau Java sur Eclipse RCP ou NetBeans RCP, vous bénéficierez de la modularité "gratuite" " (presque; -))

La réponse à votre question dépend vraiment de ce que vous entendez par "modulaire" .

Vous devez tenir compte de plusieurs niveaux de préoccupation lorsque vous modifiez votre application.

Tout d’abord, vous devez déterminer si la "modularité" vous recherchez est la modlarité architecturale , la modularité du temps de déploiement ou la modularité d'exécution .

Dans tous les cas, chaque niveau consécutif implique tous les niveaux précédents.

Pour commencer, pour rendre votre application modulaire, vous devez commencer par l'architecture. Séparez vos problèmes en plusieurs parties bien définies, dotées d'interfaces bien définies avec le "monde extérieur". Utilisation de bons modèles de conception et injection de dépendance et conception pour La testabilité à l'unité contribue grandement à la séparation des préoccupations, ce qui constitue le fondement même de la conception modulaire.

Commencez petit, mais gardez à l’esprit la grande image. Lorsque vous concevez des morceaux (ou modules) un peu plus grands de votre système, assurez-vous qu'ils ont aussi peu de zones superposées que possible. Chaque module ne doit pratiquement pas présumer de l’environnement dans lequel il évolue et ne doit servir qu’une seule préoccupation. Tous les services requis par ses pairs doivent être explicitement fournis par une initialisation externe (utilisez de préférence injection de dépendance pour coller les modules ensemble dans une application opérationnelle).

Si votre architecture est modulaire, il est facile de séparer les problèmes dans leurs propres unités de déploiement (sous la forme de projets , jars , Bundles , plug-ins , extensions ou autre) et vous pouvez facilement mélanger et faire correspondre plusieurs modules au cours du déploiement pour obtenir le jeu de fonctionnalités exact dont vous avez besoin instance d'application. C’est ce que je veux dire par modularité en temps de déploiement .

Les cadres Dependency Injection , tels que Guice , Framefork Spring et autres.

Modularité d'exécution Cette façon de voir ressemble à la modularité fournie par les plug-ins Eclipse et NetBeans ou les extensions Mozilla, dans laquelle vous pouvez modifier la configuration et le jeu de vos modules d'application après le déploiement / l'installation.

Cela implique une sorte d'architecture et d'infrastructure qui reconnaît les nouveaux plug-ins / extensions au moment de l'initialisation de l'application ou de manière dynamique au moment de l'exécution.

Latter signifie également que tous vos modules doivent être construits avec l'hypothèse implicite selon laquelle tout service utilisé par un module peut facilement disparaître à tout moment, ce qui permet de garantir la robustesse du code exécuté dans ce monde instable.

Je recommanderais également Eclipse RCP ou jetez un coup d'œil à Netbeans RCP. Les deux sont très similaires. Eclipse RCP utilise des bibliothèques d’interfaces graphiques natives au lieu de Swing que Netbeans utilise.

Le pour et le contre, c’est qu’Elcipse pourrait être un peu plus rapide bien que vous soyez plus limité aux types de contrôles proposés par le système d’exploitation. Netbeans utilise Swing, qui est peut-être plus familier pour la plupart des développeurs Java et la possibilité de développer des contrôles personnalisés est sans fin.

Cela fait longtemps que je n'ai pas travaillé avec Eclipse RCP, je me suis probablement trompé dans le développement de contrôles personnalisés dans Eclipse RCP.

Ce qu'ils ont en commun, c'est que le développement d'applications de bureau intelligentes et modulaires est amusant et que vous obtenez des applications de qualité professionnelle en beaucoup moins de temps!

Bonne chance!

Vous pouvez également consulter le framework de plug-ins Java,

.

http://jpf.sourceforge.net/

  

JPF peut grandement améliorer la modularité   et extensibilité de vos systèmes Java   et minimiser le support et la maintenance   coûts.

essayer avec Printemps RCP

http://www.springsource.org/spring-rcp

lors de l'organisation de votre partie graphique de l'application ...

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