Plugin Eclipse - Jean qui rit et Jean qui pleure?
De la puissance et de la simplicité d’utilisation
Eclipse est l’environnement de développement multi langage que l’on ne présente plus. C’est l’IDE (Integrated Development Environment) incontournable du Java qui reignait sans partage sur les environnements de développements il y a encore quelques années avant que n’arrivent des concurrents sérieux. Le succès d’Eclipse doit beaucoup à son fonctionnement en plugins, ces extensions de fonctionnalités du logiciel de base qui permettent d’améliorer la plate-forme plutôt que de se lancer dans un développement from scratch d’une autre solution. L’idée est alléchante : un logiciel générique qui se voit spécialisé par des plugins pour se transformer en IDE adapté aux spécificités de tel ou tel langage, telle ou telle technologie. Et dans ce domaine Eclipse est roi. On peut le transformer en tout ou presque : un éditeur avancé Java pour développer des clients lourds ou applications client/serveur, un éditeur de rapport (Birt), un client Subversion, un outil d’aide à la gestion de projet (Remus) etc. Il m’avait été demandé il y a quelques années de développer une interface graphique pour un outil de validation syntaxique de XML et le choix s’est porté sur un plugin Eclipse ce qui permettait de réutiliser les capacités avancées d’éditeur de texte d’Eclipse. En quelques temps nous avions ainsi un éditeur de texte avec coloration syntaxique XML, et tous les copier/coller et pliages/dépliages (folding) d’éléments XML nous évitant ainsi d’avoir à redévelopper ces fonctionnalités s’il avait fallut faire un logiciel from scratch. On trouve d’ailleurs beaucoup de tutoriels sur internet qui permettent d’arriver à ce résultat rapidement. Le déploiement sur le poste utilisateur du résultat est de plus un vrai plaisir via l’Eclipse Update Site. Saisissez simplement sous Eclipse l’URL du site de l’éditeur du plugin qui vous intéresse et quelques “Suivant” et un redémarrage d’Eclipse plus tard vous amèneront devant votre IDE agrémenté de la fonctionalité souhaitée.
Que diable allait-il faire dans cette galère ?
Mais malheureusement tous les besoins ne trouvent pas leur réponse dans le simplissime tutoriel qui permet de créer un éditeur de texte de base et il faut alors se plonger dans la documentation de la bibliothèque des composants visuels d’Eclipse : Standard Widget Toolkit (SWT). Il faut aussi se familiariser avec les concepts d’extensions et points d’extension qui permettent de se brancher sur la plateforme Eclipse et de proposer d’autre points de branchement pour de futurs plugins. Car ceux-ci s’assemblent entre eux pour donner des suites logicielles complètes tel Birt, Web Tools Platform, JBoss Tools qui sont chacun un aggrégat de plusieurs dizaines voir centaines de plugins à chaque fois. Web Tools platform par exemple est l’aglomération de plus de 400 plugins!
Et ce qui ressemblait à un joyeux Légo peut vite se transformer en puzzle de plugins à chaque fois nécessaires dans une version très précise ce qui se termine souvent sur le problème très connu de la gestion des dépendances. Les équipes de développement en sont souvent réduites à mettre en place leur environnement de développement avec les versions courantes des plugins puis à garder précieusement une archive du répertoire Eclipse. Ce “gel” de l’environnement de développement permettra par la suite d’installer un nouveau poste de développement avec les versions exactes des plugins nécessaires pour le projet. À partir de ce moment il n’est plus question de mettre les à jour plugins sous peine de voir s’écrouler le fragile environnement de développement Java.
Les plugins Eclipse sont une alternative puissante au développement from scratch d’une application dont beaucoup de composants existent déjà. Mais ils constituent un état dans l’état Java et dans ce contexte on ne s’étonnera plus de voir, des offres d’emploi de “développeurs de plugin Eclipse” plutôt que de “Développeurs Java”. L’expérience semble en effet montrer que “non”, un développeur Java “Classique” ne possède pas les connaissances suffisantes pour développer un plugin Eclipse, tellement ces derniers sont spécifiques.
Article publié sur LinuxFr dans le cadre de mon activité professionnelle à Linagora.