Les "composants" sont moins formellement définis que les services.
Un service est tout objet qui est enregistré dans le registre des services OSGi et qui peut être recherché à l'aide de son ou ses noms d'interface. La seule condition préalable est qu'un service doit implémenter une interface... n'importe quelle interface. Par exemple, je pourrais enregistrer un objet exécutable sous l'interface java.lang.Runnable
et les clients peuvent la rechercher en utilisant le nom de cette interface.
Un "composant" tend à être un objet dont le cycle de vie est géré, généralement par un cadre de composants tel que Declarative Services (DS), Blueprint ou iPOJO. Voir cette page sur le wiki de la communauté OSGi pour une discussion sur les différents cadres de composants disponibles.
Un composant peut présenter l'une des caractéristiques suivantes, en combinaison ou seul :
- Un composant peut être a commencé y arrêté Il s'agirait d'une composante "active", bien que ce terme soit également informel. Un composant qui n'a pas besoin d'être démarré ou arrêté est appelé passif.
- Un composant peut publier en tant que service OSGi.
- Un composant peut lier à o consommer Services OSGi.
En général, l'utilisation d'un framework de composants est le moyen le plus simple de travailler avec les services OSGi, car le framework gère la liaison avec les services que vous voulez consommer. Par exemple, vous pouvez dire que votre composant "dépend" d'un service particulier, auquel cas le composant ne sera créé et activé que lorsque ce service est disponible -- et il sera également détruit lorsque le service devient indisponible.