IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

 

Développons en Java   2.30  
Copyright (C) 1999-2022 Jean-Michel DOUDOUX    (date de publication : 15/06/2022)

[ Précédent ] [ Sommaire ] [ Suivant ] [Télécharger ]      [Accueil ]

 

83. Les applications riches de type RIA et RDA

 

chapitre    8 3

 

Niveau : niveau 2 Elémentaire 

 

Les applications de types client / serveur offrent une bonne ergonomie pour les utilisateurs mais possèdent de nombreux inconvénients notamment au niveau de la maintenance et surtout du déploiement.

Pour pallier ces inconvénients, les applications web se sont répandues. Elles reposent sur des traitements métier côté serveur et une IHM sur un client léger utilisant un simple navigateur web. Malheureusement, ce type d'application ne satisfait pas les utilisateurs notamment parce qu' elles représentent un régression au niveau de l'ergonomie et des interactions.

Les applications riches tentent de réconcilier les avantages des applications C/S et web en conservant le meilleur des deux types d'applications : facilité de déploiement, ergonomie et expérience utilisateur enrichie.

Le développement d'applications web avec Java met généralement en oeuvre un framework reposant sur le modèle MVC tel que Struts ou Spring MVC qui génère sur le serveur des pages HTML retournées au navigateur de l'utilisateur.

Généralement ces frameworks imposent de transmettre une requête http vers le serveur qui regénère toute la page pour tenir compte des modifications ou redirige vers une autre page. Ceci implique des limitations dans les possibilités offertes par les applications en terme d'expérience utilisateur.

Ces limitations sont influencées par les capacités des navigateurs :

  • Non support complet ni homogène des standards (HTML, CSS, ...)
  • Incompatibilité de JavaScript entre les différents navigateurs
  • Certains composants graphiques nécessitent parfois d'être réécrits (onglets, pagination de données, wizard, treeview, ...)
  • La sauvegarde de l'état d'une application repose généralement sur les cookies
  • ...

Les applications de type RIA proposent une solution pour fournir aux applications exécutées dans un navigateur une expérience utilisateur proche de celle des applications standalone en proposant des fonctionnalités étendues notamment :

  • Des composants graphiques évolués sont proposés (barre de menu, onglets, treeview, grille de données, ...)
  • Support du drag and drop
  • Support multi navigateur avec le même code
  • Une meilleure réactivité grâce à un rafraichissement partiel de la page. Les requêtes http adressées au serveur ne concernent que les données à modifier dans la page. Le format utilisé peut varier selon les solutions utilisées : XML, JSON, ...
  • Maintien de l'état de l'application côté client
  • Un enrichissement des fonctionnalités graphiques notamment grâce à des effets visuels et une intégration forte du multimédia
  • ...

Les applications riches peuvent être regroupées dans deux grandes catégories :

  • RIA : Rich Internet Applications
  • RDA : Rich Desktop Applications

Ce chapitre contient plusieurs sections :

 

83.1. Les applications de type RIA

Les applications de type RIA utilisent un navigateur pour la partie IHM de l'application. Pour permettre d'améliorer l'expérience utilisateur des applications, elles utilisent des technologies existantes depuis longtemps mais partiellement ou pas du tout exploitées. C'est notamment le cas de la technologie AJAX (Asynchronous JavaScript And Xml).

Il y a plusieurs solutions pour mettre en oeuvre Ajax :

Les applications RIA peuvent utiliser uniquement les possibilités du navigateur ou avoir besoin d'un plug-in qui fournit un environnement d'exécution.

Les RIA ont cependant un certain nombre d'inconvénients :

  • La multitude des solutions proposées et leur immaturité
  • Les utilisateurs doivent adapter leur mode de navigation
  • L'accessibilité est rarement assurée d'autant que ces solutions sont très riches
  • Le référencement est parfois difficile
  • ...

Les solutions RIA proposent généralement un environnement d'exécution, des bibliothèques et/ou des API, et des outils qui permettent d'être plus efficace et plus riche que le simple ajout d'Ajax dans une application de façon manuelle.

 

83.2. Les applications de type RDA

Les applications de type RDA reposent sur les technologies des applications de type web mais elles s'exécutent sur le bureau donc sans navigateur web. Elles permettent d'avoir les mêmes fonctionnalités qu'une application de type RIA mais exécutées en dehors du navigateur.

