5
Rôle d’unité de déploiement
Un point important est que le bundle est une unité
de déploiement, c’est-à-dire que c’est un élément
« tangible » qui d’une part va pouvoir être copié et
transféré ; mais qui d’autre part va servir à empaqueter
les classes qui pourront ainsi être partagées, chargées
et utilisées.
Rôle d’unité de composition
L’autre aspect d’un bundle est qu’il est utilisé
comme unité de composition. C’est-à-dire qu’il va être
utilisé avec d’autres pour définir une ou plusieurs
applications. Dans OSGi, cette composition peut se
faire à deux niveaux : niveau classe et niveau objet.
Dans cette section nous allons nous intéresser au
niveau classe, le niveau objet sera quant à lui traité
dans les autres couches. Au niveau classe le Bundle
permet de cloisonner les classes entre ce qui est propre (privé) à l’exécution du Bundle de ce qui sera
partagé dans la composition. Cet aspect est basé sur les métadonnées fournies par le Bundle.
Nous allons, dans un premier temps, aborder les métadonnées définies par OSGi, puis la prise en
charge des classes et des librairies de code natif.
3.1.1 Métadonnées d’un bundle
OSGi spécifie une spécialisation de l’archive Java pour son contexte d’exécution. De ce fait il
réutilise le fichier de métadonnées (Manifest) défini par Java (cf. encadré ci-contre) pour y inscrire
ses propres métadonnées.
OSGi définit un certain nombre de
métadonnées (cf. section 3.2.1 de
http://www.osgi.org/download/r4v43/r4.core.pdf).
Dans cette section nous n’allons pas décrire
l’ensemble des propriétés, mais seulement celles
qui sont liées au cycle de vie et à la gestion des
classes/code.
Gestion des classes/code
Bundle-ClassPath : cette propriété est
utilisée pour indiquer les chemins (path) vers les
archives Java contenues dans le bundle. De cette
manière, les classes et les ressources de ces
archives embarquées pourront être utilisées. Par
exemple : /lib/jms.jar. Nous aborderons à
nouveau cette propriété dans la section 3.1.2.
Figure 3 Module OSGi : Bundle
Les Manifests dans Java
Les archives Java supportent de
nombreuses fonctionnalités, comme les
signatures électroniques, le contrôle de
version et bien d’autres aspects. Ces
fonctionnalités nécessitent des informations
incluses dans l’archive Java : c’est le rôle du
Manifest.
Le Manifest (fichier MANIFEST.MF) est un
fichier de métadonnées dans le répertoire
META-INF de l’archive Java. Ce fichier contient
au moins l’information de version du Manifest.
Par défaut Java définit un ensemble de
métadonnées : comme par exemple le nom du
vendeur ou la version de l’archive. La plupart
des métadonnées dépendent du contexte
d’exécution et de la nature de l’archive.
Pour plus d’information, référez-vous à
http://java.sun.com/developer/Books/javapro
gramming/JAR/basics/manifest.html.