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

Architecture J2EE - Comment organiser son application J2EE

3.3.Couches : Avantages / Inconvénients

Il est intéressant d’étudier une méthode de développement d’application, cependant il est d’autant plus difficile de l’appréhender lorsque l’on ne connaît pas les avantages de cette méthode et lorsque l’on n’a jamais été confronté directement aux problèmes soulevés par une application sans réelle architecture.
Voici un ensemble d’avantages (non exhaustif) que procure l’élaboration d’une architecture « complexe » et pensée :
  • Structure de l’application propre
  • Modularité de l’application
  • Evolution de l’application facilitée
  • Factorisation de code et utilisation de framework ou composants génériques (gain de temps et performances)
L’inconvénient principal est la difficulté à mettre en place une architecture correcte et stable. Cette phase demande une très bonne connaissance des outils disponibles sur le marché mais également une très bonne aptitude à utiliser l’abstraction et les concepts objets pour le développeur.

3.3.1.Pattern Couches

L’utilisation de couches est expliquée par le pattern « Couches ». Deux questions de conception sont à se poser :
  • Quelles sont les grandes parties ?
  • Comment sont-elles connectées ?
Même si ce pattern guide la définition des grandes parties, ce sont des patterns de conception moins importants (on parle de conception microarchitecturaux cf. Rubrique Patterns Principaux) qui sont employés couramment pour la connexions entre les couches.
Une couche est un ensemble pouvant être comparé à un sous-système (possédant un comportement et des interfaces) et non un groupement d’entités.
Voici quelques exemples de couches :
  • Persistance
  • Moteur de règles
  • Services

Cependant vous pouvez avoir un service de « Gestion des articles» ou un groupe « Fondation » (contenant un ensemble d’outils de gestion des dates, des chaînes de caractères … comme java.util), sans pour autant les représenter en tant que couche.

3.3.2.Règles

Nous retrouvons bien entendu les principes essentiels au niveau des couches (avec principalement le couplage entre celles-ci).
Dans la plupart des architectures en couches, celles-ci ne sont pas couplées dans le même sens limité que dans un protocole réseau fondé sur le modèle OSI. Ce dernier comprend une restriction stricte : les éléments de la couche N  n’ont accès qu’aux éléments de la couche immédiatement inférieure, N-1.
Cette règle est rarement appliquée dans les architectures de systèmes d’information. La norme est plutôt une architecture lâche ou transparente dans laquelle les éléments d’une collaborent avec plusieurs autres couches ou sont couplés à plusieurs autres couches.
Attention : cela est bien entendu possible dans les cas où les principes essentiels sont toujours respectés !
Voici donc quelques règles génériques sur les couplages entre couches :
  • Les couches supérieures ont des liens de dépendance avec la couche Services, Techniques (physiques) ou Fondation (bases)
  • C’est avant tout la couche Domaine (ou Services) qui a des liens de dépendance avec la couche Infrastructure métier.
  • La couche Présentation émet des appels vers la couche Application qui envoie des appels de services à la couche Domaine. La couche Présentation ne fait pas d’appel directement à cette dernière (sauf s’il la couche Application n’existe pas).
  • S’il s’agit d’une application « de bureau » monoprocessus, les objets logiciels de la couche Domaine (Business Object) sont directement visibles depuis les couches Présentation, Application et Services techniques.
  • En revanche, s’il s’agit d’un système distribuée, des copies sérialisables (Value Object) des objets de la couche Domaine sont généralement utilisés pour le transfert entre la couche présentation et la couche Domaine.

Bien d’autres règles pourraient être établies, cependant beaucoup dépendent du type d’application et des contraintes techniques ou financières.
Le couplage est donc un principe à prendre très au sérieux dans vos applications. Cependant il est inutile de passer du temps pour des couplages inutiles. Est-il justifié de gaspiller du temps à tenter d’abstraire ou de masquer un élément qui a peu de risques de changer ou dont le changement aurait un impact négligeable ? Si vous construisez une application Java, vous n’allez pas passer à votre temps à cacher les accès aux bibliothèques Java !

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