Elles nécessitent un environnement d'exécution installé sur le poste client, généralement sous la forme d'une machine virtuelle avec un ensemble d'API.

Elles offrent de meilleures interactivités notamment avec le système sous-jacent (drag & drop, accès au système de fichiers, ...). Pour des raisons de sécurité, les applications de type RDA peuvent avoir un accès au système sous-jacent sous réserve d'être signées. Cela offre un meilleure interactivité avec le système pour, par exemple, permettre une utilisation en mode déconnecté de l'application.

De plus, ces applications peuvent généralement être téléchargées sur internet et se mettre à jour via le réseau.

 

83.3. Les contraintes

Le développement d'applications de type RIA doit tenir compte de certaines contraintes inhérentes à ce type d'applications.

Les développeurs doivent utiliser les solutions RIA dans la limite de ce qu'elles peuvent proposer : toutes les applications ne peuvent pas être de type RIA. Par exemple, les applications de type RIA ne sont généralement pas adaptées pour des applications manipulant de grandes quantités de données.

Les développeurs d'applications web traditionnelles doivent tenir compte du mode de mise en oeuvre des applications RIA : la conception doit tenir compte du fait que l'application ne fonctionne pas sur un mode de rafraichissement à chaque requête/réponse. Ainsi, une application RIA est responsable du rafraichissement de ses données.

Le développement d'une application de type RIA nécessite la mise en oeuvre d'une architecture, notamment, côté serveur pour permettre de fournir à l'application les données et les traitements métiers nécessaires. Généralement, les solutions RIA ne concernent que la partie présentation et ne proposent aucune fonctionnalité dédiée pour la partie backend.

Lors de l'évaluation d'une solution, il est nécessaire d'évaluer ses capacités d'intégration avec la partie backend pour permettre les échanges de données et l'invocation de traitements métiers.

Les applications nécessitent plus l'intervention de graphistes pour définir l'IHM de l'application.

 

83.4. Les solutions RIA

Le besoin grandissant du marché concernant les applications riches se reflète dans l'activité des grands acteurs du marché comme Adobe, Sun, Microsoft, Google, ...

Ainsi, de nombreuses solutions sont proposées pour permettre le développement et la mise en oeuvre des applications riches. La plupart de ces solutions sont récentes et sont encore en cours de développement. Ces solutions ne sont donc pas toutes fiables mais elles évoluent très rapidement pour permettre de répondre à la demande importante du marché.

Parmi ces solutions, en plus des solutions reposant sur Java, il y a notamment Adobe Flex/Air et Microsoft Silverlight.

 

83.4.1. Les solutions RIA reposant sur Java

Dans le monde Java, Sun/Oracle propose Java FX. La fondation Eclipse propose Eclipse RCP (Rich Client Plateform) pour le développement d'applications de type RDA. Wazaabi repose sur RCP et XUL.

De nombreux frameworks open source facilitent aussi le développement de nouvelles applications de type RIA notamment :

 

83.4.1.1. Java FX

Java FX est un ensemble de technologies proposé pour le développement d'applications de type RIA.

Java FX a été présenté pour la première fois au JavaOne 2007 et a été la technologie mise en avant lors du JavaOne 2008.

Elle est arrivée tardivement, notamment vis-à-vis de Flex, et est de plus restée une bonne année sans réel outils : un interpréteur était disponible mais aucun compilateur ni IDE.

Depuis 2008, Java FX s'est enrichi d'outils ; un SDK et des fonctionnalités multimédia avancées grâce à l'intégration de codecs audio et vidéo.

Le grand intérêt de Java FX est son intégration avec Java. Par défaut, il faut coder l'application en utilisant Java FX Script qui est un langage de scripting déclaratif.

L'avantage de Java FX est qu'il ne nécessite qu'une machine virtuelle Java (JVM) de la plate-forme SE ou ME pour s'exécuter : cela apporte à Java FX un avantage certain car une JVM est installée sur une très large majorité d'appareils de différents types : notamment sur les ordinateurs de bureaux et portablee, encore plus sur les appareils téléphoniques mobiles et dans tous les lecteurs de disques Blu-Ray.

Une caractéristique de Java FX est d'être intégralement open source, ce qui n'est pas entièrement le cas de ses principaux concurrents directs.

Plusieurs sites relatifs à Java FX peuvent être consultés :

Oracle annonce la version 2.0 de JavaFX à JavaOne 2011.

En novembre 2011, JavaFX est développé en open source grâce à un sous-projet d'OpenJDK nommé OpenJFX.

 

83.4.1.2. Google GWT

Google propose GWT (Google Web Toolkit) pour le développement d'applications de type RIA.

L'application est écrite en Java avec un sous-ensemble de l'API standard et une API dédiée proposée par Google. L'ensemble du code est compilé pour générer du code JavaScript optimisé pour chaque navigateur.

Hormis une page hôte et l'utilisation des feuilles de style CSS, le développeur n'a besoin d'aucune connaissance sur les technologies web car elles sont encapsulées dans l'API. Le code Java écrit avec GWT ressemble plus à celui utilisé pour des applications AWT qu'au code d'une application de type web.

Les composants graphiques proposés par GWT sont relativement basiques mais des bibliothèques tierces permettent de fournir des composants évolués notamment grâce à la facilité d'encapsuler du code JavaScript dans GWT.

Le site officiel est à l'url https://www.gwtproject.org/

 

83.4.1.3. ZK

Le framework ZK est un framework open source pour le développement d'applications de type RIA mettant en oeuvre Ajax.

Pour le développement de l'interface graphique, ZK propose XUML (ZK User Interface Markup Langage) qui permet une description de l'interface en XML grâce à des composants XUL et XHTML.

ZK propose une gestion des événements et une intégration avec d'autres frameworks Java

Plusieurs langages sont supportés pour coder les traitements dont le principal est Java.

Le site officiel est à l'url https://www.zkoss.org/

 

83.4.1.4. Echo

Echo est un framework open source pour le développement orienté objet avec gestion des événements d'applications web riches.

Le développement de la partie IHM ressemble au développement d'applications graphiques de type client lourd : composants orientés objets, gestion des événements, ...

Selon la version du framework Echo utilisée, une application peut prendre deux formes :

  • Entièrement orientée serveur (Echo 2 et 3)
  • Avoir une partie en JavaScript côté client (Echo 3 uniquement).

 

83.4.1.5. Apache Wicket

Wicket est un projet de la fondation Apache qui propose un framework orienté composants pour le développement d'applications web riches.

Le framework propose une séparation entre la partie présentation en XHTML et la partie traitement écrite en Java via des composants.

La page est encapsulée dans un objet et représentée dans une page XHTML dans lequel on ajoute des composants graphiques. La liaison se fait par un id.

Le site officiel est à l'url https://wicket.apache.org/

 

83.4.1.6. Les composants JSF

Plusieurs composants JSF proposent une implémentation d'Ajax dans leurs composants notamment :

 

83.4.1.7. Tibco General Interface

General Interface est un framework open source pour le développement d'applications web riches. General Interface est diffusée en open source sous la licence BSD et sous une forme commerciale avec un support.

General Interface propose un IDE qui facilite le développement de la partie graphique d'une application en proposant d'utiliser le cliquer/glisser des composants.

Les échanges entre le client et le serveur se font grâce à des services web : ceci permet de rendre le framework GI plus indépendant de la solution backend utilisée.

L'application peut être exécutée dans Internet Explorer et Firefox sous Windows, Linux et Mac.

Le site officiel est à l'url http://www.generalinterface.org/

 

83.4.1.8. Eclipse RAP

Eclipse RAP (Rich Ajax Platform) repose sur l'API Eclipse RCP et génère une application html utilisant Ajax.



 

83.4.2. Les autres solutions RIA

Plusieurs fournisseurs proposent des solutions pour le développement d'applications de type RIA. Généralement ces solutions se concentrent sur la partie IHM et s'interfacent plus ou moins facilement avec un backend écrit en Java notamment au travers de services web par exemple.

 

83.4.2.1. Adobe/Apache Flex

 Adobe Flex est un outil de développement pour créer des applications compilées sous la forme de fichiers swf exécutés dans le Flash player.

Adobe Flex repose sur MXML qui permet de créer l'interface graphique de manière déclarative en MXML et ActionScript pour être compilés en une application Flash. Le navigateur doit avoir le plug-in Flash pour pouvoir exécuter l'application.

Le site officiel d'Adobe Flex est à l'url : labs.adobe.com/technologies/flex/

Flex se concentre sur la partie IHM et permet une intégration facilitée avec un backend développé en Java dont notamment une solution open source : Blaze DS.

En novembre 2011, Adobe donne la technolgoqie Flex à la foundation Apache pour permettre son développement en open source.

 

83.4.2.2. Microsoft Silverlight

