1 2 3 4 5 6 7 8 9 10 11 12 13 

Architecture J2EE - Comment organiser son application J2EE

3.Implémentation en J2EE

L’implémentation d’une architecture complexe via J2EE est très modulable et très spécifique. D’une application à une autre, les outils et les technologies utilisés varient.
Nous allons étudier, ici, les différents outils et technologies que l’on peut utiliser pour chacune des couches d’une application J2EE.

3.1.Conception architecturale

La conception architecturale n’est pas une mince affaire. Elle fait appel à de nombreux concepts, souvent méconnus des débutants ou novices. Cette conception se base sur les principes essentiels suivants (d’autres existent également mais ne sont pas vus ici) :
  • Faible Couplage
  • Forte Cohésion
  • Protection des variations (interfaces, indirection, consultation de services …)
La granularité des composants est très importante, en effet il s’agit de faible couplage entre applications, sous-systèmes ou processus et non entre petits objets. La granularité est définie par le niveau de détails contenus dans une unité d’information. Plus il y a de détails, plus bas est le niveau de granularité ; à contrario, une forte granularité est liée à un niveau faible de détails.
Voici un exemple d’utilisation de la granularité au sein d’un programme :

// forte granularité
public void methodForteGranularite(int id, String name, String email …);

// faible granularité
Public void methodFaibleGranularite(PeopleVo people);


Ceci est un exemple au niveau des paramètres de méthodes, cependant la granularité peut s’évaluer sur des parties de programmes (combien d’entités avez-vous ?) ou au niveau global du programme (combien de modules avez-vous ?)…

3.1.1.Faible Couplage

Le couplage est une mesure de degré auquel un élément est lié à un autre, en a connaissance ou en dépend. S’il y a couplage ou dépendance, l’objet dépendant peut être affecté par les modifications de celui dont il dépend. Evidemment une sous-classe est fortement dépendante à sa super-classe. Un objet A faisant appel aux méthodes d’un objet B a un couplage aux services de B.
Le problème est : Comment réduire l’impact des modifications ?
La solution est : Affecter les responsabilités de sorte à éviter tout couplage inutile.
En résumé, le faible couplage permet de séparer au maximum l’implémentation de l’aspect fonctionnel afin d’avoir à effectuer que très peu de modifications (voir aucune) lors d’un changement de l’implémentation.
Un exemple très courant est celui des « drivers » ou pilotes. Le système principale définit une structure commune à tous les pilotes (ou à un type de pilote) ; chaque pilote se doit d’implémenter l’ensemble de la structure afin d’être utilisé par le système. Dans ce cas là, le système n’a pas connaissance de l’implémentation (cas également des API …)
En image : (ce qu’il ne faut pas faire !!!)

3.1.2.Forte Cohésion

L’un des problèmes du « débutant » est qu’il ne sait pas exactement où effectuer les traitements et finit très souvent par aboutir à des classes comportant des milliers de lignes (ingérables et pu évolutives). Tout comme un bon chef de projet, votre application se doit se bien savoir déléguer les tâches à effectuer.
Cependant, une mauvaise cohésion (faible cohésion) n’implique pas qu’un objet exécute tout le travail seul : un objet faiblement cohésif de deux mille lignes de code collabore certainement avec beaucoup d’autres objets ! Le point essentiel est que toutes ses interactions tendent également à créer un mauvais couplage (fort). Il faut donc bien penser la liaison entre vos objets (ce qui n’est pas toujours évident).
Préférez toujours une solution qui présente le plus de cohésion.
Le problème est : Comment s’assurer que les objets restent compréhensibles et faciles à gérer, et, contribuent au Faible Couplage ?
La solution est : Affecter les responsabilités pour que la cohésion demeure élevée.

3.1.3.Protection des variations

La protection des variations est le concept générique. Il permet d’identifier les points de variations ou d’instabilité prévisibles. Mais également d’affecter les responsabilités pour créer une interface stable autour d’eux.
Certaines modifications du système sont prévisibles. Le pattern protection des variations permet de protéger la structure et les classes contre une variation entraînant un effort très important. Le principe le plus connu est le mécanisme d’abstraction qui permet de créer une interface stable autour des objets du système.
Si vous interdisez l’accès direct des clients aux attributs alors le système est protégé contre des changements de traitement à l’intérieur des classes (exemple d’utilisation des getters / setters). Un très bon exemple d’utilisation de ce pattern est l’utilisation de machine virtuelle qui permet de protéger des variations de la plateforme.
La protection des variations est donc à mettre au dessus des autres patterns, car c’est un concept (pouvant être mis en place avec plusieurs solutions).


1 2 3 4 5 6 7 8 9 10 11 12 13 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Pattern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design pattern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée