Introduction à Eclipse RCP

Introduction

Depuis toujours en informatique, deux modèles d'applications se distinguent : les applications riches et les clients légers. Les applications riches s'exécutent directement sur le poste de l'utilisateur. Les clients légers ne sont que de simples terminaux Telnet, terminaux AS/400 ou des navigateurs internet. Ils ne contiennent aucune logique métier : ils se contentent de se connecter à un serveur qui va leur fournir à la fois les applications et les données.

Ces dernières années dans les entreprises, le développement d'applications riches a peu à peu été remplacé par des applications Ajax. Pourquoi   Principalement grâce au déploiement quasi-inexistant de telles applications. Elles sont stockées sur un serveur et les employés accèdent en permanence à la dernière version via une simple URL dans un navigateur qui est déjà installé sur tous les ordinateurs.

Bien qu'intéressante à de nombreux égards, la technologie Ajax soulève plusieurs problèmes. Le plus important étant un temps de développement accru. En effet, les applications doivent être développées en Javascript, un langage non compilé, et qui ne révèle les erreurs de code qu'à leur exécution. Sans oublier que son support dans les navigateurs est souvent incomplet et que la programmation orienté objet y est assez fastidieuse. Ensuite, en plus d'aller récupérer les données sur le serveur, le navigateur a aussi besoin de récupérer toute l'interface, et l'interprétation des divers fichiers Javascript conduit très vite une application Ajax à un temps de chargement inacceptable.

C'est dans ce contexte que RCP, Rich Client Platform, offre une alternative viable aux clients légers Ajax. C'est la plateforme Java utilisée pour développer Eclipse. Outre ses composants standards réutilisables rapidement, RCP offre à votre application la séparation en plugins et, la cerise sur le gâteau, vous permet de mettre à jour automatiquement les plugins à chaud, sans redémarrage de l'application. Cela réduit donc à néant l'avantage qu'Ajax avait envers les applications riches. Et vous pourrez ainsi développer rapidement et aisément. Vos utilisateurs seront aussi ravis de se retour aux clients riches, car ils pourront avoir une interface conviviale alors que les applications Ajax s'efforçaient sans grand succès à ressembler le plus possible aux applications riches.

Ce tutoriel se bornera à montrer comment réaliser un tel « client hybride », client riche pouvant être mis à jour via un serveur. Vous apprendrez comment créer un projet RCP, des plugins, un site de mises à jour de plugins, et comment interfacer le tout.


1. Les composants d'une application RCP

Voici quelques définitions importantes pour ceux qui ne connaissent pas encore Eclipse RCP. Ce tutoriel n'a pas pour but de tout vous apprendre (la documentation abonde sur internet) mais se concentre sur les plugins RCP.

1.1. Eclipse

Rich Client Platform étant la base de développement de l'IDE Eclipse, il est normal que vous développiez vos propres applications et plugins RCP en utilisant cet IDE. Il fournit de nombreux exemples de projets, du plus simple au plus élaboré, et une très bonne intégration d'outils de développement RCP.

1.2. SWT

Toute l'interface graphique des projets RCP est réalisée en SWT, Standard Widget Toolkit. Cette boîte à outils fournit tous les composants nécessaires et offre une intégration native du look de chaque système d'exploitation supporté.

1.3. JFaces

JFaces est une surcouche de SWT, lui ajoutant le MVC, Modèle Vue Contrôleur. Avec SWT, vous pouvez stocker vos données en un seul endroit (le modèle) et avoir plusieurs vues différentes sur celles-ci (un tableau, une liste, une vue plus « graphique », le tout en ne stockant les données qu'une seule fois en mémoire).

1.4. UI Workbench

C'est le composant le plus important apporté par RCP : l'espace de travail. Il s'agit de la fenêtre principale de votre application. Il contient la barre de menus, la barre d'outils, la séparation de la fenêtre en différentes vues redimensionnables et détachables, avec possibilité de les disposer avec des onglets, les éditeurs de texte avec coloration syntaxique, les formulaires d'édition de fichiers XML, les panneaux latéraux, la barre de statut, etc...

Pour vous faire une bonne idée de ce que fournit le Workbench, je vous conseille d'ouvrir Eclipse : tout ce qui se trouve dans la fenêtre principale est fournit par RCP en tant que composants que vous pourrez rapidement réutiliser. Vous pourrez même créer plusieurs perspectives.

Vous pourrez même réutiliser les icônes et actions standard telles que le copier / coller.

Sans oublier le fait que vous pourrez créer des boîtes de dialogue de propriétés avec un arbre filtrable sur la gauche, un entête avec une icône et un panneau d'aide sur la droite.

1.5. Les plugins

Le second atout de RCP est, comme je l'ai déjà mentionné, l'architecture en plugins. En fait, même l'application principale est un plugin. Les plugins pourront modifier toute l'application, ajouter des actions dans les menus et barres d'outils, changer l'écran de démarrage... RCP fournit toute la logique nécessaire pour que les plugins puissent communiquer ensemble, il fournit le gestionnaire de plugins... Via Eclipse, vous pourrez créer un « site de mise à jour » qui contiendra tous les plugins et ce situera sur votre serveur afin que chaque client puisse l'interroger pour connaître l'existence de nouvelles versions de plugins, les télécharger et les installer.


2. L'application principale

Le but de ce tutoriel est de créer une application principale très simple, et de séparer chaque module dans des plugins indépendants. L'application principale chargera l'espace de travail et s'occupera de la mise à jour des plugins. La taille de chaque plugin devrait rester faible afin de minimiser le temps de téléchargement des mises à jour.

2.1. Création du projet

Entrons tout de suite dans le vif du sujet et créons notre première application RCP.

Lancez Eclipse, et créez un nouveau projet (File -> New -> Project...). Développez « Plug-in Development » et sélectionnez « Plug-in Project ». Comme dit précédemment, tout est plugin dans RCP, même l'application principale. Cliquez « Next > ».


Choisissez un nom de projet, « RCPTest » par exemple, et cliquez « Next > ».

Dans l'écran qui suit, veillez bien à répondre « Yes » à « Would you like to create a rich client application  ». C'est ici que vous spécifiez si ce projet que vous êtes en train de créer est une application autonome RCP ou un plugin. Cliquez « Next > ».

Nous allons utiliser un modèle pour notre première application RCP. Nous choisiront « RCP Mail Template » car celui-ci est assez complet. Cliquez « Finish » pour créer le projet.

Pour exécuter cette application, choisissez « Run » -> « Run As » -> « Eclipse Application ». Après un écran de démarrage personnalisé, vous pourrez admirer cette fenêtre :




3. Mise en place de plugins

3.1. Création d'un plugin

Ouvrez l'assistant de création de projet via « File » -> « New » -> « Project... ». Choisissez « Plug-in Project », cliquez sur « Next > », donnez un nom à votre plugin (« RCPPlugin » pour l'exemple) puis cliquez deux fois sur « Next > ». Nous allons créer un simple « Hello, World » plugin. Choisissez ce modèle et cliquez sur « Finish ».

Le plugin est pour l'instant indépendant de l'application principale : si vous exécutez l'application principale, le plugin ne sera pas chargé. Choisissez « Run » -> « Run... » pour modifier les options d'exécution du projet principal. Dans l'onglet « Plug-ins », cochez « RCPPlugin ». C'est tout ce qui est nécessaire pour exécuter le plugin avec l'application principale. Cliquez « Run ». Un nouveau menu (« Sample Menu ») et un nouveau bouton dans la barre d'outils sont apparus.

3.2. Déploiement de l'application et de ses plugins

Nous avons vu comment créer un projet et un plugin, ainsi que comment les exécuter dans Eclipse.

Pour déployer l'application sur l'ordinateur des utilisateurs, vous devez exporter le projet RCP. Pour cela, il est nécessaire de créer une « configuration de produit ». Vous ne devez en faire qu'un seul et ce sera, en quelque sorte, l' « identifiant unique » de votre projet. En effet, lors de l'export de vos plugins, vous devrez leur associer une application : ces plugins sont-ils faits pour s'intégrer dans Eclipse, ou dans l'application RCPTest   En leur associant la configuration de produit de RCPTest, vous garantissez que ces plugins sont bien intégrables dans cette application.

Le produit permet aussi de changer le nom de l'application, son icône, son écran de démarrage, ses scripts de démarrage sur les différentes plateformes et le plugin à utiliser pour la page de bienvenue.

Cliquez-droit sur le projet RCPTest. Choisissez « New » -> « Other... » -> « Plug-in Development » -> « Product Configuration ». Donnez un nom au fichier (« rcptest.product ») et cliquez sur « Finish ».

Vous êtes maintenant prêt à déployer l'application. Cliquez-droit sur le projet principal et choisissez « Export... ». Sélectionnez « Plug-in Development » -> « Eclipse Product » et cliquez « Next > ».

