Vous êtes ici
Solutions Java EE 5
Initialement conçu comme un simple protocole de partage de contenu, le web, grâce au développement et à la démocratisation d'Internet, a totalement révolutionné les modes de circulation de l'information.
Aujourd'hui, dans un monde connecté, le web est devenu un véritable standard d'échange d'information. Conséquence inévitable, le secteur du logiciel a compris que les applications d'aujourd'hui devaient intégrer cette révolution.

L'application web, le nouveau standard logiciel
Qu'est-ce qu'une application web ? Une application web est l'intégration de tout ce que l'on attend d'une application classique, à savoir la gestion partagée d'information et de processus métiers, et de la technologie web.
Une application classique, dès lors qu'elle est partagée par plusieurs utilisateurs, nécessite l'installation d'une partie de ses composants sur un ou plusieurs serveurs, et d'une autre partie sur chacun des postes de travail des utilisateurs. Lorsque les utilisateurs utilisent plusieurs applications, c'est autant de parties « clientes » qu'il faut installer sur leurs postes de travail.
La technologie web est caractérisée par l'hébergement de contenu (sites web) sur des serveurs, et l'accès à ces contenus, quels qu'ils soient, depuis les postes de travail des utilisateurs, grâce à un logiciel unique : le navigateur web.
Il va sans dire que dans la première configuration, le déploiement et la maintenance du parc applicatif devient très vite prohibitif à mesure que le nombre d'utilisateurs et d'applications augmente.
A cette première contrainte s'ajoutent depuis quelques années, de nouvelles méthodes de travail et une diversification des terminaux clients, nés tous deux de l'éclosion de la mobilité qui a accompagné le développement du réseau Internet :
- De nos jours, les utilisateurs ne peuvent plus limiter l'usage d'une application à leurs heures de présence au bureau. Ils doivent pouvoir y accéder depuis chez eux, en clientèle ou en déplacement.
- Parallèlement, l'ordinateur de bureau n'est plus l'unique terminal client du parc informatique. Les ordinateurs portables, les smartphones et les tablettes tactiles sont autant de nouveaux terminaux susceptibles de permettre d'utiliser une application.
L'architecture historique dite « client/serveur » des applications est totalement remise en cause par la multiplication des lieux et des matériels d'utilisation des applications.
L'application web s'appuie sur le vecteur commun de cette révolution : l'architecture navigateur web/serveur. En effet, les terminaux mobiles (ordinateurs portables, smartphones, tablettes tactiles) sont tous équipés par défaut d'un navigateur web qui leur permet de se connecter depuis n'importe où à n'importe quel site web.
Votre entreprise se libère de la contrainte d'un système d'information « orienté matériel » pour se consacrer à la conception d'un système d'information « orienté utilisateur ». La question n'est plus de savoir quel matériel se connecte à une application avec quel réseau, mais quel utilisateur a le droit de se connecter à telle application avec quels droits.
Avec une application web, l'effort de déploiement et de maintenance est concentré au niveau des serveurs. Aucune installation ni mise à jour n'est requise au niveau des postes clients.
Ce constat sans appel en faveur de l'application web était toutefois à nuancer jusqu'à très récemment par certaines limites techniques du web. En effet, la communication habituelle entre un site web et un navigateur web fonctionne selon le mode « requête/réponse ». L'utilisateur clique sur un lien ou un formulaire pour envoyer une requête au serveur qui lui retourne en réponse une page web qui s'affiche dans son navigateur. Ce mode de dialogue est dit synchrone, c'est-à-dire que l'utilisateur doit attendre l'affichage de la page renvoyée en réponse par le serveur avant d'envoyer une nouvelle requête.
Ce mode de dialogue classique est très dégradé par rapport à ce que l'on peut connaître avec les applications client/serveur classiques, conçues selon une approche évènementielle et asynchrone des échanges client/serveur.
Ce point, clairement bloquant pour généraliser l'usage des applications web, a été remédié grâce au développement de la technologie AJAX (Asynchronous Javascript And Xml), qui a permis d'introduire l'asynchronisme et la gestion des évènements dans les applications web. Sans atteindre le niveau des applications exigeant un client lourd, cette technologie permet de répondre à la plus grande partie des besoins dans ce domaine.
On qualifie les applications web utilisant la technologie AJAX de « Rich Internet Applications » (RIA). Ce type d'applications permet clairement de combiner tous les avantages synthétisés ci-dessous :
- comportement évènementiel de l'application et communication asynchrone entre le serveur et le client,
- ubiquité des lieux d'utilisation de l'application grâce au réseau Internet,
- le navigateur web est l'unique composant client, permettant l'utilisation de l'application depuis n'importe quel système d'exploitation ou terminal mobile,
- maintenance et déploiement limités au serveur.

