201003 OSGi

1 407 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 407
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
51
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×