Journal du Net   Développeurs   Emploi   Management
 
 Linternaute   Journal des femmes   Copainsdavant 
 
 Séminaires   Evenements   Etudes 
Abonnements
 
RECHERCHER
 ANNUAIRES  Sociétés  Prestataires Carnet  Encyclopédie Progiciels Formations Fonds VOTRE HIGH TECH  Guides  Livres Prix Téléchargement 
 Tribune
Swing ou le retour du client lourd
par Philippe de Cuzey
Bright Side Factory
 
          
 
Evolution informatique et régressions
Tout comme l'histoire de l'humanité, l'histoire de l'informatique est constituée de paliers ou zones de stabilité reliés pas des sauts technologiques (les anglo-saxons aiment employer l'expression "paradigm shift") en réponse à de nouveaux besoins ou sous la pression des acteurs du marché. Ainsi, on reconnaît classiquement les époques "mainframe", "client-serveur" et "web".

Poursuivons l'analogie et constatons qu'à l'instar de l'histoire humaine chaque évolution informatique apporte son cortège de bénéfices mais aussi quelques régressions.
Ainsi, si le client-serveur a permis il y a une dizaine d'années de mettre en place des applications départementales aux IHM (autrement dit les interfaces) séduisantes, cela s'est fait au détriment des performances, effaçant d'un coup des années de laborieux progrès. Souvenez-vous des applications SQL*Forms3 en mode caractère, certes austères mais rapides. Quelle frustration de passer par la suite aux premières applications Powerbuilder (ne parlons même pas de Forms 4), belles mais lentes. Heureusement, au cours des mois qui suivirent, des optimisations permirent de passer au client-serveur de 2ème (puis de 3ème) génération et tout rentra dans l'ordre.

Le répit fut de courte durée.

L'émergence du Web annonce le retour des IHM pauvres
L'émergence du Web ouvrit le champ des applications universelles et ce fut de nouveau le cauchemar avec le retour des logiciels hyper-lents aux IHM ineptes.

Il faut dire que le cahier des charges était contraignant (accepter un grand nombre d'utilisateurs sur de multiples O/S, sans déploiement, et passer à travers les firewalls) et fit porter sur ce pauvre navigateur HTML des responsabilités insoupçonnées à sa création.

Les premiers bidouillages technologiques pour générer des pages dynamiques passèrent par les CGI, l'enrichissement des IHM s'accommoda de Javascript et (moins bien) des applets Java, et on obtint en fin de compte des applications jetables, difficilement maintenables.

Parallèlement à l'arrivée depuis trois ans de solutions plus élégantes et plus professionnelles (serveurs d'applications, servlets / JSP), le besoin lui-même a évolué, d'applications grand public purement web à des solutions d'entreprise intranet puis extranet, voire ASP (Application Service Provider).

L'offre J2EE se banalise mais les IHM sont toujours inadaptées aux applications d'entreprise
On est aujourd'hui bien engagé sur la voie de la maturité avec la banalisation de l'offre J2EE (réduction des coûts, vivier de compétences, serveurs open source) offrant une plateforme technologique ouverte, fiable et aisée à mettre en oeuvre.

Pourtant, il n'y a toujours pas matière à être pleinement satisfait, que ce soit d'un point de vue utilisateur ou développeur, et les griefs se tournent essentiellement vers l'IHM : ces écrans HTML offrent toujours un affichage et une dynamique aussi limités, agrémentés de performances insuffisantes en raison des incessants aller-retours vers le serveur.

Oui, mais quelle alternative proposer ?

Revenons aux écritures, j'entends par là aux fameux "J2EE blueprints" qui présentent les patterns architecturaux des solutions basées sur un serveur d'applications J2EE.

Le plus connu est certes le pattern du client léger servlet / JSP sur HTTP (diagramme ci-dessus, option 1). Une autre configuration proposée pour des applications départementales est la solution client lourd Swing sur RMI / IIOP (option 2).

La maturité de Swing
Contrairement aux idées reçues, il existe aujourd'hui un grand nombre d'applications professionnelles Swing, même si on les prend souvent pour des applications Windows. Prenons par exemple JBuilder, Idea, PVCS, toutes ces applications complexes sont écrites en Swing.

Il est loin le temps où les implémentations Swing (et à fortiori Java) étaient lourdes et lentes. Depuis le JDK 1.3 on peut considérer les performances de Swing comme tout à fait satisfaisantes.

Deux obstacles pour le client lourd : déploiement et firewall
Les principaux écueils pour créer des applications J2EE à client Swing se résument en ces deux mots : déploiement et firewall. Il est en effet hors de question de devoir déployer manuellement une application en extranet, de même que je ne connais aucun responsable d'un réseau d'entreprise qui accepterait d'ouvrir son firewall à IIOP !

Heureusement les solutions existent.

Webstart pour déployer automatiquement
l'apparition de JNLP et de Webstart a permis depuis deux ans déjà d'automatiser le déploiement des applications Java pour tout utilisateur disposant sur sa machine (quelqu'en soit l'O/S) d'un JDK et du bootstrap Webstart. Lors du premier lancement, l'application cliente est automatiquement téléchargée par HTTP sur le poste de l'utilisateur, et chaque nouvelle utilisation lancera l'application locale tant que sa version est à jour (sinon la mise à jour sera automatiquement effectuée).

Ce premier obstacle étant écarté, intéressons-nous maintenant aux aspects protocole.

Le JCP (Java Community Process) propose l'emploi de SOAP pour les échanges inter-applicatifs sur HTTP. Ce protocole nécessite de lourds traitements de sérialisation XML et ses performances sont bien trop insuffisantes pour des échanges client - serveur, quoi qu'en dise Microsoft qui soutient cette solution pour sa plateforme .Net.

Du Swing sur HTTP
Heureusement, la problématique RMI sur firewall peut aisément être contournée par l'utilisation d'une couche transport HTTP, ceci par exemple à l'aide d'une servlet encapsulant les appels RMI (comme le propose le framework open source de Bright Side Factory).

On dispose ainsi désormais d'un pattern architectural particulièrement adapté aux applications intranet, extranet et ASP : du véritable 3-tier combinant serveur J2EE et IHM riches et flexibles.

Des applications d'entreprise rapides aux IHM riches grâce à J2EE et Swing
Les avantages du couple J2EE / Swing sont multiples.

L'adoption d'un client lourd permet au serveur de se concentrer sur le code métier, tandis que le client est en charge des aspects présentation, contrôle et validation. D'autre part, il est possible d'établir un cache client, ceci toujours dans le but de minimiser les roundtrips serveur et par conséquent s'offrir des bonnes performances.

Du point de vue du programmeur, celui-ci peut se concentrer sur du code client élaboré, sans pour autant devoir posséder une connaissance approfondie de l'API Swing depuis l'apparition des frameworks applicatifs basés sur Swing et manipulant des widgets de haut niveau.

Alors, maintenant que tout est en place pour l'émergence d'applications d'entreprise à client lourd Swing, va-t-on enfin effacer les régressions historiques du client léger et profiter pleinement de l'extraordinaire potentiel des applications 3-tier ?

Liens :
J2EE blueprints : http://java.sun.com/blueprints/
Webstart : http://java.sun.com/products/javawebstart/

Tribune publiée par Philippe de Cuzey le 24 janvier 2003.
Après dix ans de service au sein de SSII telles que Marben et MCI, Philippe de Cuzey a été directeur technique de Frontoo, un éditeur de solution de gestion d'actifs développé en J2EE, avant de fonder Bright Side Factory, une structure spécialisée dans les développements rapides J2EE.

Au sommaire de l'actualité - Toutes les Tribunes

  Nouvelles offres d'emploi   sur Emploi Center
Auralog - Tellmemore | Publicis Modem | L'Internaute / Journal du Net / Copainsdavant | Isobar | MEDIASTAY

Voir un exemple

Voir un exemple

Voir un exemple

Voir un exemple

Voir un exemple

Toutes nos newsletters