JEE : le standard du développement logiciel Java
Nous développons les applications web en Java, en respectant les spécifications JEE 5. Java et sa spécification JEE est une référence sur le marché du logiciel de gestion.
« Java Enterprise Edition 5 » (JEE 5) est une spécification établie par Sun Microsystems, éditeur du langage Java, définissant tous les composants nécessaires à une application d'entreprise. Les applications JEE 5 sont hébergées sur un serveur d'applications qui met à disposition son implantation des spécifications JEE.
Il existe plusieurs serveurs d'applications sur le marché : WebSphere (IBM), WebLogic (Oracle), Glassfish (Sun Microsystems), JBoss (Redhat). Une même application respectant les spécifications JEE peut être portée sur n'importe quel serveur d'applications sans nécessiter aucune réécriture. Un serveur d'application JEE, lui-même écrit en Java, peut être installé sur n'importe quel système d'exploitation : Linux, Windows, Solaris ou Mac OS.
Nous utilisons, pour les applications que nous développons, le serveur d'application JBoss, qui est gratuit et open-source.
Une application JEE, en étant hébergée par un serveur d'application, bénéficie de l'implantation de tous les composants techniques nécessaires à l'exploitation d'une application d'entreprise. L'effort de développement se concentre ainsi sur les composants métiers propres à l'application.
L'autre avantage considérable de JEE, comparé aux autres plateformes d'entreprise, réside dans le découpage vertical de l'application, sous forme de couches clairement encapsulées, facilitant l'intégration des applications au sein d'un système d'information :
- la couche de persistance,
- la couche « métier »,
- la couche « présentation », appelée aussi « Interface Homme/Machine » (IHM), qui peut être web mais aussi plus classiquement de type client « lourd ».
La notion d'encapsulation est primordiale dans la conception d'une application. En effet, elle permet de limiter les dépendances entre les différentes couches, chaque couche ne servant aux autres couches que le strict nécessaire.

La couche de persistance : la gestion des données et de leur stockage
La couche de persistance, regroupe l'ensemble des entités « métiers » utilisées par l'application, et gère leur persistance au sein des supports prévus à cet effet.
Les supports de persistance peuvent être multiples et combinés :
- base de données, pour les données à forte cardinalité,
- fichiers XML pour les données référentielles ou à faible cardinalité.
Le rôle de cette couche est de gérer le mapping entre les données relationnelles stockées en base de données et les objets « métiers » manipulés par l'application. On parle d'« Object Relationnal Mapping » (ORM). Ce mapping est assuré par la spécification« Java Persistence API » (JPA) définie par JEE, implantée dans JBoss par le moteur de persistance Hibernate.
Outre cette opération de mapping, l'autre intérêt majeur de la spécification JPA réside dans le fait qu'elle rend votre application indépendante d'un quelconque Système de Gestion de Base de Données (SGBD). Une même application peut utiliser indifféremment le SGBD Oracle, DB2 (IBM), SQL Server, PostgreSQL ou MySQL, sans aucun impact sur son code source.
De même, le mapping entre fichiers XML et objets « métiers » est géré grâce à la spécification « Java Architecture for XML Binding » (JAXB).
Si d'un côté, la couche de persistance assure la persistance des données. De l'autre, elle fournit à la couche « métier » les entités dont elle a besoin.

