Et pour les Développeurs ?
La plateforme de développement de plugin d’Atlassian fait entièrement peau neuve.
Cette annonce faisait partie des grandes nouveautés attendues par la communauté. La direction prise semble résolument à l’unification de sa ligne de produits comme le montrent les mises à jour et l’ajout de certains composants (à voir dans la suite de l’article). Commençons !
Le Framework de Plugin
On trouve donc la dernière mouture du composant phare, le framework de plugins, livré dans sa version 2.2 et que l’on retrouve dans Confluence 3, Crowd 2 et Jira 4. Ce framework permet aux développeurs de créer des plugins qui étendent les fonctionnalités des produits Atlassian.
Cette nouvelle version est basée sur OSGi, un système de modules dynamiques pour Java.
Release notes de cette version 2.2 du framework de plugins Atlassian.
Toutes les précisions dans la suite !
Dans la précédente version, les plugins étaient déployés statiquement (dans le dossier WEB-INF/lib de l’application web) ou dynamiquement (via l’interface web, et seulement dans Confluence). Maintenant, les plugins sont dynamiquement déployés dans un conteneur OSGi interne fournissant un ensemble consistant de fonctionnalités et de comportements, peu importe l’application dans lequel le plugin est en train d’être exécuté.
Les plugins Atlassian version 2 tentent au maximum de cacher la complexité d’OSGi. Pour ce faire, depuis la dernière évolution, les plugins déployés dans le conteneur OSGi sont automatiquement transformés en un bundle OSGi que le conteneur peut comprendre. Le framework embraque un mécanisme de transformation des plugins (packagés sous forme de jar) vers des bundles OSGi.
Vous pouvez découvrir l’explication du mécanisme de transformation de plugin en bundle OSGi.
Les experts OSGi seront tout de même libres d’écrire directement un bundle OSGi pour plus de flexibilité et ainsi contourner cette transformation. Ce mécanisme de rétrocompatibilité permet aux plugins « legacy » d’être toujours déployables dans les nouvelles versions des produits (à quelques incompatibilités près ???). Dès lors, pour qu’un plugin soit validé version 2, il suffit d’ajouter l’attribut pluginsVersion=”2″ dans le descripteur de plugin Atlassian-plugin.xml.
Composant SAL
On trouve aussi dans cette plateforme, un nouveau composant nommé le Shared Access Layer (SAL). Ce composant est une API d’accès aux services communs, une couche d’abstraction qui permet pour une partie du code, de s’affranchir de la connaissance de l’application dans laquelle il est en train de s’exécuter. Cette couche offre donc une API unifiée et consistante aux tâches communes des plugins.
Ces services communs incluent les éléments suivants sans y être limités :
- La planification de tâches
- L’internationalisation (gestion des langues)
- La persistance pour les réglages des plugins
- Un framework de mise à jour des plugins
L’Unified Plugin Manager
Le dernier composant est l’Unified Plugin Manager (UPM).
Il s’agit d’une interface permettant d’installer, gérer, mettre à jour et partager les plugins Atlassian. Pour le moment (mardi 14 juillet 2009), ce composant n’est pas encore disponible (en alpha) mais s’annonce très prometteur. À suivre, notamment sur le blog des développeurs Atlassian : http://blogs.atlassian.com/developer/ !
incluant le framework de plugin et les autres composants
Page d’accueil de la plateforme de développement dans la documentation Atlassian
Cette évolution de la plateforme apporte des avantages considérables en termes d’évolution et de maintenance du code.
Voici la vidéo et les slides de la conférence « Plugins 2.0 Overview » du lundi 1er juin 2009 (durée : 53mn14s) :
Pour résumer, les points importants sont les suivants :
- On est censé en finir avec les développements utilisant des hacks pour arriver à ses fins (c’est un développeur qui parle !)
- On peut abstraire (factoriser) une partie du développement des plugins pour les produits Atlassian
Techniquement :
- La communication entre plugins est normalisée via des imports de composants et des déclarations d’interfaces publiques
- Les dépendances sont donc explicitement déclarées et vérifiées au runtime
Reste à voir ce que donne toutes ces évolutions dans la pratique !
Beau programme en tout cas.




