Package de gestion générique de plugins.

Ce package est en charge de détecter automatiquement sur le système tous les plugins disponibles de tous types. Ce mécanisme permet d'étendre a posteriori les possibilités du logiciel : en effet, si une librairie contenant des plugins supportés par l'application est déposé dans son classpath, alors ces plugins seront immédiatement disponibles sans aucune adaptation supplémentaire.

Un plugin est une classe réalisant une opération particulière, comme par exemple décoder une source de données, ou encore effecter un traitement sur des données. Un descripteur de plugin est une classe autonome, contenant toutes les informations nécessaires sur le plugin qu'elle décrit afin de choisir ce plugin sans avoir à le charger en mémoire. Il y a donc séparation des métadonnées du plugin et du plugin lui-même. Une catégorie de plugin correspond à une interface ou classe commune dont tous les plugins d'un même type (par exemple un décodeur de flux, ou un écrivain, ...) dérivent.

L'architecture globale de la gestion de plugins est la suivante : un registre de plugin se charge de rechercher sur le système tous les descripteurs de plugins correspondant à des catégories souhaitées. Un fois le scan du système réalisé, il est possible de demander soit des informations sur un plugin en particulier via l'accès à son descripteur, soit l'instantiation d'un plugin.