silverlight Silverlight (initialement connu sous le nom WPF/e) est la solution proposée par Microsoft pour le développement d'applications de type RIA.

Microsoft Silverlight repose sur XAML qui permet de décrire l'interface graphique en XML. Le plug-in Silverlight est requis pour l'exécution d'une application.

La version 1.0 utilise le langage JavaScript.

La version 2.0 de Silverlight permet de développer des applications avec les langages de la plate-forme .Net. Le plug-in de Silverlight 2.0 incorpore une machine virtuelle de type CLR mais seul un sous-ensemble de l'API de la plate-forme .Net est utilisable.

Silverlight propose la technologie DeepZone qui permet de faire des zooms sur une image.

Le site officiel de Microsoft Silverlight est à l'url : www.microsoft.com/silverlight

Le site Web officiel du framework Microsoft .NET : msdn.microsoft.com/fr-fr/netframework

 

83.4.2.3. Google Gears

Google Gears est une API et un plug-in qui permettent d'utiliser une base de données SQLite pour stocker des données en local et ainsi permettre à des applications Ajax de fonctionner en mode déconnecté. Un exemple de mise en oeuvre de cette API est proposé par Google Reader.

En décembre 2009, Google abandonne le développement de Gears au profit d'HTML 5 qui doit contenir une API similaire.

 

83.4.3. Une comparaison entre GWT et Flex

Le but est de fournir les principaux avantages et inconvénients de GWT et Flex.

 

Avantages

Inconvénients

GWT

Nécessite uniquement un navigateur (pas de plug-in)

Pas de nouveau langage à apprendre pour un développeur Java

Peu de composants graphiques évolués qui nécessitent généralement l'utilisation d'une bibliothèque tierce

Pas de structure standard (type MVC) pour les applications

Flex

Richesse et cohérence des composants graphiques

Rendu identique sur les navigateurs supportés

Nouveaux langages (MXML et ActionScript) à apprendre pour les développeurs Java, en plus de Java nécessaires pour développer la partie serveur

Nécessite le plug-in Flash (il est cependant très largement déployé)

Les outils pour être productif sont payants : Adobe propose un plug-in Eclipse (Flex Builder)


GWT et Flex possèdent des avantages et inconvénients communs :

  • Leur communauté est importante et très productive
  • Pour des sites web, le référencement est délicat avec les deux solutions

 

83.5. Les solutions RDA

Les solutions pour développer des applications de type RDA existent déjà sous plusieurs formes :

  • Java avec Java Web Start
  • Java avec des socles applicatifs : Eclipse RCP ou Netbeans RCP
  • Adobe AIR

 

83.5.1. Adobe AIR

Adobe AIR (Adobe Integrated Runtime) propose un environnement d'exécution pour les applications Flex et/ou Html/Javascript.

Le site officiel d'Adobe AIR est à l'url : www.adobe.com/fr/products/air.html

AIR est utilisable sur plusieurs plates-formes desktop (Windows et Mac OS), mobiles (iOS, Android, BlackBerry PlayBook) et certaines télévisions.

Adobe AIR doit être installé sur le poste de l'utilisateur pour pouvoir lui permettre d'exécuter l'application AIR.

L'environnement d'exécution AIR est composé d'un navigateur sur une base WebKit

 

83.5.2. Eclipse RCP

Eclipse RCP (Rich Client Platform) est la base sur laquelle Eclipse repose. Ce socle utilise Java et SWT.

 

en construction
La suite de cette section sera développée dans une version future de ce document

 

 

83.5.3. Netbeans RCP

NetBeans RCP est la base sur laquelle NetBeans repose. Ce socle utilise Java et Swing.

 

en construction
La suite de cette section sera développée dans une version future de ce document

 

 


[ Précédent ] [ Sommaire ] [ Suivant ] [Télécharger ]      [Accueil ]

78 commentaires Donner une note à l´article (5)

 

Copyright (C) 1999-2022 Jean-Michel DOUDOUX. Vous pouvez copier, redistribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU, Version 1.1 ou toute autre version ultérieure publiée par la Free Software Foundation; les Sections Invariantes étant constitués du chapitre Préambule, aucun Texte de Première de Couverture, et aucun Texte de Quatrième de Couverture. Une copie de la licence est incluse dans la section GNU FreeDocumentation Licence. La version la plus récente de cette licence est disponible à l'adresse : GNU Free Documentation Licence.