Les réseaux domestiques: Plateforme OSGI Présenté par: Boubker KASMI SOMMAIRE Introduction Définition de la plateforme OSGI Vue d’ensemble de la plateforme Fonctionnalités de la plateforme Architecture d’OSGI La plateforme OSGI dans les réseaux domestiques SOMMAIRE Les services Standards d’OSGI Conclusion INTRODUCTION 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 (JavaBeans, EJB, .NET) Qu’est ce qu’un composant? Cycle de vie Adaptation traditionnelle Adaptation dynamique DEFINITION DE LA PLATEFORME OSGI Open Services Gateway Initiative (OSGI) Spécification ouverte Services hébergés dans des API de serveurs embarqués 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. Figures Vue d’ensemble de la plateforme OSGI La plate-forme de service OSGI comprend: Le framework OSGI qui définit un environnement hôte pour administrer les Bundles (archive JAVA) Des services standards (http, Jini, device, …) Bundle Bundle: archive Java qui contient un manifeste et un ensemble de classes Identifiable de manière unique Manifeste décrit les Meta données (attribut, valeur) Manifeste contient 1 attribut qui permet de spécifier une classe d’activation du Bundle « Activator » Structure d’un Bundle Exemple de fichier manifeste La classe Activator Classe publique: • Implémente les 2 méthodes start() et stop() de BundleActivator • qui reçoivent une référence sur un contexte. Start (BundleContext ctxt): • recherche et obtient des services requis auprès du contexte et/ou positionne des listeners sur des événements • enregistre les services fournis auprès du contexte Stop (BundleContext ctxt): • désenregistre les services fournis • relâche les services requis BundleContext Interface vers le framework Permet : L’ enregistrement de services Le courtage de services L’ obtention et la libération des services La souscription aux évènements du Framework. L’ accès aux ressources du bundle L’accès au propriétés du Framework L’installation de nouveaux Bundles L’accès à la liste des Bundles Fonctionnalités de la plateforme Gestion des composants logiciels (cycle de vie) Administration à distance: Environnement d’exécution sécurisé: Niveau 1: JVM (plus de pointeurs, accès non contrôlés aux tableaux) Niveau 2: Code Java 2 Niveau 3: Permissions sur les Bundles Niveau 4: Séparation des Bundles entre eux par la Framework Coopération entre les applications: Partage de code Contributions des industriels Déploiement simple: plateforme standard (difficile en Java) Interopérabilité entre les fabricants Nature dynamique Politique libre: administré a 100% / sans supervision Certification Architecture OSGI La pile OSGI peut être définie par une architecture en couche comme suit: 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. 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 cette présentation. Class Loading Le contenu d’un Bundle est une archive JAR qui contient des classes Bundle Private: J2EE, MIDP Partager les classes Exporte:rend disponible plusieurs packages pour les autres Importe:a besoin de packages d’autres bundles Chaque Bundle à un numéro (Gestion des versions) Gestion de cycle de vie 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. Le bundle peut avoir plusieurs états durant son cycle de vie: Registre des services Nature dynamique d’OSGI Nécessité que les registres d’écoute « Listeners » soient attentifs aux changements Lie dynamiquement les Bundles Grâce aux registres de services les Bundles peuvent: Enregistrer les services Consulter le registre pour les objets recherchés Recevoir des notifications(changement d’état) Service: Objet enregistré dans le registre des services Avec un nom d’interface, propriétés. Service journal (LogService): Interface org.osgi.service.log.logservice Propriété fournisseur=IBM La plateforme OSGI dans les réseaux domestiques Gestion et administration aisée Connexion des appareils de la vie quotidienne entre eux et à Internet Opérationnel avec plusieurs standards et protocoles: Broadband Network Câble Service delivery Local Network DSL Powerline Wireless OSGi 802.11 HomeRF JINI Home Plug Bluetooth CEBus UPnP HAVi Smart@Home: BSH plug & Use Exemple France telecom & Thomson multimedia Accés aux réseaux de la maison Middlewares : plug & play a la volée IEEE 1394: HAVI Services standards d’OSGI Framework Services: Permission Admin: permission des Bundles Package Admin: Recalculer dépendances Start Level : Bundles initiaux System Serices: Log Service: Journaliser les traces Device Access: Correspondance materiel driver User Admin: BD d’informations sur les utilisateurs Preferences Service: BD hierrarchique de propriétés Services de protocoles: http Service: Exécute les Servlets que peuvent fournir les Bundles UPnP Service :Universal Plug and Play est un nouveau standard en électronique Autres services: XML Parser: Bundle localise un parseur Wire Admin: expliciter les relations entre Bundles CONCLUSION Bon point de départ pour construire et déployer des applications dynamiques programmation de l'enregistrement des services et de la prise en compte de leur retrait restent des tâches fastidieuses pour le développeur. Ne décrit pas l’architecture des applications Démarrage des bundles (packages nécessaires) Merci de votre attention A vos questions