You are previewing OSGi.
O'Reilly logo
OSGi

Book Description

OSGi spécifie un ensemble de services afin de concevoir des applications modulaires tant dans le domaine de l'embarqué que dans celui des applications d'entreprise classiques et serveurs.

Modularité et services : une autre façon de développer en Java

Le développeur Java qui souhaite s'affranchir des limitations des ClassLoader en environnement J2EE, prévenir les phases d'intégration longues et risquées, et satisfaire les contraintes de disponibilité de son application, trouvera des réponses à ses préoccupations dans la façon dont OSGi spécifie des services modulaires. L'architecture OSGi s'est déjà imposée dans de nombreux projets, tels que l'environnement de développement Eclipse Equinox, les serveurs d'applications GlassFish 3, JOnAS 5 ou JBoss 5...

Sans entrer dans des détails d'implémentation spécifique, ce livre éclaire les principes de modularité et d'orientation par services qui sont au coeur d'OSGi. Il guide ainsi le développeur Java vers une méthodologie de conception et une façon nouvelle de penser ses développements. L'auteur préconise des bonnes pratiques en matière d'architecture mais aussi de tests et d'intégration continue, tout en donnant des conseils sur l'outillage à adopter, pour envisager sereinement les contraintes du travail en équipe et bénéficier d'avantages tels que la mise à jour à chaud des modules d'une application.


Au sommaire

  • OSGi pour une conception modulaire
  • Exemples d'applications modulaires basées sur OSGi
  • Mettre en place son premier bundle OSGi
  • Travailler avec OSGi : environnement et outils
  • Le moteur d'injection de dépendances : la spécification Déclarative Services
  • Services OSGi pour le développeur : LogService, EventAdmin, HttpService et ConfigAdmin
  • Modularité et tests unitaires
  • Design Pattern OSGi et bonnes pratiques
  • Application exemple
  • Annexe - Mettre en place un bundle OSGi avec PDE