La couche métier : le centre de gravité de l'application
Le rôle de la couche métier est de gérer toute la logique applicative de l'application. Elle est le centre de gravité de l'application.
Elle seule dialogue avec la couche de persistance. Elle est l'interface avec la couche de présentation et les applications tiercesauxquelles l'application peut être connectée dans le cadre d'une architecture SOA.
La couche métier est constitué de ce que l'on appelle les « Enterprise Java Beans » (EJB). Ces EJB sont référencés dans l'annuaire du serveur d'applications et accessibles :
- en locale à toute IHM web de l'application (l'interface web de l'application étant déployée sur le même serveur d'applications),
- à distance à toute IHM Swing de l'application (l'interface Swing étant déployée et exécutée sur le poste de travail des utilisateurs),
- à distance à toute application Java tierce (dans la pratique, on définit des pilotes régissant les interactions entre l'application et les systèmes tiers).
Une interface web services peut aussi être mise en place avec les EJB pour permettre à l'application de dialoguer avec n'importe quelle autre application, quel que soit son langage de conception (C, C++, C#, Ruby, PHP, etc.).
La couche présentation : l'interface utilisateur
Pour une application web, la couche « présentation » est constituée d'une interface web, accessible via n'importe quel navigateur. Mais en fonction des besoins locaux, une même application peut tout aussi bien proposer une interface « client lourd », grâce à l'API graphique de Java : Swing.
L'interface web
Nous utilisons pour la réalisation de nos interfaces graphiques web l'API « Java Server Faces » définie par JEE. Nous la complétons de la bibliothèque graphique « Richfaces », proposant toute une gamme de composants graphiques utilisant la technologie AJAX pour une gestion asynchrone et évènementielle des interactions avec l'utilisateur.
Nos interfaces web sont développées selon le pattern de conception « Modèle Vue Contrôleur », où :
- les vues sont des pages « jsp » gérant le rendu graphique de l'application grâce à des composants graphiques JSF ou Richfaces,
- les contrôleurs sont des beans interfacés avec les EJB de la couche métier. Leur rôle est de capturer les évènements utilisateurs sur l'interface graphique et de les traiter,
- les modèles sont des composants encapsulant les entités métiers pour permettre leur manipulation par l'interface graphique.
L'interface Swing
L'API graphique Swing de Java permet de créer des IHM de type « client lourd ». Ce type d'interface permet de bénéficier des avantages en termes de gestion évènementielle et de fluidité des clients lourds.
Nous avons toutefois relevé la charge supplémentaire en termes de déploiement et de maintenance, ou de disponibilité face à la multiplicité des terminaux clients.
Toutefois, une interface graphique « Swing » peut être directement accessible via un navigateur grâce à l'utilisation d'applets Java, ou téléchargeable depuis un navigateur grâce à la mise en ligne d'applications « java web start ». Ces technologies, surtout la dernière, ne répondent pas en revanche à la problématique des terminaux mobiles tels que smartphones ou tablettes tactiles.

En conclusion
Opter pour une solution Java / JEE vous offre la garantie d'une intégration réussie de vos applications métiers dans votre système d'information.
Nous avons évoqué tout l'intérêt des solutions web pour répondre aux nouvelles exigences du système d'information de votre entreprise, avec l'émergence de la mobilité, en termes de diversité de lieux d'utilisation et de terminaux.
Nous avons souligné l'originalité de la plate-forme technologique JEE qui, en découplant totalement la couche métier et ses EJB de la couche « présentation » permet de répondre à tous les cas d'interconnexion de votre application avec les autres composants de votre système d'information, de façon totalement transparente pour l'utilisateur final.
Ainsi une même application peut proposer plusieurs interfaces utilisateurs totalement indépendantes, comme elle peut fournir à ses interfaces utilisateurs des données ou des services émanant de systèmes tiers.
La couche de persistance assure le découplage total de votre application et de son support de persistance. L'application déployée s'adapte ainsi sans aucune contrainte au SGBD mis en place au sein de votre entreprise.
Enfin, la technologie Java, grâce à sa machine virtuelle, rend le serveur d'application et les applications qu'il héberge portables sur n'importe quel système d'exploitation. Une fois encore, cette portabilité permet de ne pas remettre en cause vos choix d'équipement en matériel informatique, lors du déploiement d'une nouvelle application au sein de votre système d'information.