Sélectionnez un dossier où exporter le projet. Vous pourriez aussi choisir d'exporter dans une archive ZIP mais ce ne serait que compliquer les choses pour cet exemple. Cliquez « Finish » et attendez quelques secondes.

Vous pouvez maintenant ouvrir le dossiez dans lequel vous avez exporté l'application, ouvrir le dossier « eclipse » (ce nom est configurable) pour découvrir ce genre de structure :

Il s'agit de la même structure de dossier qu'Eclipse. Exécutez « exlipse.exe » : votre application se lance parfaitement.

Mais elle ne contient pas le plugin, c'est normal ! Nous allons l'exporter et l'installer comme s'il s'agisait du déploiement d'un nouveau plugin, ou d'une nouvelle version d'un plugin.

Cliquez-droit sur le projet « RCPPlugin », cliquez sur « Export... », mais cette fois, choisissez « Deployable plug-ins and fragments ». Cliquez « Next > », choisissez un dossier et cliquez sur « Finish ».




4. Mise à jour de plugins

4.1. Le site de mise à jour

Un site de mise à jour est tout simplement un dossier accessible par le réseau et dans lequel vous déposez vos plugins.

Pour créer un site de mise à jour, créez un nouveau projet et choisissez « Plug-in Development » -> « Update Site Project » :

Nous l'appelerons « RCPUpdate ». Décochez « Use default location » et entrez le chemin d'un nouveau dossier (« C:\RCPUpdate » dans notre exemple), c'est là que vous déposerez les features et plugins à publier sur le site :

Afin de mettre à disposition vos plugins sur le site de mise à jour, vous devez les « enrober » dans une « feature ». Une feature est tout simplement une archive qui peut contenir plusieurs plugins. Par exemple, la fonctionnalité (feature) « Correction orthographique » aura besoin des plugins « spellcheck », « spellcheck.gui », « spellcheck.dic_fr ». Afin de simplifier la vie à vos utilisateurs, vous regrouperez ces trois plugins dans une seule fonctionnalité logique.

Nous devons donc créer une feature pour mettre à disposition notre plugin. Créez simplement un nouveau projet « Plug-in Development » -> « Feature Project » et donnez-lui le nom « RCPFeature ». Cliquez « Next > » et cochez « RCPPlugin » pour inclure ce plugin dans la fonctionnalité, et cliquez sur « Finish ».

Revenez ensuite dans l'édition du fichier « site.xml » du projet « RCPUpdate ». Cliquez sur « Add Feature... », sélectionnez « RCPFeature », validez par « OK » et sauvegardez site.xml avec Ctrl+S. Cliquez ensuite sur « Synchronize... » et enfin sur « Build All » afin de construire le plugin et la features pour le mettre à disposition sur le site de mise à jour. Cette étape est très important, ou votre site sera vide.

4.2. Le gestionnaire de mise à jour

Maintenant que le site de mise à jour est prêt, nous allons pouvoir modifier notre application principale pour utiliser ce site.

Tout ce que vous avez à faire et d'inclure les packages org.eclipse.update.* dans le projet :

Vous bénéficierez ainsi de l'entrée « Software Update » dans le menu « Help » de votre application, tout comme Eclipse.


Conclusion

Avec ce tutoriel, vous devriez maintenant maîtriser les bases du développement d'application RCP. Vous avez appris à créer un projet, ajouter un plugin, déployer le projet et les plugins, ainsi que créer et utiliser un site de mise à jour. C'est à vous de jouer.

Avec RCP, vous pouvez maintenant créer une application d'entreprise modulaire, où chaque composant pourra automatiquement être mis à jour afin que les utilisateurs bénéficient toujours de la dernière version, tout en profitant d'une interface riche, simple et toujours réactive.




Retrouvez ci-dessous les autres sections du Laboratoire Sun
Evènements
Java Sun Net Talk LIVE CHAT le 2 Avril à 16h303/29/08
SolarisSunDécouvrez les nouveaux Sun Fire sous Intel10/11/07
JavaValtech Days10/9/07
JavaApacheCon du 1 au 4 mai à Amsterdam2/13/07

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

Actualités
SunProjet Kenai: une nouvelle forge open source10/3/08
SunSun Microsystems en forme !8/4/08
SunOpenDS un ldap 100% java7/24/08
SunSun et Fujitsu annoncent un nouveau Sparc647/16/08
SunVisualVM, un outil de surveillance des applications Java7/10/08

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