Vous êtes sur la page 1sur 41

CONSERVATOIRE NATIONAL DES ARTS ET METIERS

CENTRE REGIONAL RHNE-ALPES CENTRE DENSEIGNEMENT DE GRENOBLE

EXAMEN PROBATOIRE
Spcialit INFORMATIQUE prsent par Laurent GAYET

Principes, mise en uvre et limites actuelles de la technologie OSGi

Soutenu le 14 dcembre, Grenoble, devant le jury : Prsidente : Mme Vronique Donzeau-Gouge (CNAM Paris) Examinateurs : M. Eric Gressier(CNAM Paris) M. Jean-Pierre Giraudin (CNAM, UPMF Grenoble) M. Andr Plisson (CNAM Grenoble)

Tuteurs : Grenoble)

M. Jrme Gensel (LSR-IMAG Grenoble) M. Windson Viana de Carvalho (LSR-IMAG

CONSERVATOIRE NATIONAL DES ARTS ET METIERS


CENTRE REGIONAL RHNE-ALPES CENTRE DENSEIGNEMENT DE GRENOBLE

EXAMEN PROBATOIRE
Spcialit INFORMATIQUE prsent par Laurent GAYET

Principes, mise en uvre et limites actuelles de la technologie OSGi

Soutenu le 14 dcembre, Grenoble

REMERCIEMENTS
Je remercie tout dabord mes tuteurs Jrme Gensel et Windson Viana de Carvalho pour leur accueil au laboratoire LSR-IMAG de Grenoble. Leur suivi de lavancement de mes travaux et leur intrt pour mon preuve probatoire ont t trs importants. Grand merci Jrme pour la relecture attentive et efficace de cet crit. Je remercie Catherine qui me soutient depuis le dbut, pour ses prcieux encouragements. Je la remercie aussi pour sa patience, et il en faut, vis-vis de mon engagement dans cette preuve. Je la remercie enfin pour la relecture du mmoire, et son effort de comprhension envers ce sujet. Je remercie aussi mes collgues de travail, mes responsables en entreprise qui mont beaucoup soutenu dans la poursuite de mes tudes et leur intrt dans ma formation au CNAM. Merci Kinaou et Fabrice pour la relecture du mmoire. Je tiens encore remercier toute ma famille pour les confortables conditions quils mont apportes pour la russite de mon projet. Je remercie aussi mon grand-pre qui a toujours t mon coute et ma encourag trs vivement dans la poursuite de mon cursus scolaire. Je tiens lui tmoigner toute ma reconnaissance et lui dire quil nous manque normment. Je tiens enfin remercier toutes les personnes que je nai pas cites mais qui se reconnaitrons.

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

SOMMAIRE
Table des figures.................................................... ..................1 Liste des acronymes.............................................. ...................2 Introduction............................................................... ..............3 1. Les principes............................................................ .............4 1.1. L architecture oriente services........................................................4 1.2. La technologie OSGi..........................................................................5 2.La spcification..................................................................................6 3.Le framework.....................................................................................7 4.Les services natifs..............................................................................9 4.1. Les domaines dapplication.............................................................11 5.La domotique....................................................................................11 6.Les logiciels......................................................................................12 7.L automobile.....................................................................................13 8.La tlphonie mobile........................................................................13 2. La mise en uvre............................... .................................14 8.1. Le fonctionnement gnral.............................................................14 9.Les composants................................................................................14 10.Le cycle de vie dun composant.....................................................17 11.Le courtage de services.................................................................17 11.1. Les implmentations existantes....................................................18 12.Oscar et Flix.................................................................................19 13.Knopflerfish....................................................................................19 13.1. Un exemple pratique : un convertisseur montaire......................20 14.Les composants dvelopps...........................................................20 15.La recherche du service adquat...................................................22 3. Les limites actuelles...................... ......................................24 15.1. Les dfauts....................................................................................24 15.2. Des solutions.................................................................................25 Conclusion........................................... ..................................27 Annexes........................................................................ .........28 Annexe 1 : le code source de ConvertPackage..........................28 Annexe 2 : le code source de ConvertService.......................... ..28 Annexe 3 : Le code source de ConvertRequester.......................29 Glossaire............................................................................. ...32 Bibliographie....................................................................... ...34

Table des figures


Figure 1 : Fonctionnement dune Architecture Oriente Services..5 Figure 2 : Composition dynamique dapplication au sein dOSGi [Donsez]................................................................. ..................8 Figure 3 : Vue en couche de lenvironnement OSGi et ses bundles [Donsez]................................................................. ..................9 ___________________________________________________________________________ Laurent GAYET -1CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi Figure 4 : Figure 5 : Figure 6 : Figure 7 : 2. 20 Figure 8 : 22 Tableau 1

Principes, mise en uvre et limites actuelles de la

Interactions dans un rseau domotique [Donsez].......12 Contenu dun bundle OSGi [Frenot]...........................15 Cycle de vie dun bundle [Frenot]..............................17 Interface graphique de la plate-forme OSGi Knopflerfish Composants du convertisseur sur une plate-forme OSGi. : Champs dun fichier manifest [OSGi a].....................16

Liste des acronymes


API (Application Programming Interface) : interface de programmation dapplications. IDE (Integrated Development Environment) : environnement complet pour le dveloppement offrant une interface graphique. J2ME (Java 2 Micro Edition) : framework Java spcialis dans les applications mobile. JVM (Java Virtual Machine) : machine virtuelle Java, indispensable au lancement de toute application Java. MIDP (Mobile Information Device Profile) : profil J2ME utilis par certains tlphones mobiles. OSGi (Open Service Gateway Initiative) : organisation qui tablit les spcifications dune passerelle ouverte pour la diffusion et lutilisation de services. SOA (Service Oriented Architecture) : modle dinteraction applicative qui met en uvre des services. SOAP (Simple Object Access Protocol) : protocole daccs distance bti sur XML et utilis par les WebServices. UML (Unified Modelling Language) : langage de modlisation unifi. UPnP (Universal Plug and reconnaissance de matriel. Play) : protocole universel pour la

XML (eXtended Markup Language) : langage balises extensibles.

___________________________________________________________________________ Laurent GAYET -2CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Introduction
Les concepts de la programmation et des architectures logicielles nont cess dvoluer ces dernires annes. Aprs que les techniques conventionnelles de programmation ont t remplaces par le dveloppement de modle objets, la programmation par composants est apparue et a permis un dveloppement plus modulaire des applications. Bas sur cette technique de programmation, un nouveau concept architectural est apparu rcemment : larchitecture oriente services ou SOA (Service Oriented Architecture). L architecture oriente services est une technologie qui doit permettre aux applications la mettant en uvre un dcoupage modulaire de leur architecture. Les fonctionnalits ncessaires ce concept architectural sont apportes par une plateforme sur laquelle sont excuts les logiciels qui les utilisent. L emploi dune architecture oriente services permet la rutilisation des briques logicielles et leur partage entre les diverses applications prsentes sur la plate-forme. La technologie SOA prsente lavantage de permettre un dcoupage du travail entre les diffrents programmeurs dune application. Elle facilite aussi son volution et sa maintenance aprs sa mise en production. La technologie OSGi (Open Service Gateway Initiative) prsente les caractristiques principales pour le dveloppement darchitecture oriente services mais OSGi a t initialement conus pour les domaines qui traitent des applications embarques. Cette technologie est gnralement employe dans le domaine de la domotique qui permet un change dinformations entre les appareils domestiques dun mme rseau. Elle autorise le dploiement de services programms partir du langage Java et les rend accessibles tous les appareils du rseau domotique. Mais cette technologie par ses avantages et par louverture de sa spcification, se montre galement utile dans le domaine de lautomobile et de la tlphonie mobile. Ce mmoire est organis comme suit : La premire partie du rapport dcrit les principes de la technologie OSGi. La seconde partie est consacre la mise en uvre dune plate-forme OSGi et un exemple pratique qui met en uvre un service de conversion montaire. Enfin, dans une troisime partie sont exposes les limites actuelles rencontres dans lutilisation dune telle plate-forme.

___________________________________________________________________________ Laurent GAYET -3CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

1.Les principes
Nous dcrivons ce quest une architecture oriente services, puis les spcificits de la technologie OSGi sont prsentes. Enfin, des exemples concrets dutilisation dans diffrents secteurs sont abords.

1.1.Larchitecture oriente services


L architecture oriente services (appele aussi SOA pour Service Oriented Architecture, en anglais) est un concept architectural qui sapplique la structure dapplications [Prog]. La plupart des platesformes SOA est base sur la programmation oriente composant, elle met donc en uvre des composants logiciels appels services. Le fonctionnement de cette architecture repose sur deux principes fondamentaux [SOA] :

une forte cohrence interne : les composants logiciels sont bass sur un mme format dchange standardis. les couplages entre composants sont dits lches : les changes dinformations sont minimaux et sont bass sur lutilisation dinterfaces interoprables.

Le service est le composant cl de larchitecture, il fournit une fonctionnalit bien dfinie. Cest aussi un composant autonome qui ne dpend daucun contexte ou service externe. Les services sont enregistrs par des composants dits fournisseurs dans un annuaire fourni par larchitecture. Les services rfrencs sont alors mis la disposition de consommateurs ou clients (cf. figure 1). La figure ci-dessous montre quun composant souhaitant mettre disposition un service (tiquette 1), lenregistre dans lannuaire (tiquette 2). Puis, les composants clients souhaitant utiliser ce service (tiquette 3), mettent une requte pour rechercher le service dsir dans lannuaire (tiquette 4). Si la rponse est positive, une liaison (appele aussi binding) est mise en place pour lutilisation du service (tiquette 5).

___________________________________________________________________________ Laurent GAYET -4CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Figure 1 : Fonctionnement dune Architecture Oriente Services.

Par dfaut, le service ne peut tre utilis que par un seul client car le service est un singleton. Mais, chaque liaison avec un nouveau consommateur celui-ci peut crer un processus fils. Il peut ainsi tre utilis par plusieurs clients en mme temps. On dit alors que le service est multitches. Le cur de larchitecture ou framework sur lequel reposent les composants a un rle de mdiateur : il met en relation les composants entre eux. Il est encore appel intergiciel (middleware). Il fournit aussi une large gamme de services natifs tels que la supervision, le contrle ou encore le suivi des versions des composants. L architecture oriente services est utilise pour rpondre au problme de rutilisabilit, dinteroprabilit et de rduction des couplages entre les diffrentes applications. Beaucoup dorganisations ont t sduites par ce modle qui permet de partager les briques logicielles des applications prsentes sur la plate-forme [Prog]. Ceci vite laffectation des briques mtiers un seul logiciel. On dit alors que larchitecture SOA permet une expansion horizontale des applications. Les solutions les plus connues du march sont celles dIBM avec IBM SOA Foundation, dOracle avec Fusion Architecture ou encore de BEA avec Aqualogic. Les architectures orientes services ont fait leur apparition grce aux Web Services qui restent les plus connus et les plus utiliss encore aujourdhui. Les Web Services permettent de mettre disposition des services sur le Web. Le langage utilis pour lchange dinformation est XML (eXtended Markup Langage) grce au standard SOAP (Simple Object Access Protocol).

1.2.La technologie OSGi


La technologie OSGi est base avant tout sur une spcification relativement complexe qui sera dtaille dans les points suivants. ___________________________________________________________________________ Laurent GAYET -5CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

2. La spcification L alliance OSGi [OSGi] est une organisation ne en Mars 1999. Elle regroupe plusieurs grands industriels et laboratoires du secteur des nouvelles technologies et des tlcommunications. Sa communaut est constitue entre autres de Nokia, Motorola, IBM, Sun Microsystems, etc. Son objectif principal est de fournir une infrastructure ouverte et standardise destine principalement aux systmes embarqus. Cette plate-forme, base sur le langage Java, permet un contrle distance de son environnement et le chargement dynamique, de code tout en restant indpendante du systme sur lequel elle se trouve installe. Elle permet ainsi de faciliter le dveloppement et le dploiement dapplications [OSGi a]. La spcification est discute et tablie par les experts des membres de lorganisation mais celle-ci est librement accessible par le grand public sans aucun droit de licence. Les experts de lorganisation sont rpartis dans les 3 catgories suivantes :

Mobile : pour tout ce qui trait la mobilit et aux tlcommunications mobiles. Vhicule : pour les disciplines concernant lautomobile. Noyau : pour tout ce qui se rapporte au noyau de la plateforme.

La cration dun nouveau groupe Entreprise est prvue et concernerait les applications utilises en entreprises [OSGi b]. La spcification a t mise jour dans sa quatrime version (appele aussi release) en Octobre 2005. Cette nouvelle version a principalement t compose des recommandations formules par le groupe Mobile Expert Group (MEG) dont Nokia et Motorola font partie. Elle tend le domaine dapplication de la plate-forme OSGi aux quipements mobiles. Les points les plus pertinents de cette nouvelle version sont les suivants :

Gestion de lnergie et des ressources de lquipement : pour permettre de charger le framework sur des quipements de faible capacit. Renforcement des rgles de scurit : gestion des composants bundles signs et possibilit dextension des rgles de scurit. Amlioration du dploiement de composants.

___________________________________________________________________________ Laurent GAYET -6CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Compatibilit avec la version 3 de la spcification : la nouvelle version doit permettre le fonctionnement des composants existants.

3. Le framework Le framework OSGi fournit aux applications, un environnement dexcution standardise. Les composants unitaires de la plate-forme sont appels des bundles. Un bundle peut tre la fois un fournisseur et un consommateur de services. Le framework OSGi est donc une plate-forme de type SOA mais celui-ci apporte en plus une gestion dynamique des composants [Donsez]. En effet, une application qui est compose de plusieurs bundles est capable de se composer dynamiquement pendant son excution en fonction des bundles prsents au sein du framework. Cette action est rendue possible par la notification dvnements par le framework aux consommateurs lors dun changement dtat li larrive, la mise jour ou le retrait dun service (cf. figure 2). La partie gauche de la figure ci-aprs dcrit les tapes engendres par larrive dune nouvelle version dun service A. Le framework avertit le consommateur par lenvoi dun vnement quun nouveau service vient darriver. Le consommateur du service A relance une recherche dans lannuaire afin dactualiser les liaisons avec les composants fournisseurs de service A. Le consommateur trouve alors deux versions du service A qui remplissent les conditions demandes. Le consommateur est alors libre dutiliser lun des deux services mis disposition. La partie droite de la figure montre la dsinstallation sur la plate-forme, du composant fournisseur de la version antrieure du service A. Le service est retir de lannuaire, le framework ragit cette action et notifie les composants de la plate-forme quun service vient dtre retir. Le consommateur effectue une nouvelle recherche et ne trouve plus quun service correspondant aux critres demands. La liaison avec le composant fournisseur de la precedente version du service A est maintenue.

___________________________________________________________________________ Laurent GAYET -7CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Arrive dynamique dune nouvelle version de service

Retrait dynamique dune implmentation de service Figure 2 : Composition dynamique dapplication au sein dOSGi [Donsez].

La plate-forme OSGi permet donc le chargement et dchargement dynamique de code ainsi que la gestion des dpendances versionnes des modules. Mais elle dispose galement dun autre avantage : le dploiement dynamique dapplication sans interruption de la plate-forme rendu possible par la gestion du cycle de vie des bundles. Ces points seront explicits dans la seconde partie de ce document qui traite de la mise en uvre dOSGi. La vue en couche de lenvironnement OSGi (cf. figure 3) [Donsez] montre que le framework travaille au dessus de la machine virtuelle Java qui, elle-mme, est place au dessus du systme dexploitation. Le lien entre le systme dexploitation et le matriel est rendu possible par lutilisation de pilotes. Ainsi, les bundles peuvent exploiter les ressources du framework, de la JVM et du systme dexploitation. Il est noter que les pilotes du matriel peuvent aussi tre reprsents par des bundles OSGi.

___________________________________________________________________________ Laurent GAYET -8CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Figure 3 : Vue en couche de lenvironnement OSGi et ses bundles [Donsez].

Cette disposition fait ressortir lavantage quOSGi offre en matire de portabilit de ses bundles sur de multiples plates-formes, rendue possible par lutilisation du langage Java et de sa machine virtuelle. Bien sr, il faut que la programmation des composants reste la plus gnrique possible en vitant lappel de fonctions propres un systme dexploitation. Cette prcaution permet de garantir le portage des composants un autre systme disposant dune plateforme OSGi. La scurit na pas t oublie puisque le framework a t conu autour des rgles de scurit du model Java 2 [OSGi]. Celles-ci permettent dviter les risques de buffer overflow, faille utilise par certains virus pour excuter un code malveillant. Elle permet aussi de limiter la vision de code par lutilisation de packages de classes prives ou encore dtablir des permissions pour certaines actions selon les profils utilisateurs. 4. Les services natifs La spcification OSGi dcrit une multitude de services utiles pour le dploiement et la gestion dapplication. Cependant, les services proposs peuvent ne pas tre implments dans certaines solutions quoffre le march. Nous donnons ci-dessous une liste non exhaustive de services classs par type [OSGi] [Menga] : les Framework Services sont considrs comme optionnels, ils agissent directement sur le comportement de la plate-forme.

___________________________________________________________________________ Laurent GAYET -9CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Permission Admin : permet ladministrateur de rgler les permissions Java alloues chaque bundle. Package Admin : permet la gestion des dpendances entre composants. Start Level : permet de grer le dmarrage simultan de plusieurs bundles ou leur ordre de dmarrage.

les System Services sont des fonctions qui sont ncessaires et courantes tous les systmes.

Log Service : permet le suivi de toutes les oprations effectues par le systme : warnings, informations de dbogage ou erreurs. Device Access Service : mcanisme associant des pilotes un nouveau matriel automatiquement tlchargeable sous forme dun bundle implmentant ces pilotes. User Admin Service : ce service permet aux bundles de grer lauthentification des utilisateurs ainsi que les autorisations associes. Preferences Service : permet chaque bundle de stocker des donnes spcifiques aux utilisateurs. Event Admin : fournit des outils pour manipuler tous les vnements du framework.

___________________________________________________________________________ Laurent GAYET -10CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

les Protocol Services permettent lutilisation de protocoles standards.

Http Service : permet aux bundles de publier des fichiers et des servlets grce au protocole http. UPnP Service : Universal Plug and Play (UPnP) est un standard mergeant pour la reconnaissance du matriel. Il permet dtablir une hirarchie des quipements prsents sur le systme, dexporter et dutiliser des services UPnP.

les Miscellaneous Services reprsentent les services qui ne peuvent tre classs dans les catgories prcdentes.

Wire Admin Service : ce service permet de spcifier dans un fichier de configuration des rgles strictes entre un consommateur et un fournisseur. XML Parser Service : met la disposition des bundles un analyseur syntaxique XML.

La technologie OSGi a t prsente avec les fonctionnalits offertes par son framework et les services apports. Dans la section suivante, nous prsentons les domaines dapplications dans lesquels est utilise cette technologie.

4.1.Les domaines dapplication


La plate-forme OSGi est utilise dans de multiples domaines. A lorigine, OSGi tait prvue pour le rseau local dun foyer. Elle permet denglober les applications servant automatiser les tches mnagres, principe mme de la domotique. Mais, elle et un tel succs que son application a t tendue dautres domaines. 5. La domotique La domotique permet lautomatisation des tches mnagres excutes par une passerelle centralise (i.e. ordinateur reliant deux rseaux entre eux). Un rseau local relie la passerelle tous les quipements de la maison. Pour cela, il faut que le matriel soit compatible et prt rpondre aux demandes formules par le serveur central. L entreprise Siemens exploite dj cette technologie [OSGi]. Elle fournit des quipements pouvant tre pilots par une passerelle centrale sur laquelle est installe une plate-forme OSGi. Le systme permet, par ___________________________________________________________________________ Laurent GAYET -11CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

exemple, laide de son tlphone portable de vrifier que le four a bien t teint, de rguler le chauffage ambiant avant son arrive au domicile ou encore de signaler quun quipement besoin dtre rvis. L utilisation de la technologie OSGi permet la mise jour des pilotes ou des interfaces lis un quipement et la programmation de scnarii personnaliss. La figure suivante illustre un rseau domotique avec passerelle OSGi. Elle montre les interactions entre les divers quipements intrieurs et les entits extrieures qui dploient leurs applications sur la passerelle et interagissent avec elle (cf. figure 4) [Donsez].

Figure 4 : Interactions dans un rseau domotique [Donsez].

6. Les logiciels L environnement de dveloppement Eclipse est trs apprci par la communaut des dveloppeurs car il est trs complet et personnalisable [Eclip] [OSGi]. En effet, Eclipse est une architecture innovante construite autour dun petit noyau extensible. Toutes les fonctionnalits, incluant linterface graphique (GUI), le compilateur, etc. sont des plugins qui peuvent tre grs indpendamment. De plus, Eclipse dispose dune multitude de plugins libres ou propritaires qui peuvent tre ajouts au noyau pour en accrotre les fonctionnalits. Eclipse la base conu pour dvelopper partir de Java, est devenu un excellent IDE pour PHP, C++, Python ou encore un outil pour la conception de diagramme UML. La plate-forme OSGi a t adopte pour rpondre aux exigences de la version 3 de Eclipse. Elle a permis la mise en place dune architecture pleinement dynamique par le fait que lajout dun nouveau plugin ne ___________________________________________________________________________ Laurent GAYET -12CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

ncessite par un redmarrage de lapplication. Eclipse utilise la plateforme OSGi libre de IBM appele SMF. 7. Lautomobile Le monde de lautomobile a adopt la plate-forme OSGi en lintgrant dans les systmes embarqus des vhicules [OSGi]. BMW est le premier constructeur fournir une solution qui connecte le systme de lautomobile avec le monde extrieur. Dans ces nouveaux modles, BMW utilise les spcifications OSGi pour sa plate-forme dinformation et de multimdia. Ceci lui permet de centraliser les fonctionnalits, ce qui a pour effet de simplifier les procdures de mise jour des diffrents lments du systme. Cela permet aussi de simplifier la complexit du systme en rduisant les units de contrle dans la voiture. Il devient ainsi facile de grer les diffrentes configurations pour les divers marchs et lignes de produits. 8. La tlphonie mobile Le langage Java a connu un fort engouement dans le march de la tlphonie mobile notamment grce lavnement des Smart Phones et les possibilits quils offraient alors en termes de dploiement et dexcutions dapplications Java [OSGI]. Ces applications qui respectent les spcifications de la MIDP (Mobile Information Device Profile) sont peu consommatrices en ressources (i.e. mmoire et puissance de la machine). Ce sont, en principe, des jeux ou des petites applications mais les ressources des tlphones portables sont trop limites pour accueillir des applications systmes ou applications dentreprise. Toutefois, les applications dentreprise, destines tre largement distribues, ont besoin dune plate-forme de services stable, solide et flexible. La technologie OSGi rpond toutes ces exigences, cest pourquoi elle vient dtre adopte pour piloter la prochaine gnration de Smart Phones. Ceci devrait permettre de faire dcoller le march des applications dentreprise destines au monde mobile. Toutefois, il existe dj de petites applications OSGi qui fonctionnent sur des appareils mobiles offrant une quantit de mmoire suffisante pour leur installation et leur fonctionnement. Ces appareils mobiles sont en gnral des PDA (Personnal Digital Assistant), ils disposent dune taille plus importante que les tlphones portables donc ils embarquent aussi plus de ressources. Les restrictions de mmoire sappliquent aussi la plate-forme OSGi employe qui doit tre trs compacte. La machine virtuelle Java ncessaire lexcution de cette solution est la J2ME (Java 2 Micro Edition) qui fournit un framework Java adapt aux matriels mobiles. Apres avoir dcrit les principes de OSGi, nous tudions maintenant la mise en uvre dune plate-forme exploitant cette technologie. ___________________________________________________________________________ Laurent GAYET -13CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

2.La mise en uvre


Il est prsent ncessaire dexpliquer le fonctionnement de cette architecture et de dcrire le contenu de ses composants. Puis, nous apportons une brve description des implmentations existantes, et enfin, nous analysons un exemple concret dutilisation de la plate-forme OSGi.

8.1.Le fonctionnement gnral


Le fonctionnement de larchitecture semble complexe tant donne la multitude de services et classes offerts par le framework. Le dveloppement dune application sur la plate-forme OSGi doit respecter un certain nombre de rgles afin que le mcanisme (i.e. concept de fonctionnement) mis en uvre sexcute correctement. 9. Les composants Le composant principal est le bundle, il est lunit de diffusion et de dploiement des services. Il sagit dune archive (i.e. emballage) contenant un ensemble de services satisfaisant les caractristiques OSGi. Il est notamment constitu des deux lments suivants (cf. figure 5) :

les objets : ce sont les fichiers rsultants de la compilation du code source au format Java. Ils se matrialisent par des fichiers au format .class placs dans une hirarchie de fichiers. le fichier manifest : cest un fichier au format texte qui est la pice matresse du bundle. En effet, il fournit toutes les informations du bundle : son nom, les services requis et exports, les packages imports et exports, etc.

___________________________________________________________________________ Laurent GAYET -14CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Figure 5 : Contenu dun bundle OSGi [Frenot]

Le bundle contient un objet Activator qui implmente linterface BundleActivator fournit par le framework OSGi. L objet Activator permet le contrle du cycle de vie du bundle partir du framework. En effet, lobjet doit implmenter les mthodes Start() et Stop() de linterface. Le chemin de la classe Activator doit tre spcifi dans le fichier manifest pour tre pris en compte. Tous les bundles contiennent un objet Activator lexception des bundles de ressources qui nont besoin que dexporter les classes quils contiennent et nont donc pas la ncessit dtre dmarrs. Un service est reprsent par une interface (i.e. une classe abstraite qui contient exclusivement des mthodes virtuelles) dont le rle est dapporter une description des mthodes exportes par le service vers les consommateurs dsireux de lutiliser. L interface dun service est encapsule dans un package qui est export par le bundle. Cette dernire porte alors sa spcification la connaissance des autres bundles. Pour cela, les packages exports doivent tre spcifis dans le fichier manifest. L implmentation dun service est ralise par une autre classe qui implmente des fonctionnalits de linterface. Elle peut tre incluse dans le mme bundle que linterface ou dans un autre. Au dmarrage du bundle, le service est alors instanci et rfrenc dans le Service Registry du framework. Le service sera retir et supprim larrt du bundle. Il faut prciser que la classe qui implmente le service ne se trouve pas dans le mme package que linterface car il nest pas ncessaire de lexporter. En revanche, le bundle qui fournit un service devra alors renseigner le champ adquat dans le fichier manifest. Le fichier manifest contient toutes les informations du bundle ncessaires sa bonne intgration dans la plate-forme OSGi. Les champs qui le composent sont prsents dans le tableau ci-dessous, les champs les plus importants sont affichs avec une trame grise (cf. tableau 1). ___________________________________________________________________________ Laurent GAYET -15CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi Import-Package Export-Package Import-Service Export-Service Bundle-Activator BundleBundle-Name Bundle-Description Bundle-Version Bundle-DocURL BundleContactAdress Bundle-Copyright Bundle-Category BundleRequiredExecution Environment DynamicImportPackage

Principes, mise en uvre et limites actuelles de la

Packages requis (avec/ou sans la version de spcification) Packages fournis (avec/ou sans la version de spcification) Services requis Services fournis Nom de la classe Activator (si ncessaire) URL des mises jour du bundle Nom du bundle Description du bundle Version du bundle URL de la documentation du bundle Coordonnes du propritaire du bundle Copyright du bundle Catgorie du bundle Liste denvironnements devant tre prsents sur la plate-forme (exemple : CDC-10/Fondation-1.0, imports en Liste de packages qui pourront tre cours dexcution.

Tableau 1 : Champs dun fichier manifest [OSGi a].

___________________________________________________________________________ Laurent GAYET -16CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

10.Le cycle de vie dun composant Un bundle, aprs son installation sur la plate-forme, prend un identifiant unique. Il est alors possible de grer son cycle de vie (i.e. tat) partir de lAPI du framework [OSGI]. En effet, il peut tre dmarr, si toutefois tous les packages imports (i.e. les dpendances) sont prsents sur la plate-forme OSGi (il est alors dans ltat resolved), et stopp partir de la console du framework (cf. figure 6). Il est noter que le partage de packages entre composants ne ncessite pas le dmarrage de ces derniers mais simplement leur prsence sur la plate-forme.

Figure 6 : Cycle de vie dun bundle [Frenot].

11.Le courtage de services Un bundle fournisseur de service cre une instance de ce service et le rfrence dans le Service Registry du framework. Lors de lenregistrement dun service, le composant fournisseur spcifie le nom de la classe de linterface utilise ainsi quune table de proprits qui dcrit ce service. Les informations fournies dpendent du service offert, elles nont aucune obligation ni champ prcis respecter. La table dinformation est en ralit un dictionnaire avec des attributs (i.e. cls) au format chane de caractres ainsi que les valeurs donnes ces attributs.

___________________________________________________________________________ Laurent GAYET -17CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Le consommateur, pour affiner la recherche du service le plus appropri ses besoins, va lancer une recherche dans le registre laide dun filtre. Ce filtre est une expression compose de conditions LDAP (Lightweight Directory Access Protocol). L expression filtre est ensuite compare aux proprits enregistres par les services afin de trouver les services enregistrs qui rpondent toutes les conditions demandes. Le filtrage sur conditions LDAP est bas sur des expressions simples qui respectent les rgles suivantes [Frenot]: le format dune condition est [Attribut] [Oprateur] [Valeur]. les valeurs sont de type String.

lattribut est insensible la casse. lattribut objectClass reprsente le nom du service. les oprateurs sont : >=, <=, =, ~= (approximativement gal), =* (prsent). les connecteurs logiques employs sont : &, | , !.

Voici un exemple de condition LDAP pour rechercher un service dimpression et de fax situ au 4e tage. ServiceReferences [] refs ; Refs = bundleContext.getServiceReferences (null, (&(objectClass=org.device.print.PrintServi ce) + (objectClass=org.device.fax.FaxService) + (location=4th floor))); La gestion de la dynamicit des services est mise en uvre par les listeners. Un listener est un objet cr et rfrenc par le consommateur. Il est cens intercepter les vnements mis par le framework pour, par exemple, ragir larrive dun nouveau service ou le retrait dun service existant. En effet, aucun mcanisme nest prvu au niveau du framework pour la gestion des services dun consommateur, cest le composant consommateur lui-mme qui doit grer la dynamicit au niveau des liaisons avec les services quil utilise. Cette particularit est une contrainte prendre en compte par le dveloppeur au moment de la conception dune application.

11.1.Les implmentations existantes


Le march est dot dune dizaine de plates-formes propritaires et open source qui implmentent le framework OSGi. Certaines solutions implmentent la totalit des spcifications donnes par lalliance, dautres en partie seulement. Par ailleurs, elles apportent chacune leurs propres fonctionnalits, comme la prsence dune interface graphique ou dune simple console pour le contrle du framework. Nous prsentons ici deux des solutions open source, les plus populaires, choisies en raison de ___________________________________________________________________________ Laurent GAYET -18CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

leur simplicit de mise en uvre, de leur utilisation libre et de la facilit trouver des informations sur celles-ci. 12.Oscar et Flix Oscar est une implmentation dont lavantage est de pouvoir oprer sur des quipements dont les ressources mmoires sont limites [Oscar]. En effet, il peut tre install sur de petits appareils qui ne disposent que dun faible footprint (i.e. les ressources mmoire). Celui-ci possde une console pour linstallation et le contrle des bundles. Malheureusement, le framework fourni ne respecte que les recommandations de la release 3 de OSGi. L application ne bnficie plus dvolutions, lquipe en charge du projet ayant dcid de se joindre au dveloppement dune autre plateforme appele Flix. Celle-ci doit respecter les spcifications de la release 4, mais ce jour il nexiste pas encore de version officielle et distribuable de Flix. Les sources sont distribues sous licence apache et il faut les compiler pour utiliser la plate-forme. 13.Knopflerfish Knopflerfish est une implmentation OSGi open source qui, par dfaut, utilise une interface graphique complte avec toutes les fonctionnalits requises pour permettre une gestion efficace des bundles [KFish] (cf. figure 7). Elle implmente partiellement dans sa version 2, les recommandations de la release 4 de la spcification OSGi. A ce jour, Knopflerfish est la plus aboutie des plates-formes open source OSGi. De plus, le site met disposition des dveloppeurs Eclipse un plugin aidant la cration et au dploiement de projets du type bundle OSGi. Ce plugin apporte, entre autres, une interface dtaille et agrable utiliser pour ldition du fichier manifest des bundles. Le choix dune plate-forme pour le dveloppement de lapplication trait dans la partie suivante sest donc port tout naturellement sur cette solution. La figure ci-dessous montre une capture dcran de lapplication Knopflerfish. On peut apercevoir nettement les trois vues offertes par son interface avec une liste des bundles prsents sur la plate-forme, des onglets qui prsentent chacun des proprits des bundles. Et enfin, une console standard et commune toutes les implmentations pour un contrle plus approfondi des bundles.

___________________________________________________________________________ Laurent GAYET -19CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Figure 7 : Interface graphique de la plate-forme OSGi Knopflerfish 2.

13.1.Un exemple pratique : un convertisseur montaire


L exemple pratique qui suit, consiste mettre en place un service de conversion de devise montaire qui, partir dun montant donn en Euro, retourne le montant quivalent en Dollars. Le service ne prend en compte que la conversion dEuro en Dollars. Le but de lexercice est de disposer de plusieurs implmentations du service disponibles sur la plate-forme, chacune avec un taux de change et une date diffrents. Les consommateurs du service devront choisir, parmi les implmentations proposes, celle qui rpond le mieux leurs attentes. Nous verrons quil existe deux approches diffrentes pour effectuer la recherche du service dsir selon les proprits recherches par le consommateur. 14.Les composants dvelopps Il faut tout dabord crer linterface du service, ConvertService qui est place dans le package fr.org.imag.Convert. En voici la spcification ci-dessous : ___________________________________________________________________________ Laurent GAYET -20CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

public interface ConvertService { public double ConvertEuroDollar (double euroMount); public Date GetDate (); public double GetRate(); }

Les implmentations de ce service doivent donc proposer un corps chacune des mthodes prsentes dans linterface. La spcification du service est comprise dans le bundle ConvertPackages qui exportera le package fr.org.imag.Convert. Il est ensuite cr trois fournisseurs de ce service bass sur linterface ConvertService qui importent chacun le package fr.org.imag.Convert et proposent leur service des taux de change et dates diffrents. Les bundles fournisseurs de ces services, implmentent la classe BundleActivator par un objet Activator. Cet objet est charg dinstancier le service propos et de lenregistrer dans le RegistryServices du contexte du framework. Le service est enregistr avec un tableau de proprits contenant un champ date. Il existe deux consommateurs diffrents, lun utilise le service ConvertService le plus rcent prsent sur la plate-forme, c'est--dire celui avec la date la plus grande, lautre utilise le service ConvertService dune date donne. Chacun des deux bundles consommateur, importe le package fr.org.imag.Convert ncessaire la connaissance du nom du service et des mthodes proposes par ce service. Pour faciliter la gestion de la dynamicit des services, les consommateurs bnficient des avantages offerts par lapport dune classe utilitaire BindindController. Celle-ci est fournie et dveloppe par lquipe Adele du laboratoire LSR-IMAG. Cette classe permet une gestion dynamique des services utiliss par la mise en place dun listener qui ragit aux vnements gnrs par le framework. L utilitaire permet ainsi de garder une collection de services jour, grant larrive, la mise jour ou le retrait de services. Le diagramme ci-dessous dcrit les composants dvelopps pour cet exercice (cf. figure 7). La description du diagramme est donne dans le point suivant.

___________________________________________________________________________ Laurent GAYET -21CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Figure 8 : Composants du convertisseur sur une plate-forme OSGi.

15.La recherche du service adquat Les deux clients ont donc deux faons diffrentes deffectuer leur recherche dans le Service Registry pour trouver le service adquat. Le premier dentre eux, ConvertRequester_latest, utilise le service ConvertService le plus rcent, prsent sur la plate-forme. Il va donc dans un premier temps lancer une recherche avec la chaine de caractres respectant la syntaxe LDAP suivante :
//filtre pour la recherche de tous les services ConvertService filterStr="(&(objectClass=fr.org.imag.Convert.ConvertService)(date=*))";

Cette chaine de caractres contient comme premier attribut le type de classe correspondant au service recherch, suivent des attributs optionnels comme ici la date avec une valeur * qui signifie que toutes les valeurs sont acceptes. Ainsi, la recherche retourne tous les services disponibles des dates diffrentes dans une collection. Nous allons ensuite effectuer un tri dordre croissant sur les dates effectives de chacun des services de la collection. Afin que le dernier lment de la collection reprsente le service avec la date la plus rcente, celui-ci est alors utilis par le consommateur.

___________________________________________________________________________ Laurent GAYET -22CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

On saperoit ici des limites de la recherche propose par le framework OSGI. En effet, il est impossible avec une requte LDAP de spcifier au framework de rechercher le service avec la date la plus rcente. Do la ncessit dimplmenter du code supplmentaire dans le composant consommateur afin de garantir que le service utilis est bien celui avec la date la plus grande. Le second des clients ConvertRequester_02_11_06 souhaite lui aussi utiliser le service ConvertService mais enregistr avec une date qui a pour valeur 02/11/2006 . La recherche pour ce service est plus conventionnelle puisquil suffit de spcifier dans la requte LDAP la date voulue. La chaine de caractres employe comme filtre pour cette requte est la suivante :
//filtre pour la recherche de service ConvertService tablie la date du 02/11/06 SimpleDateFormat sdf = new SimpleDateFormat ("dd/MM/yyyy"); Date date = sdf.parse ("02/11/2006"); filterStr="(&(objectClass=fr.org.imag.Convert.ConvertService)(date="+ date.toString () +"))";

Le code prcdent montre lutilisation de la classe Date pour convertir une date en une chane de caractres compatible avec la machine virtuelle Java. Nous venons de dcrire la mise en uvre dOSGI par la prsentation de ses composants, les implmentations existantes libres sur le march et enfin un exemple dutilisation simple. Nous avons aussi pu constater les premires limitations notamment lors dune recherche de services limite certaines conditions. En effet, la requte LDAP ne peut contenir une condition qui porterait au pralable sur une analyse de tous les services prsents sur la plate-forme. Dans le chapitre suivant, nous prsentons les limites actuelles de la technologie OSGi.

___________________________________________________________________________ Laurent GAYET -23CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

3.Les limites actuelles


Adopter la plate-forme OSGi prsente de nombreux avantages, notamment en termes de modularit pour la conception dapplications. Mais ces particularits trs intressantes apportes par le modle cachent des inconvnients qui doivent tre pris en compte lors de la conception dune application sur OSGi.

15.1.Les dfauts
L un des premiers dfauts majeurs de OSGi rside dans la complexit de dveloppement dune application sur cette plate-forme. En effet, une importante partie du travail doit tre consacre la cration de code non fonctionnel qui servira la gestion du dynamisme des services (par la mise en place de listeners par exemple). Les contrats mis en place entre un composant fournisseur de service et un composant consommateur constituent une tche fastidieuse raliser [Ketfi] [Chomat]. Il faut prendre en compte la disponibilit ou non des services requis et ceux qui seront les plus adapts pour rpondre aux besoins du consommateur. Tout ceci reprsente une charge supplmentaire de travail pour le dveloppeur, ce qui peut tre potentiellement source de nombreuses erreurs, par le mlange de code fonctionnel et de code non fonctionnel. Ensuite, une autre difficult prouve lutilisation de la plate-forme OSGi est le fait que le modle de programmation est dit architecture plate . Il est trs difficile de se reprsenter une application vu le nombre important de composants qui peuvent la composer [Ketfi]. Certains composants exportent leurs packages, dautres fournissent des services et dautres encore les utilisent. Les dpendances entre les divers composants peuvent rapidement devenir un prilleux obstacle lorsque lon souhaite dployer une application qui est rpartie dans une multitude de bundles diffrents. Avant la sortie de la release 4 de OSGi [OSGi], la plate-forme pouvait souffrir de dploiement malencontreux qui aurait permis linstallation de virus sur la plate-forme. Mais cette lacune a t comble par lajout dune proprit importante au framework : la gestion de bundles signs. Cette fonctionnalit permet dviter linstallation de bundles qui pourraient nuire au bon fonctionnement du systme, par la gestion de cls au niveau de la plate-forme. Un bundle sign doit contenir une cl compatible avec une autre cl que dtient la plate-forme. Ce risque reste encore dactualit car toutes les plates-formes nont pas encore totalement intgres les recommandations donnes par la release 4 de OSGi.

___________________________________________________________________________ Laurent GAYET -24CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

De plus, la totalit des plates-formes OSGi du march semble souffrir dun manque de fonctionnalits. Des fonctionnalits qui sont pourtant implmentes dans dautres modles composants. En effet, OSGi ne peut tre considr comme un modle composants complet car plusieurs concepts trs utiles ne sont pas prsents, tel que le concept de type de composant [Ketfi]. Ce concept permet davoir une vision globale et une description de larchitecture dune application constitue de plusieurs composants. Ce qui est trs utile au moment du dploiement dune application et permet ainsi dviter une installation incomplte due des dpendances entre composants non rsolues. Enfin, la mise en place dun systme centralis qui rassemble toutes les donnes des appareils disponibles sur un rseau local, prsente des avantages comme des inconvnients. Une dfaillance au niveau de la plateforme centralise serait lorigine de la panne de toutes les entits de ce systme.

15.2.Des solutions
Des solutions sont apportes par llaboration de nouvelles releases pour la spcification OSGi. La release 4 a notamment permis de lancer une implmentation OSGi sur de petits matriels comme les tlphones mobiles. Elle a aussi apport un nouveau service : le Service Component Runtime [Donsez] qui permet la gestion dynamique des liaisons entre un consommateur et ses services. La classe utilitaire BindingController utilise par le convertisseur montaire comblait ce manque. Les services fournis par la plate-forme apportent une aide au dveloppement mais peuvent aussi accrotre les difficults la programmation du fait du nombre de paramtres prendre en compte. Les directions futures vers lesquelles lorganisation tend faire voluer sa spcification sont principalement proposes par le groupe dexperts qui soccupe des applications dentreprise. Les volutions doivent se traduire par lapparition de nouveaux services et lextension des fonctionnalits du framework sans pour autant ncessiter une augmentation du footprint utilis par la plate-forme. La liste suivante prsente les principaux points qui devront tre discuts et mis en uvre par les futures versions : Remote Management : amlioration du contrle distance du framework, adoption dun protocole de management standardis. Deployment : le dploiement actuel est bas sur des bundles. Le travail doit porter sur un nouveau format qui permet le dploiement dun ensemble de bundles. Power Management : adoption dune interface standardise pour permettre un management optimis de la puissance. ___________________________________________________________________________ Laurent GAYET -25CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Web Services : OSGi doit devenir une plate-forme efficace pour la mise en place de Web Services. Connectivity : amlioration de la connectivit avec les matriels mobiles (iPod, tlphone portable, PDA, etc.) et les ordinateurs embarqus en voiture ou la maison.

Enfin, il existe aussi des applications adaptables sur la plate-forme OSGi qui lui apportent les fonctionnalits manquantes. Il existe ainsi une application appele Beanome dveloppe au laboratoire LSR-IMAG, qui permet la gestion du concept de type de composant. Cette application se prsente comme un bundle OSGi qui opre au dessus du framework OSGi et recr sa propre plate-forme. Le concept apporte une vision globale dune application OSGi par la description de son architecture et des instances de composants qui la composent. Une amlioration du dploiement et une meilleure administration en cours dexcution de lapplication sont ainsi offertes.

___________________________________________________________________________ Laurent GAYET -26CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Conclusion
La technologie OSGi est une spcification ouverte et standardise, tablie par une alliance de grands industriels et de laboratoires. Elle dfinit une plate-forme pour la conception dapplications architecture oriente services, base sur Java. Elle est utilise principalement dans le domaine des logiciels embarqus, mais aussi dans des applications comme Eclipse. Elle constitue un bon point de dpart pour la conception dapplications flexibles et facilement grables grce laspect modulaire quelle permet de mettre en oeuvre. Elle permet aussi de contrler distance la gestion des bundles, les composants de la plate-forme en matrisant leur cycle de vie et leur dploiement. Le march dispose dimplmentations dOSGi libres ou commerciales, plus ou moins abouties. Nanmoins, les applications dveloppes sur cette technologie libre peuvent tre propritaires. Le langage Java apporte cette architecture, lindpendance vis--vis du systme dexploitation et de la machine. De plus, les bundles dvelopps sont censs pouvoir fonctionner sur nimporte quelle plate-forme OSGi. Cependant, le dveloppement de composants pour OSGi est une tche complexe et la prise en compte de la dynamicit des services est la charge du dveloppeur. La part de travail alloue au code non fonctionnel nest pas ngligeable, dautant plus quil est mlang au code fonctionnel. Mais lvolution de la spcification nest pas fige, et il existe de nombreux outils qui permettent de faciliter le dveloppement pour OSGi ou encore le dploiement des applications rparties sur plusieurs bundles. La technologie OSGi qui est apparu il y a maintenant sept ans, volue rapidement et reste lcoute des attentes du march. Elle suscite un rel engouement dans de nombreux secteurs et on peut dire que son avenir sannonce prometteur.

___________________________________________________________________________ Laurent GAYET -27CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Annexes
Annexe 1 : le code source de ConvertPackage La classe interface du service ConvertService
package fr.org.imag.Convert; import java.util.Date; public interface ConvertService { public double ConvertEuroDollar(double euroMount); public Date GetDate(); public double GetRate(); }

Annexe 2 : le code source de ConvertService La classe Activator


package fr.org.imag.Convert.Impl; import java.util.Dictionary; /** * The activator. */ public class Activator implements BundleActivator { private ServiceRegistration m_reg; public void start(BundleContext context) throws BundleException , ParseException { //Initialisation de la date SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date date = sdf.parse("03/11/2006"); // initialize service properties Dictionary props = new Hashtable(); props.put("description","a simple example of OSGi service"); props.put("date",date.toString()); // register a service implementation m_reg=context.registerService(fr.org.imag.Convert.ConvertService.class.getName(), new ConvertServiceImpl(date), props); } public void stop(BundleContext context) throws BundleException { // unregister the service if (m_reg != null) m_reg.unregister(); }

La classe dimplmentation du service ConvertService


package fr.org.imag.Convert.Impl; import java.util.Date;

___________________________________________________________________________ Laurent GAYET -28CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

import fr.org.imag.Convert.ConvertService; public class ConvertServiceImpl implements ConvertService{ private Date m_date; private double m_rate = 0.78; public ConvertServiceImpl() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); m_date = sdf.parse("01/11/2006"); } public ConvertServiceImpl(Date date){ m_date = date; } public Date GetDate() { return m_date; } public void SetDate(Date date){ this.m_date = date; } public double GetRate() { return m_rate; } public void SetRate(double rate){ this.m_rate = rate; } public double ConvertEuroDollar(double euroMount) { return (euroMount/m_rate); }

Annexe 3 : Le code source de ConvertRequester La classe Activator


package fr.org.imag.Convert.ConvertRequester; import org.osgi.framework.BundleActivator; import fr.org.imag.Convert.ConvertService; import fr.imag.adele.bundle.util.BindingController; public class Activator implements BundleActivator, Runnable{ //--Attributs final static int DELAY=5000; // temps d'attente avant la rutilisation des services Map m_convertServices; //Ensemble des services utiliss BundleContext m_context; //Context du framework double m_mountEuro = 3.0; //Montant en Euro convertir boolean m_bEnd; //Boolen poursuite du processus //----------------------Fin Attributs //--Methodes public void start(BundleContext context) throws BundleException, ParseException { this.m_context=context; m_convertServices=new Hashtable(); String filterStr; //filtre pour la recherche de tous les services ConvertService //filterStr="(&(objectClass=fr.org.imag.Convert.ConvertService)(date=*))";

___________________________________________________________________________ Laurent GAYET -29CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

//filtre pour la recherche de service ConvertService tablie la date du 02/11/06 SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date date = sdf.parse("02/11/2006"); filterStr="(&(objectClass=fr.org.imag.Convert.ConvertService)(date="+ date.toString()+"))"; //Cration du BindingController BindingController ctlr; try { ctlr=new BindingController(context,filterStr,m_convertServices); ctlr.fillServices(); } catch (InvalidSyntaxException e){ throw new BundleException("Invalid LDAP filter", e); } //Ajout du listerner au context du framework context.addServiceListener(ctlr); //On lance le processus en boucle m_bEnd = false; new Thread(this).start(); } //----------------------------------------------------------public void stop(BundleContext context) throws BundleException{ //On arrete la boucle du processus m_bEnd = true; } //----------------------------------------------------------public synchronized void run() { if(!m_convertServices.isEmpty()){ //Cration d'un array pour stockertous les services de la map ArrayList listServices = new ArrayList(); Iterator iter=m_convertServices.values().iterator(); while(iter.hasNext()){ ConvertService ref=(ConvertService) (iter.next()); listServices.add(ref); } //Tri de la liste par rapport la date (tri bulle) int n=listServices.size(); boolean permut; do{ //hypothse : le tableau est tri permut=false; for(int j=0;j<n-1;j++){ ConvertService ref1=(ConvertService) listServices.get(j); ConvertService ref2=(ConvertService) listServices.get(j+1); //Teste si 2 lments succssifs sont dans le bon ordre ou non if(ref1.GetDate().after(ref2.GetDate())){ //s'ils ne le sont pas on change leurs positions listServices.set(j, ref2); listServices.set(j+1, ref1); permut=true; } }

} while(permut); //--Tri fini

} //-------------------------------------------------------------

//Interrogation du dernier service de la collection UseService((ConvertService)listServices.get(n-1)); Thread.sleep(DELAY); } else{ System.out.println("Auncun service disponible"); Thread.sleep(DELAY); }

___________________________________________________________________________ Laurent GAYET -30CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

void UseService(ConvertService service){ String str; str = '(' + service.GetDate().toString() + ") :"; str = str + m_mountEuro + " Euro => " + service.ConvertEuroDollar(m_mountEuro) + " Dollars"; System.out.println(str); }

___________________________________________________________________________ Laurent GAYET -31CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Glossaire
API (Application Programming Interface): interface de programmation permettant daccder aux fonctionnalits dune application par le biais des mthodes quelle expose. Buffer overflow : dpassement ou dbordement de tampon, bogue pouvant tre exploit pour violer la politique de scurit dun systme. Classe : structure regroupant des donnes et des procdures oprant sur ces donnes. Domotique : domaine recouvrant toutes les applications qui permette de rendre une maison intelligente , en assurant une communication entre les appareils. Footprint : mmoire, espace disque requis par une application. Interface : ensemble des oprations applicables un objet et connues du monde extrieur. Interoprabilit : fait que plusieurs systmes, qu'ils soient identiques ou radicalement diffrents, puissent communiquer sans ambigut et travailler ensemble. Java : technologie compose dun langage de programmation orient objet et dun environnement dexcution. JVM (Java Virtual Machine) : surcouche logicielle au systme dexploitation spcifique chaque processeur pour interprter le code Java. LDAP (Lightweight Directory Access Protocol) : protocole permettant laccs au service dun annuaire. Modularit : dcomposition dune application en composants unitaires et suffisamment indpendants les uns des autres. Multitche : se dit dun programme qui excute certaines parties de son code en parallle. Objet : entit, instance dune classe. Open Source : se dit dun programme dont le code source est diffus librement sans aucunes licences.

___________________________________________________________________________ Laurent GAYET -32CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Passerelle : ordinateur situ entre deux rseaux diffrents et les mettant en relation. PDA (Personnal Digital Assistant): appareil numrique portable. Pilote : programme informatique destin permettre un autre programme (souvent un systme d'exploitation) d'interagir avec un priphrique. Plate-forme : systme informatique caractris par un ou plusieurs de ses composants matriels ou logiciels. Programmation oriente objet : concept de programmation qui consiste combiner au sein dune mme structure de donnes, appele classe, les oprations et donnes. Programmation oriente composant : consiste utiliser une approche modulaire au niveau de l'architecture d'un projet informatique. Servlets : application Java s'excutant sur un serveur d'application dans le but premier de fournir du contenu Web. Singleton : modle de conception (design pattern) dont le but est de restreindre l'instanciation d'une classe un seul objet. Smart Phone : tlphone portable qui intgre des fonctions avances telles que navigation web, etc. UML (Unified Modelling Language) : formalisme standard de modlisation objet conu par l'OMG (Object Management Group). Virus : programme informatique parasite capable d'altrer, parfois de faon irrversible, le fonctionnement d'autres programmes. Web Services : mise disposition d'applications prtes l'emploi via le Web, sans contrainte de plate-forme de dveloppement.

___________________________________________________________________________ Laurent GAYET -33CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

Bibliographie
[Chomat] Stphane Chomat. OSGi et programmation aspects : vers une construction de composants par composition [en ligne]. Disponible sur : http://www-adele.imag.fr/~donsez/cours (consult le 25/10/2006). [Donsez] Didier Donsez. La plate-forme dynamique de service OSGi [en ligne]. Disponible sur : http://www-adele.imag.fr/~donsez/cours (consult le 25/10/2006). [Eclip] aqute.biz. Site dinformations sur la plate-forme plugins dEclipse : Equinox [en ligne]. Disponible sur : http://aqute.biz [Frenot] Stphane Frenot. OSGi Introduction [en ligne]. Disponible sur : http://ares.insa-lyon.fr/~frenot (consult le 25/10/2006). [Ketfi] Abdelmadjid Ketfi, Humberto Cervantes, Richard Hall, Didier Donsez. Composants adaptable au dessus dOSGi [en ligne]. Disponible sur : http://wwwadele.imag.fr/beanome/papers/KeftiCervantesHallDonsezCR.pdf (consult le 25/10/2006). [KFish] knopflerfish.org. Site sur Knopflerfish : implmentation OSGi open source [en ligne]. Disponible sur : http://knopflerfish.org (consult le 28/10/2006). [Menga] David Menga, Michel DHooge. OSGi et UPnP : des technologies complmentaires [en ligne]. Disponible sur : http://wwwadele.imag.fr/osgi/doc/GuideUPnP-OSGI_FR.pdf (consult le 25/10/2006). [Oscar] oscar.objectweb.org. Site sur Oscar : implmentation OSGi open source [en ligne]. Disponible sur : http://oscar.objectweb.org (consult le 28/10/2006). [OSGi] www.osgi.org. Site officiel de lorganisation et de la spcification OSGi [en ligne]. Disponible sur : http://www.osgi.org (consult le 20/10/2006). [OSGi a] www.igm.univ-mlv.fr. Site dinformation sur la technologie OSGi [en ligne]. Disponible sur : http://www-igm.univmlv.fr/~dr/XPOSE2005/OSGI/specification.html (consult le 25/10/2006).

___________________________________________________________________________ Laurent GAYET -34CNAM Grenoble 2006

Mmoire Probatoire technologie OSGi

Principes, mise en uvre et limites actuelles de la

[OSGi b] en.wikipedia.org. Dfinition de la spcification OSGi [en ligne]. Disponible sur : http://en.wikipedia.org/wiki/osgi (consult le 25/10/2006). [Prog] Franois Tonic. Juin 2006. SOA : votre nouvel architecture . Programmez (Paris) n 87, p. 42-48. [SOA] fr.wikipedia.org. Dfinition de larchitecture oriente services [en ligne]. Disponible sur : http://fr.wikipedia.org/wiki/SOA (consult le 26/10/2006).

___________________________________________________________________________ Laurent GAYET -35CNAM Grenoble 2006

___________________________________________________________________________

C.N.A.M : EXAMEN PROBATOIRE en INFORMATIQUE

Principes, mise en uvre et limites actuelles de la technologie OSGi


Laurent GAYET Rsum La technologie OSGi est une plate-forme SOA utilise dans le domaine des logiciels embarqus. OSGi est une spcification ouverte base sur Java et destine hberger des services tout en grant leur cycle de vie. Elle constitue un bon point de dpart pour dvelopper des applications flexibles et facilement grables. OSGi met en uvre des composants appels bundles qui regroupent des classes implmentant les services. La plate-forme OSGi permet un contrle distance et un dploiement ais des composants. Un des avantages de OSGi est de permettre une application de grer la dynamicit des services qui la composent. Cependant la programmation dune application sur cette plate-forme est trs complexe. En effet, une grande part de travail est ncessaire pour crire le code non fonctionnel qui se trouve, de plus, mlang au code fonctionnel. La technologie souffre dun manque de fonctionnalits prsentes dans dautres technologies SOA. Nanmoins, des applications construites sur OSGi permettent de combler ces dfauts. Grenoble, le 14/12/2006 ___________________________________________________________________________

Mots-cls : services, architecture, plate-forme, composant, modularit, framework, dynamicit, contrle distance. ___________________________________________________________________________ Summary

The OSGi technology is a SOA platform used in the embedded software domain. OSGi is an open specification based on Java which allows services to be deployed and managed. It is a good starting point to develop flexible applications that are easily manageable. OSGi use components called bundles that regroup implemented services classes. The OSGi platform allows remote control to manage and to deploy bundles. An advantage of OSGi is that it allows components to manage the dynamicity of the about used services. However, the programming task on this framework remains difficult. Indeed, a big part of work is spent to write no functional code mixed with functional code. The

___________________________________________________________________________

___________________________________________________________________________ technology has a lack about functionalities that exist in other technologies. Nevertheless, there are some applications built on OSGi which fulfil this lack.

Keywords: services, architecture, platform, component, framework, dynamicity, remote control.

___________________________________________________________________________