Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

201003 OSGi

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

201003 OSGi

  1. 1. Lyon Java User Group OSGi Arnaud Cogoluègnes 16/03/2010Zenika © 2010 1
  2. 2. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  3. 3. Speaker • Arnaud Cogoluègnes • Consultant chez Zenika • Co-auteur : Spring par la pratique Spring Dynamic Modules in Action 2nde édition Manning Editions http://manning.com/cogoluegnes A paraître mi 2010 acogoluegnesZenika © 2010
  4. 4. Objectifs de la présentation • Démystifier OSGi • Quoi, quand, où, comment • Car OSGi • Est de plus en plus présent •cf. serveurs dapplications, ESB • Est perçu comme complexe • Est une nébuleuse pour le néophyte « Pourquoi je dois redémarrer Eclipse après linstallation dun plugin, OSGi cest dynamique nan ? » Un JUG leader anonymeZenika © 2010 4
  5. 5. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  6. 6. Modularité / problématique (1) • Décomposer un système en module • Bénéfices lors de limplémentation • Bénéfices lors du déploiementZenika © 2010 6
  7. 7. Modularité / problématique (2) • Système embarqué • Fortement modulaire • ex. : besoin dun nouveau composant •Le rechercher •Compatible avec le système ? (dépendances, version) •Linstaller à chaud • Pas dintervention humaineZenika © 2010 7
  8. 8. Modularité / problématique (3) • Application dentreprise • Mise à jour des composants techniques, voire applicatifs • Découpage modulaire pour les applications denvergureZenika © 2010 8
  9. 9. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  10. 10. Modularité / limitations de Java (1) • Java • est un langage objet généraliste • na pas été orienté « modularité » dans sa conception • Problème de visibilité, nuit à lencapsulation • Modificateurs (private, public...) pour la POO, pas pour découpage logique dun système • Idem pour packageZenika © 2010 10
  11. 11. Modularité / limitations de Java (2) • Unité de déploiement simpliste : le JAR • Regroupement de fichier .class • Un JAR nest pas un module • Il nest pas actifZenika © 2010 11
  12. 12. Modularité / limitations de Java (3) • Class path par défaut a des limitations • Impossibilité de faire cohabiter plusieurs versions dune même classe • « Fusion » des JAR à lexécution •Alors que ce sont des unités de déploiement • Coté dynamique • Difficulté pour recharger des classes à chaud •Rien par défaut • Déploiement à chaud limité, parfois hasardeuxZenika © 2010 12
  13. 13. Modularité / efforts • Regain dintérêt pour la modularité • Différents efforts • JSRs (277, 291, 294) • HK2 (abstraction de OSGi) • Impala • OSGiZenika © 2010 13
  14. 14. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  15. 15. OSGi / présentation (modularité) • OSGi est un système modulaire • Diviser un système en un ensemble de modules • Règles de visibilité strictes • Résolution des dépendances dun module • Gestion des versionsZenika © 2010 15
  16. 16. OSGi / présentation (cycle de vie) • OSGi est dynamique • Les modules peuvent être... • Installés • Démarrés • Stoppés • Désinstallés • Mis à jour... • … tout cela, à lexécutionZenika © 2010 16
  17. 17. OSGi / présentation (service) • OSGi est orienté service • Les modules peuvent • Publier des services • Consommer des services • Les services peuvent apparaître/disparaître dynamiquement • Selon létat des modules • Orchestration par le registre de servicesZenika © 2010 17
  18. 18. OSGi / une application modularisée module service impl consomme le DAO Service Registry publie un DAO module DAO impl module domaine export package module import package DAO APIZenika © 2010 18
  19. 19. OSGi / présentation • Le framework OSGi • 2 aspects • Le conteneur OSGi • Les couches du modèle OSGi Application Services Securité Cycle de vie Module OSGi Plateforme Java Machine virtuelle Java Système d’exploitationZenika © 2010 19
  20. 20. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  21. 21. OSGi / conteneur Application Services Securité • Le conteneur est lenvironnement dexécution Cycle de vie Module • Exécuté par la JVM Machine virtuelle Java Système d’exploitation • On parle aussi de plateforme OSGi • Le conteneur OSGi gère • Linstallation des modules • Leur cycle de vie • Les dépendances entre modules •ex. : chargement des classes • Implémentations Open Source • Eclipe Equinox • Apache Felix • KnopflerfishZenika © 2010 21
  22. 22. OSGi / démo Application Services Securité • Démarrer Eclipse Equinox Cycle de vie Module • Programme Java Machine virtuelle Java Système d’exploitation • Utilisation de Pax Runner • Téléchargement des dépendances • Changement de conteneurs • Ajout de bibliothèquesZenika © 2010 22
  23. 23. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  24. 24. OSGi / couche module Application Services Securité • Gère tous les aspects dun module Cycle de vie Module • Packaging Machine virtuelle Java Système d’exploitation • JAR avec entrées supplémentaires MANIFEST.MF • Identification • Nom, version... • Ce quun module • Apporte en termes de packages Java • Voit en termes de packages Java • Gère le chargement des classes pour chaque module • « wiring »Zenika © 2010 24
  25. 25. OSGi / couche module module module DAO API domaineZenika © 2010 25
  26. 26. OSGi / déploiement Web « classique » Serveur dapplications Application Web Application Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/lib Hibernate Hibernate 3.2.6 3.2.6Zenika © 2010 26
  27. 27. OSGi / librairies dans le serveurs dapp. Serveur dapplications Application Web Application Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/lib Hibernate 3.2.6Zenika © 2010 27
  28. 28. OSGi / différentes versions embarquées Serveur dapplications Application Web Application Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/lib Hibernate Hibernate 3.2.6 3.3.0Zenika © 2010 28
  29. 29. OSGi / versions incompatibles Serveur dapplications Application Web Application Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/libDépend de Hibernate 3.2.6 Dépend de Hibernate 3.3.0 Hibernate 3.2.6Zenika © 2010 29
  30. 30. OSGi / tentative de résolution Serveur dapplications Application Web Application Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/lib Hibernate 3.3.0 Hibernate 3.2.6Zenika © 2010 30
  31. 31. OSGi / Dépendances avec OSGi Conteneur OSGi Bundle Web Bundle Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/lib Hibernate 3.2.6Zenika © 2010 31
  32. 32. OSGi / Cohabitation de plusieurs versions (1) Conteneur OSGi Bundle Web Bundle Web WEB-INF/classes WEB-INF/classes Classes Java Classes Java WEB-INF/lib WEB-INF/lib Hibernate Hibernate 3.2.6 3.3.0Zenika © 2010 32
  33. 33. OSGi / Cohabitation de plusieurs versions (2) B D 1.0.0 2.0.0 A 1.0.0 C D 1.2.0 3.0.0Zenika © 2010 33
  34. 34. OSGi / démo Application Services Securité • Installation de deux modules dans Equinox Cycle de vie Module O • Utilisation de Eclipse PDE Machine virtuelle Java P Système d’exploitation • Analyse des packages exportés/importésZenika © 2010 34
  35. 35. OSGi / couche cycle de vie Application Services Securité • Un bundle passe dans différents états Cycle de vie Module O • Le conteneur agit en conséquence Machine virtuelle Java P Système d’exploitation • Satisfaction des dépendances • « connection » avec les classes dautres bundles • Expose les classes exportés • Lance des opérations •Événements, callbackZenika © 2010 35
  36. 36. OSGi / couche cycle de vie Application Services Securité • Différents états dun bundle Cycle de vie Module Machine virtuelle Java Système d’exploitation installation En cours de Installé démarrage démarrage rafraichissement résolution mis à jour déinstallation Résolu Actif arrêt désinstallation Désintallé En cours d’arrêtZenika © 2010 36
  37. 37. OSGi / démo Application Services Securité • Ecriture dun BundleActivator Cycle de vie Module • Démarrage/arrêt du bundle Machine virtuelle Java Système d’exploitation • Rechargement à chaudZenika © 2010 37
  38. 38. OSGi / couche service Application Services Securité Cycle de vie Module Machine virtuelle Java consomme B Système d’exploitation Service Registry publie Dynamique ! A peut être mis à jour sans redémarrer B Sélection/recherche des services très fine A MAIS... Introduit des dépendances entre modules - que fait B si A na pas encore publié le service ? - que fait B si A disparaît ?Zenika © 2010 38
  39. 39. OSGi / couche service x x consomme B x Service Registry publie A x x x x xZenika © 2010 39
  40. 40. OSGi / dm KernelZenika © 2010 40
  41. 41. OSGi / dm ServerZenika © 2010 41
  42. 42. OSGi / dm ServerZenika © 2010 42
  43. 43. OSGi / GlassfishZenika © 2010 43
  44. 44. OSGi / GlassfishZenika © 2010 44
  45. 45. OSGi / couche service • API pour intéraction avec lenvironnement OSGi • publication/consommation service, suivi des événements • Peu envisageable • pour un système denvergure • au jour le jour pour un développeur dapplications • Frameworks avec approche déclarative • Gestion de la publication/consommation des services • Gestion de laspect dynamique • Frameworks • Declarative Services (standard OSGi) • Blueprint Service (standard OSGi) • iPOJO • Spring Dynamic Modules • Peaberry (Google Guice) • Facilite une approche POJOZenika © 2010 45
  46. 46. OSGi / services déclaratifs avec Spring DM Bean Spring « classique » • Dans le module « accès aux données » <bean id="clinic" class="org.springframework.petclinic.repository.jdbc.SimpleJdbcClinic" /> <osgi:service id="osgiClinic" ref="clinic" interface="org.springframework.petclinic.repository.Clinic" /> Export du bean en tant Consommation du Bean que service OSGi en tant que service OSGi • Dans le module « service » <osgi:reference id="clinic" interface="org.springframework.petclinic.repository.Clinic"/> Devient un Bean Spring dans le module (injection de dépendances, etc.)Zenika © 2010 46
  47. 47. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  48. 48. Développement avec OSGi • OSGi propose un modèle de programmation puissant • Mais plus complexe • Exemple avec laspect dynamique : • On ne peut se contenter den « profiter » • Il faut le gérer (des services peuvent disparaître à tout moment) « Pourquoi je dois redémarrer Eclipse après linstallation dun plugin, OSGi cest dynamique nan ? » Un JUG leader anonymeZenika © 2010 48
  49. 49. Développement avec OSGi • Bouleversement des habitudes de développement ? • Pas vraiment, une grande partie peut être conservée... • Environnement de développement • Outil de build automatisé • Approche POJO • Tests dintégration • Intégration continueZenika © 2010 49
  50. 50. Développement au jour le jour • Modèle POJO possible • Utilisation dun framework déclaratif • Pas de dépendances vers lAPI OSGi • Environnement de développement adapté • Eclipse PDE, SpringSource Tool Suite, IntelliJ IDEA • Mais pas obligatoire • Une application OSGi peut être lancée de façon traditionnelleZenika © 2010 50
  51. 51. Test des applications • Tests unitaires sur des POJO • Pas de changement • Teste les fonctionnalités dun module • Tests dintégration dans un conteneur léger • Lancer au sein du conteneur • Frameworks basés sur JUnit : • Spring Dynamic Modules • Pax ExamZenika © 2010 51
  52. 52. Test dintégration avec Pax ExamZenika © 2010 52
  53. 53. Test dintégration avec Pax ExamZenika © 2010 53
  54. 54. Packaging • Packaging • JAR standard • Mais comment enrichir le MANIFEST.MF ? • Outils de packaging OSGi • Bnd • Bundlor • Utilisable • En ligne de commande • Dans Eclipse • Plugin Ant • Plugin MavenZenika © 2010 54
  55. 55. Intégration continue • Avec OSGi... • ...les tests automatisés utilisent des framework traditionnels • ...les outils de build populaires sont supportés • Lancement des tests • Packaging • Lintégration continue possible • Sans changer ses habitudesZenika © 2010 55
  56. 56. OSGi ? Attention ! • Savoir décomposer son système • Les équipes doivent être formées à la technologie • Utiliser des librairies compatibles OSGi • Certaines librairies distribués en tant que bundle OSGi • Dépôts (Maven, Ivy) OSGi • Les sujets délicats avec OSGi • Programmation Orientée Aspect • Mapping Objet/RelationnelZenika © 2010 56
  57. 57. Utiliser OSGi ? • OSGi est utilisé dans le middleware • Serveurs dapplications : Glassfish, JOnAS, Websphere... • ESB : ServiceMix, Mule, Project Fuji (Open ESB) • Pourquoi le middleware aime OSGi • Beaucoup de librairies à gérer • Extentisibilité • DynamiqueZenika © 2010 57
  58. 58. Utiliser OSGi ? • Encore peu utilisé dans les applications dentreprises • Bénéfique pour les « gros » systèmes • La modularité est toujours bonne • Renforcée par OSGi • Ne doit pas devenir un fardeau technologiqueZenika © 2010 58
  59. 59. OSGi dans lentreprise • Des efforts pour intégrer OSGi avec les technologies dentreprises • Un aspect entreprise dans la spécification OSGi • Blueprint (RFC 124) : standardisation de Spring en OSGi • Distributed OSGi (RFC 119) : services OSGi en services Web • Transaction (RFC 98) • Standardisation du support Web (RFC 66) • Spring Dynamic Modules propose un pont entre Spring et OSGi • Adresser des scénarios dapplications dentreprises avec OSGi • OSGi Enterprise Expert Group • Apache Aries • Eclipse Gemini (Oracle, SpringSource)Zenika © 2010 59
  60. 60. Agenda • Modularité • problématique • limitations de Java • OSGi • présentation • conteneur • couches OSGi • Développement OSGi • Questions/réponsesZenika © 2010
  61. 61. Closing time MERCI DE VOTRE ATTENTION ! :-)Zenika © 2010

×