Table of Contents

  1. Couverture
  2. Page de titre
  3. Copyright
  4. Du même auteur
  5. Préface
  6. Table des matières
  7. Avant-propos
  8. Chapitre 1 OSGi pour une conception modulaire
    1. OSGi, pour quelles applications ?
      1. Cas d’une automobile
      2. Cas d’un environnement de développement (IDE)
      3. Cas d’un serveur d’applications
    2. Problèmes liés au paquetage des applications J2EE
    3. Regrouper des bibliothèques au sein d’un conteneur OSGi
    4. Vers les architectures orientées services
    5. Dépasser les limitations dues aux ClassLoader Java
    6. Tour d’horizon de la norme OSGi et de ses services
      1. Couplage et injection de dépendances ?
      2. Les bundles OSGi
      3. Les spécifications OSGi en détail
      4. Implémentations OSGi
  9. Chapitre 2 Exemples d’applications modulaires basées sur OSGi
    1. OSGi comme socle architectural de serveur : JOnAS 5
      1. Le shell OSGi sous JOnAS
      2. Un bref survol du code source de JOnAS
    2. OSGi pour les applications embarquées : serve@home
      1. Le projet domotique serve@home de Siemens
      2. OSGi dans les automobiles
  10. Chapitre 3 Mettre en place son premier bundle OSGi
    1. Installation de bndtools
    2. Création du projet et développement du bundle
      1. Création du projet
      2. Méta-informations nécessaires
    3. Bundles et bibliothèques Java utilisés
      1. OSGi et chargement de classes
      2. Encapsulation de la bibliothèque Commons Lang
    4. Services OSGi par défaut
      1. Publier son premier service OSGi
      2. Gestion du dynamisme avec le tracking de services
      3. S’appuyer sur les services standards de la plate-forme
  11. Chapitre 4 Travailler avec OSGi : environnement et outils
    1. Conteneurs OSGi
      1. Apache Felix
      2. Le projet Knopflerfish
      3. La console OSGi d’Eclipse : Equinox
      4. Choisir sa console
    2. Nécessité d’un référentiel de bundles : OBR
      1. OSGi et bundles : limitations
      2. Vers un entrepôt commun de bundles avec OBR
      3. Premier contact avec OBR
      4. Architecture et dynamique d’appels avec OBR
    3. Les plug-ins de développement Eclipse pour OSGi
      1. Simplifier la création de bundles avec bnd
      2. Travailler avec bnd
      3. Utiliser bndtools
      4. iPOJO : une autre approche du développement OSGi
      5. PDE : l’environnement standard de développement de plug-in d’Eclipse
  12. Chapitre 5 Le moteur d’injection de dépendances : la spécification Declarative Services
    1. Introduction à la déclaration de services dans OSGi
      1. Le SCR (Service Component Runtime)
    2. Fonctionnalités proposées par le SCR
      1. Activation immédiate ou retardée ?
    3. Principes pour la mise en œuvre de SCR
    4. Exemple complet
      1. Descriptif du produit
      2. Entités en présence
      3. Application en utilisation
      4. L’exemple vu du côté technique
        1. Conception
        2. Code source et descripteurs de déploiement
      5. Précisions sur le Declarative Services
  13. Chapitre 6 Services OSGi pour le développeur : LogService, EventAdmin, HttpService et ConfigAdmin
    1. Gestion des traces avec le LogService
    2. Communication par messages avec l’EventAdmin
      1. Présentation
      2. Fonctionnalités et limitations
      3. Principales entités mises en jeu
      4. Exemple de mise en œuvre
    3. Exposer ses ressources sur le Web avec l’HttpService
    4. Service de configuration : le ConfigAdmin
      1. Présentation
    5. Conclusion
  14. Chapitre 7 Modularité et tests unitaires
    1. Retour sur la notion de modularité
    2. Du point de vue du chef de projet
    3. Du point de vue du programmeur
    4. Du point de vue de l’architecte
    5. Modularité et tests en environnement OSGi
      1. Les commandes du shell
      2. Tests en environnement OSGi
        1. Principe du test unitaire en environnement OSGi
        2. Création de l’environnement d’exécution des tests unitaires
      3. Mise en pratique : création d’un test case pour un service OSGi simple
      4. Considérations avancées
    6. Gestion des versions de composants en environnement OSGi
      1. Qu’est-ce qu’une version d’un composant et d’une application ?
      2. La vision offerte par OSGi en matière de gestion de versions
      3. Adopter une numérotation cohérente et en tirer parti
      4. Gestion de la politique de numérotation des versions en pratique
    7. Ce qu’il faut retenir
  15. Chapitre 8 Design patterns OSGi et bonnes pratiques
    1. Gabarits de conception
      1. Séparation entre API et implémentations
      2. Le design pattern Factory
      3. Le design pattern du tableau blanc ou Whiteboard
        1. Comment fonctionne le WhiteBoard ?
      4. Invocation dynamique de code dans le contexte OSGi
        1. Exemple de situation : sérialisation/désérialisation de données avec Castor XML
        2. Mise en place pratique
    2. Conseils et pièges à éviter
      1. Shells OSGi et niveaux de démarrage
      2. Gestion de la problématique des versions
      3. Injection de dépendances
      4. Maîtrise de la méta-information
  16. Chapitre 9 Application exemple
    1. L’application exemple
      1. Vue d’ensemble de l’architecture
      2. Notes relatives à la conception de l’application
        1. Création des PDF
        2. Planification de tâches en Java
      3. Quelques images du produit
      4. Notes relatives à l’implémentation
        1. Encapsulation d’une bibliothèque Java standard
        2. Commandes du shell
        3. Utilisation de Cron4J
        4. Finalisation du projet
    2. Le code source
      1. Planification de tâches
      2. Encapsulation de SQLite
      3. Le DAO SQLite
      4. Descripteur de l’application
    3. Ce qu’il faut en retenir
  17. Annexe Mettre en place un bundle OSGi avec PDE
  18. Index