Synthése

Transcription

Synthése
Poussé par le succès énorme et grandissant des services payants dans la téléphonie mobile,
l’idée de proposer des services à forte valeur ajoutée à la demande sur les équipements
communicants comme les plateformes télématiques dans l’automobile ou les points d’accès à
la maison trouve plusieurs demandeurs.
Afin de maîtriser la complexité logicielle de telles plateformes, l’industrie a favorisé la
définition d’un environnement standard d’exécution, appelé OSGI (Open Services Gateway
Initiative).
Modèles à base de composants :
Les modèles à base de composants assurent un développement modulaire et une maintenance
plus aisée des applications. Parmi les principaux modèles, on peut citer JavaBeans, EJB,
CCM, .NET de Microsoft.
Un composant est un module logiciel décrit par des contrats (définis par des interfaces et des
événements) proposés, requis, des propriétés configurables et par des contraintes techniques.
Par le biais de l’assemblage de composants configurés on obtient des applications.
L’exécution de l’application est démarrée lorsque ses composants sont déployés sur la plateforme à composants (qui peut être distribuée sur plusieurs hôtes). Chaque composant est pris
en charge par un conteneur dont le rôle consiste à isoler le composant de l’environnement et
de prendre en charge les contraintes techniques liées aux aspects non fonctionnels
(distribution, persistance, fiabilité, sécurité, …).
Traditionnellement, le cycle de vie de l’application suit les phases strictement successives de
développement, assemblage, configuration, déploiement et exécution.
La maintenance de l’application comporte généralement des opérations de reconfiguration et
d’adaptation de composants, elle est due généralement à un dysfonctionnement du composant,
ou pour doter le composant de nouvelles fonctionnalités. L’adaptation revient à déconnecter le
composant de l’application, à transférer son état courant vers un nouveau composant et à
connecter ce dernier à l’application. Cependant elle doit aussi répondre à plusieurs contraintes
comme la sécurité, la complétude et la possibilité de retour en arrière au cas où l'adaptation ne
peut se terminer avec succès.
Traditionnellement, l’opération d’adaptation requiert généralement l’arrêt de l’application et
oblige à reprendre le cycle de vie à partir de la phase d’assemblage.
L’adaptation dynamique consiste à introduire des modifications dans l’application au cours de
son exécution contrairement à l’approche traditionnelle qui nécessite l’arrêt total de
l’application.
Définition de la plateforme OSGI :
Open Services Gateway Initiative (OSGI) est une spécification ouverte qui définit un
environnement standardisé orienté composants pour les périphériques réseau, elle a pour but
de définir et de promouvoir des spécifications ouvertes pour la livraison de services
administrables dans des réseaux résidentiels, véhiculaires, le domaine de la santé et autres
types d'environnements. Les API de serveurs embarqués destinés à héberger des services qui
peuvent être installés, activés, mis à jour, désactivés et désinstallés sans interruption de
service du serveur embarqué.
OSGI définit principalement le conditionnement (bundle) des services, leur hébergement, la
gestion de leurs cycles de vie, les mécanismes de résolution des dépendances de code, le
courtage des services actifs et l’activation de nouveaux services.
2.1 Vue d’ensemble de la plate-forme
La plate-forme de service OSGI comprend:
1. Le framework OSGI qui définit un environnement hôte pour administrer les
Bundles (archive JAVA)
2. Des services standards (http, Jini, device, …)
La plate-forme de services OSGI se divise en deux parties : le framework OSGI d’une part et
les services standards OSGI d’autre part. Dans cet exposé, nous nous intéresserons plus au
framework qu’aux services standard, tels que le service HTTP. Dans le contexte de cet
exposé, les services OSGI sont simplement des définitions d'interfaces Java avec une
sémantique précise et tout objet qui implémente une interface de service est supposé obéir à
son contrat.
Le framework OSGI définit un environnement hôte pour administrer des bundles ainsi que les
services qu'ils fournissent. Un bundle est une unité physique de livraison ainsi qu'un concept
logique employé par le framework pour organiser son état interne. Concrètement, un bundle
est une archive Java qui contient un manifeste et un ensemble de classes, des bibliothèques de
code natif et d’autres ressources associées. Un bundle installé est identifiable de manière
unique et il est important de noter qu'il n'est pas possible d'installer deux bundles à partir du
même emplacement.
Les mécanismes d'administration fournis par le framework permettent l'installation,
l’activation, la désactivation, la mise à jour et le retrait d'un bundle. Un bundle installé dans le
framework peut avoir l’un des états suivants : installé, résolu, actif, en démarrage, arrêté ou
désinstallé. L'état des bundles actifs est persistant tout au long des activations du framework,
autrement dit, les bundles actifs préservent leur état après le redémarrage du framework.
Les métas donnés d’un bundle sont décrits dans un fichier associé au JAR du bundle appelé
manifeste. Le manifeste contient un ensemble de paires attribut valeur.
Certains attributs sont standardisés par la spécification OSGI. Ils décrivent le chemin des
classes (classpath) du bundle, les packages Java exportés ou importés par le bundle, les
besoins par rapport aux bibliothèques de code natif et l'information intelligible par l’
administrateur du framework (e.g. nom du bundle, description).
Le manifeste peut également contenir un attribut qui spécifie une classe d'activation du bundle
appelée « activateur » (Activator). L'activateur joue un rôle important car il permet au bundle
d’obtenir un contexte pour accéder aux fonctionnalités du framework. Le contexte permet aux
bundles de rechercher des services dans le registre de services du framework, d’enregistrer
leurs propres services, d’accéder à d'autres bundles et d’installer des bundles additionnels. La
classe activateur enregistre chaque service avec au minimum le nom de l’interface qu’il
implémente, et éventuellement des propriétés supplémentaires (version,…). La recherche de
services se fait au moyen d’une requête LDAP simple qui peut limiter la recherche à
l’ensemble des services qui ont des propriétés spécifiques (e.g. version>2.0). Une requête peut
retourner zéro ou plusieurs références de services.
Le bundle ne requiert pas obligatoirement une classe activatrice. Il peut être simplement une
bibliothèque de packages Java qui ne nécessitent pas l’accès au framework.
Vous trouverez toutes les informations nécessaires contenant les bundles et le manifeste en
annexe.
Fonctionnalités clé de la plateforme OSGI :
• Gestion des composants logiciels : Gestion du cycle de vie des composants et
application grâces au notions de bundles (archives java "JAR"), installation,
démarrage/ arrêt, mise à jour et désinstallation d’un bundle
•
Administration à distance : la plateforme OSGI permet d’administrer les composants
et ce par n’importe quel protocole ce qui montre son extrême flexibilité
•
Environnement d’exécution sécurisé : Exécuter du code dans un périphérique réseau
ne peut se faire que si celui-ci est proprement protégé, toutefois les spécifications
OSGI offrent un modèle de sécurité étendu et global qui fonctionne sous différents
niveaux :
¾ Niveau 1 : Le premier niveau de sécurité est la machine virtuelle qui pose
plusieurs restrictions sur le code Java. Les manipulations dangereuses sur les
pointeurs, ou les accès non examinés aux tableaux sont enlevées du
vocabulaire du programmeur. Cela rend impossible les attaques du type
"Buffer Overruns" (Mémoire tampon dépassée) qui sont utilisé par plusieurs
virus comme Melissa, ou MSblaster.
¾ Niveau 2 : Les fonctionnalités du code Java en ce qui concerne l’accès aux
classes et aux méthodes, puisque le code Java permet des déclarations de type
Public, Private, Protected… Ces mécanismes de contrôle d’accès permettent à
plusieurs applications de tourner et coopérer au sein de la même machine
virtuelle tout en protégeant le code qui doit être "Privé".
¾ Niveau 3 (optionnel) : La capacité de limité les capacités de chaque Bundle à
accéder aux ressources en ne lui attribuant que les permissions qui lui sont
nécessaires.
¾ Niveau 4 : Le dernier niveau de défense est la framework (cadre) OSGI qui
sépare les Bundles entre eux, puisque les Bundles ont besoin de permissions
même pour détecter d’autres bundles dans la plateforme OSGI.
•
Coopération entre les applications : Plusieurs serveurs d’application Java sont
disponibles tel que : MIDP, J2EE, JMX, Avalon, … tout ces modèles fournissent pour
chaque application un container isolé ou s’exécuter, ce qui n’est pas le cas de la
plateforme OSGI qui permet aux Bundles de partager du code ou des services avec
son environnement. Partager le code est important puisqu’il permet aux librairies avec
des fonctionnalités partagées d’être téléchargées ce qui rend les applications plus
petites en terme de taille, à l’instar du modèle classique à base de containers dans
lequel chaque application a son propre code même s’il est déjà présent dans le réseau.
•
Commercialisation : L’avantage d’un environnement standardisé est que différentes
parties peuvent y contribuer à moindre coût. Les compagnies membres d’OSGI
comme IBM, Gatespace Telematics, Atinav… ont déjà fournis plusieurs blocks
élémentaires que toute la communauté utilise.
Le marché du logiciel OSGI (COTS : Commercial Off The Shelf) est petit
aujourd’hui mais ne cesse de grandir, ce qui attraira plusieurs développeurs à l’avenir.
•
Déploiement simple : Installer une application dans un environnement est souvent un
problème sous estimé. Les application Java sont plus difficiles à installer car le
langage tente de s’extraire de l’environnement le plus possible ce qui induit à savoir
quelle machine virtuelle est utilisée, comment configurer correctement l’application
pour qu’elle fonctionne sur tel ou tel environnement, comment assurer le démarrage,
l’arrêt de le contrôle de celle-ci.
Les technologies apportées par L’OSGI alliance simplifient considérablement le
processus de déploiement, quand une plateforme OSGI est installée dans un
environnement, déployer des applications est simple grâce a plateforme standardisée
qu’apporte OSGI et qui inhibe les différences entre les environnements sous jacents.
• Interopérabilité entre les industriels : L’OSGI alliance fournit des efforts
considérables en créant des spécifications qui permettent l’interopérabilité entre
différentes implémentations des spécifications OSGI.
La prochaine génération de téléphones portables contiendra un cadre de travail OSGI,
des librairies et applications développées pour un téléphone Nokia peuvent fonctionner
sans aucune modification dans des téléphones Motorola.
•
Nature dynamique : Installer un nouveau Bundle, enregistrer un nouveau service ou
mettre à jour un composant ne nécessitent pas un redémarrage de la machine virtuelle.
Les composants concernés sont informés du nouvel état et s’adaptent
automatiquement.
Par exemple quand un Bundle avec un sevlet est mis à jour, le servlet est
automatiquement désenregsitré et la nouvelle version est immédiatement disponible
via le serveur Web.
•
Politique libre : La plateforme OSGI fournit plusieurs mécanismes mais ne dicte pas
comment utiliser ces mécanismes, ce qui permet à l’opérateur d’établir sa propre
politique en utilisant les mécanismes fournis par OSGI. La plateforme OSGI peut être
utilisé dans un environnement administré a 100% comme les téléphones mobiles, ou
tourner sur des ordinateurs de bureau sans aucune supervision.
•
Certification : L’OSGI alliance à crée un programme de certification qui assure la
conformité avec le standard. Les implémentation certifiée ne peuvent se faire que par
des membres de l’OSGI, ils peuvent facturer des frais pour cette implémentation afin
d’amortir leurs investissements.
La certification permet aux développeurs d’aller au dessus d’un industriel qui tarde
dans son processus de développement, elle permet la conformité qui sert à
promouvoir la compétitivité et baisser les prix tout en augmentant la qualité des
services.
2.2 Architecture d’OSGI
La pile OSGI peut être définie par un nombre de couches qu’on peut considérer comme suit :
La plateforme de services OSGI fournit un
environnement pour les applications appelées Bundles
qui s’exécutent ensemble dans la même machine
virtuelle JAVA
La section suivante décris les couches nécessaires pour le fonctionnement de OSGI.
1. JVM
Les spécifications OSGI sont basées sur la machine virtuelle Java, cela est été logique puisque
l’environnement Java pourvoit tout les fonctionnalités requises pour un environnement
sécurisé, ouvert, fiable, développable, riche et portatif.
Aujourd’hui le seul candidat probable de la JVM est Microsoft.NET, mais Java a encore
l’avantage puisque .NET n’est disponible que d’une seule source.
2. OSGI Framework
Exécuter plusieurs applications dans la même machine virtuelle crée plusieurs résultats qui
peuvent être partagés et doivent être adressés. L’OSGI Framework est le composant
responsable de l’adressage de ces résultats, il a plusieurs responsabilités qu’on verra dans les
sections suivantes de cet exposé.
3. Class Loading
L e contenu d’un Bundle est une archiver JAR qui contient des classes, celles-ci sont les
éléments exécutables du Bundle. Le problème qui se pose est : comment traiter ces Classes
par rapport à celles des autres bundles, doivent elles être privées ou partagées avec les autres
Bundles ?
Restreindre l’accès aux classes en local (Bundle Private) est la solution la plus facile, ceci est
utilisé dans des applications de type J2EE et MIDP (Mobile Information Device Profile).
Cependant partager les Classes permet aux Bundles d’obtenir des classes et librairies d’autres
Bundles, c’est un avantage de taille puisqu’il permet de minimiser la mémoire occupée par
ces applications ce qui les rends plus flexibles.
Chaque Bundle importe ou exporte des classes. Exporter des classes signifie que ce Bundle
rend disponible plusieurs packages pour les autres. Importer signifie que le Bundle a besoin
de packages (à exporter) d’autres Bundles.
Si plusieurs Bundles exportent le même package, la framework en élira un qui sera utilisé par
tout les packages qui importent ou exportent ce package.
Les packages sont exportés et importés avec un numéro de version, dans les spécification
OSGI plateforme Release 3 (en téléchargement) il y a une règle qui dit que les packages avec
une version égale ou supérieure sont compatibles avec les versions précédentes, ce qui atténue
le problème de la gestion de versions.
Si un Bundle qui exporte un package est par la suite désinstallé, alors le framework OSGI
s’assure que les importateurs redémarrent pour qu’ils puissent être reliés à un autre
exportateur. Ce processus est transparent pour les Bundles car il s’exécute quand ils sont
arrêtés.
4. Gestion du cycle de vie
Installer un nouveau Bundle dans la JVM fournit les bases des services réseau, l’accès aux
fonctions d’installation d’un Bundle se fait via une API qui est disponible pour tout les
bundles. Cela peut sembler aléatoire et singulier puisque ça implique que seul un Bundle peut
installer un autre Bundle. Cela introduit le problème de l’auto référencement, celui-ci est
résolu grâce l’installation initiale et par l’utilisation de lignes de commande à l’implantation
de la framework OSGI.
L’API de la framework OSGI est définie dans l’objet "BundleContext" qui contient plusieurs
méthodes pour installer des nouveaux Bundles ou pour lister ceux qui existent, il est fournit
au Bundle à son démarrage.
La méthode "InstallBundle" prend un URL ou un InputStream comme paramètre, la
framework examine les données et installe le Bundle, après l’installation le Bundle doit être
d’abord résolu pour qu’il puisse être démarré.
Un bundle peut avoir plusieurs pré requis (ex : s’il a besoin d’importer des packages), le
framework analyse ses dépendances et les relie avec les dépendants avant que le Bundle ne
soit démarré, la résolution d’un Bundle peut donc mener à la résolution d’autres bundles.
La main est donnée au nouveau Bundle par l’instanciation d’une classe qui implémente
l’interface "BundleActivator" qui contient les méthodes start(BundleContext) et
stop(BundleContext). Le nom de la classe instanciée est fournit par l’entête du manifeste
Bundle-Activator.
Durant le cycle de vie d’un Bundle, plusieurs événements peuvent avoir lieu dans la JVM tel
que la désinstallation d’un Bundle qui exporte des classes à celui-ci, cela n’affecte pas le
Bundle importateur directement puisque les packages exportés par le Bundle désinstallé
demeurent disponibles tant que des Bundles en dépendent.
La figure suivante nous montre les différents états du cycle de vie d’un Bundle.
5. Registre des services
Les Bundles actifs peuvent utiliser tout les mécanisme Java standard pour implémenter leurs
fonctionnalités comme n’importe quel environnement Java, cependant l’avantage qu’a OSGI
est sa nature dynamique (ex un Bundle peut soudainement devenir actif est fournir ainsi de
nouvelles fonctionnalités ou coopérer avec d’autres Bundles).
Une autre différence de taille entre OSGI et les environnements Java standard, est que OSGI
n’a pas besoin de structure ou d’environnement statique pour construire de nouvelles
applications, mais il est aussi possible d’enlever des parties du système sans que cela ne
dérange l’environnement en général.
Cette dynamique nécessite que tout les registres d’écoute doivent attentifs aux changements
d’états des Bundles, par exemple si un Bundle est arrêté il doit être enlevé de tout les registres
qui l’écoutaient, et vice versa.
Le registre de services OSGI a été construit pour pallier à tous ces problèmes en facilitant leur
gestion puisqu’il lie dynamiquement les différents Bundles au moment ou il vérifie leur état et
leurs dépendances.
Grâce au registre de services les Bundles peuvent :
• Enregistrer des objets avec le registre des services,
• Consulter le registre de services pour des objets qu’il recherche,
• Recevoir des notifications quand un service devient enregistré ou supprimé.
Un service est un objet enregistré dans le registre des services, les services sont enregistrés
avec un nom d’interface (usage attendu du service) et plusieurs propriétés (description du
service aux autres). Par exemple le service de journal "LogService" va être enregistré avec
l’interface org.osgi.service.log.logservice
fournisseur=IBM.
et
peut
avoir
des
propriétés
de
type
La découverte de nouveaux services ou la suppression d’anciens services par les autres
Bundles est fait par des notifications ou en activant une recherche de services avec des
propriétés spécifiques.
Le registre de services permet aux développeurs de programmer des petites applications
généralement couplée à d’autres pour construire de grands système, tout en s’adaptant à son
environnement dynamique en temps réel.
6. Sécurité
Un des buts principaux de la plateforme OSGI est d’exécuter des applications issues de
différentes sources sous le contrôle du système d’administration, la plateforme utilise les
mécanismes suivants :
• Sécurité du code Java2 : Permissions qui protégent les ressources, comme les
permissions sur les classes…
• Minimiser l’exposition du contenu des Bundles : un Bundle possède plusieurs
permissions qui peuvent être changée à la volée, elles sont attribuée de manière
efficace, par exemple si A appelle B et B accède à une ressource protégée, A et B ont
besoin d’avoir accès à cette ressource. C’est une stratégie qui permet d’éviter les
désordres.
• Communications contrôlées entre les Bundles : par les Services Permissions qui
permettent au Bundle d’avoir ou d’enregistrer un service à partir du registre de
services.
2.3 La plateforme OSGI dans les réseaux domestiques :
OSGI est une plateforme de choix pour développer des réseaux domestiques,puisque grâce à
la dynamique et aux différentes fonctionnalités d’OSGI on peut facilement gérer et
administrer un réseau domestique qu’il soit informatique (Wifi) ou électrique (contrôle du
réfrigérateur, air conditionné…) ou les deux à la fois. Comme nous le savons OSGI peut
opérer avec plusieurs standards, la figure suivante nous montre un exemple de standards avec
lesquelles OSGI peut opérer :
Broadband
Network
Câble
Service
delivery
Local
Network
DSL
Powerline
Wireless
OSGi
802.11
HomeRF
JINI
Home Plug
Bluetooth
CEBus
UPnP
HAVi
Les réseaux domestiques intelligents (Smart@Home: développée par BSH Bosh and Siemens
Hausgerate) suivent un système simple de "Plug&Use" brancher/utiliser dans lequel
l’utilisateur final peut gérer et administrer tout ces produits et services via un simple
téléphone mobile, PDA ou un ordinateur de bureau.
Pour expliquer le principe de fonctionnement de ce type de réseau, il y a une démo disponible
sur le Web http:// demo.echelon.com, ou en consultant le document osgi.pdf disponible en
téléchargement sur ce site.
Dans ce document la figure suivante suffira pour introduire les concepts de base qui régissent
le fonctionnement de ce type d’implémentation de la plateforme OSGI.
Les différents services en interaction avec la passerelle résidentielle sont dans cet exemple des
services de sécurité et gardiennage (Security firm), des services hospitalier et des services
électriques. Ils sont tous déployés dans passerelle résidentielle qui peut être soit gérée par un
administrateur en local ou par l’utilisateur final à distance.
La passerelle résidentielle est à son tour déployée dans la plateforme OSGI qui gère le réseau
domestique.
L’opérateur historique français France Telecom en association avec Thomson Multimédia
dans le cadre d’un partenariat de recherche et développement, ont développés une plateforme
domestique de service à large distance, cette passerelle résidentielle fournit un accès au
réseaux locaux de la maison en incluant un module d’administration à distance de tout les
périphériques connectés. Plusieurs middlewares ont été ajoutés pour permettre le plug&play à
la volée des périphériques, dans le réseau sans fil 802.11 Corba, Jini, et UPnP on été utilisés,
tandis que pour le réseau à haute fréquence IEEE 1394 (ILink, Firewire) plusieurs
périphériques audiovisuels communiquent à travers le middleware HAVI (Home Audio Video
Interoperability), un premier prototype de démonstration à été présenté dans le salon
NET@HOME en novembre 2001.
2.4 Services standard d’OSGI
Dans cette section nous verrons une brève description de l’OSGI Release 3 services, pour plus
d’information reportez vous au fichier r3.book.pdf disponible en téléchargement.
A) Framework Services :
Ces services sont optionnels et dirigent les opérations du framework
• Permission Admin : Manipuler les permissions des Bundles présents ou futurs,
• Package Admin : Recalculer les dépendances entre les Bundles pour rafraîchir les
Bundles partagés par exemple,
• Start Level : Un ensemble de Bundles qui doivent s’initialiser et s’exécuter avant les
autres.
• URL Handlers : Permet aux Bundles de contribuer avec des nouveaux schémas ou
Handlers à la class URL.
B) Services Système :
Fournissent des fonctions horizontales qui sont primordiales pour quelques systèmes, j’en
citerais quelques exemples
• Log Service : Journaliser les traces ou se mettre à l’écoute de traces,
• Configuration Admin : Fournit un modèle dynamique pour configurer et avoir des
informations de configuration,
• Device Access : Mécanisme qui permet de correspondre automatiquement un driver
avec un nouveau périphérique, et de télécharger le Bundle qui implémente ce driver,
• User Admin : Utilise une Base de données avec les informations sur les utilisateurs
pour l’authentification et tout ce qui concerne les autorisations,
• IO Conector : Permet aux Bundles de fournir des protocoles alternatifs pour le J2ME
javax.microedition.io package,
• Preferences Service : Fournit un accès à une base de données hiérarchique de
propriétés comme le système de registres de Windows.
C) Services de Protocole :
L’alliance OSGI a décris quelque services qui décrivent des protocoles externes au sein de la
plateforme OSGI.
• http Service : Exécute les Servlets que peuvent fournir les Bundles,
• UPnP : Universal Plug and Play est un nouveau standard en électronique.
D’autres types de services sont aussi disponibles dans la plateforme comme le "XML Parser"
qui permet à un Bundle de localiser un parseur avec les propriétés et la compatibilité avec
JAXP, ainsi qu’un service "Wire Admin" qui sert à expliciter les relations entre les Bundles et
la manière avec laquelle ils trouvent de nouveaux services, le tout dans un fichier de
configuration.
2.5 Limitations dans OSGI
Dans OSGI, les bundles sont utilisés pour conditionner et livrer les services avec leurs
implémentations et leurs ressources. Les services sont les unités principales de construction
d'applications dans le framework OSGI, et la plupart des services OSGI sont construits en
séparant l'interface de son implémentation. Ceci a comme résultat que les applications OSGI
sont construites exclusivement à partir de ces interfaces et qu’elles n'ont aucune connaissance
de leurs implémentations. De plus, les applications sont construites de façon dynamique, au
moment où de nouveaux services apparaissent ou disparaissent.
Bien que OSGI introduise un modèle différent de programmation, c’est à dire au moyen de
services, ceci peut se révéler complexe pour plusieurs raisons :
™ Il n’ y a pas de moyens pour décrire une architecture comme un ensemble d’instances
de composants connectées les unes aux autres.
™ Les services sont essentiellement différents des instances de composants communes
aux modèles ‘classiques’ dans le sens qu’ils s’agissent d’objets partagés qui, de
préférence ne possèdent pas d’état (du fait que le changement de cet état par un des
clients affecte tous les autres clients).
™ Les dépendances entre services ne sont pas gérées par le framework OSGI.
Il est possible qu’un service nécessite un autre pour fonctionner, et de plus cette dépendance
peut être statique (au démarrage du service) ou dynamique (le service a déjà été enregistré).
Ceci doit être programmé dans l’activateur du bundle, ce qui peut être une tâche complexe à
réaliser et difficile à changer.
Bien que OSGI fournisse des mécanismes très efficaces pour gérer le déploiement des unités
de livraison de services, il ne peut être considéré comme un modèle à composants ‘complet’
car plusieurs concepts communs aux modèles à composants ne sont pas présents dans celui-ci.
Nous pouvons citer en particulier le concept de type de composant, à partir duquel des
instances sont créées. Mais heureusement que plusieurs composants peuvent se greffer au
dessus de la plateforme OSGI et qui enrichissent celui-ci avec les concepts qui lui manquent
tel que le modèle Beanome.
Et j’espère que cet exposé serait le point de départ pour un autre sujet qui pourrait être les
composants au dessus de la plateforme OSGI.
Conclusion :
OSGI est un bon point de départ pour construire et déployer des applications dynamiques.
Cependant, OSGI possède plusieurs inconvénients. De manière générale, la programmation de
l'enregistrement des services et de la prise en compte de leur retrait restent des tâches
fastidieuses pour le développeur.
De plus, il n'est pas possible d'exprimer la structure d'une application en exprimant les
dépendances statiques ou dynamiques entre les services qui composent celle-ci.
Un autre inconvénient majeur d'OSGI concerne le démarrage des bundles. D'un part, un
bundle installé ne peut démarrer et activer ses services que si les packages qu'il requiert sont
déjà installés.
C’est pour cela que plusieurs composants ont été proposés pour fonctionner au dessus de
OSGI tel que beanome ou ServiceBinder qui permettent de pallier à ces problèmes et qui
seront sans aucun doute nos prochains sujets d’étude.
. OSGI constitue un bon point de départ pour développer des applications flexibles et
facilement gérables.
. Cependant, OSGI ne décrit pas l’architecture des applications ce qui rend difficile la vision
globale d’applications constituées de plusieurs composants.
Partenaires le l’OSGI Alliance :
Alpine Electronics Europe Gmbh
AMI-C
Aplix Corporation
Atinav Inc. *
Belgacom
BMW Group
Cablevision Systems
Deutsche Telekom
Echelon Corporation
Electricité de France (EDF)
Esmertec
Espial Group, Inc. *
ETRI Electronics and
Telecommunications Research Institute
France Telecom
Fraunhofer Institute for Integrated
Circuits IIS *
Gatespace Telematics AB *
Gemplus
IBM Corporation
Insignia Solutions *
Institute for Infocomm Research *
KDDI R&D Laboratories, Inc.
Mitsubishi Electric Corporation
Motorola, Inc.
NEC Corporation
Nokia Corporation
NTT
Oracle Corporation
Panasonic Technologies, Inc.
Philips Consumer Electronics
ProSyst Software AG
Robert Bosch Gmbh
Samsung Electronics Co., Ltd.
SavaJe Technologies, Inc. *
Sharp Corporation
Siemens AG
Sun Microsystems, Inc.
Telcordia Technologies, Inc.
Telefonica I+D
TeliaSonera
Texas Instruments, Inc.
Toshiba Corporation

Documents pareils