14 octobre 2008                                                                                                           ...
14 octobre 2008                                                         OSGICyrille Le ClercNicolas Griso                 ...
La modularité  Caractéristiques d’un module ?   Expose un contrat versionné   Masque ses détails d’implémentation   Déc...
Pourquoi la modularité ?   Limites du monolithique     Windows Vista (50 M SLOC) est le dernier OS monolithique de Micros...
La modularité en JavaL’existant           Les jars           Les classloaders hiérarchiques           Maven 2Le futur     ...
La modularité en JavaL’existant : les jars   Module de base : le Jar         Concept de build sans réalité au runtime    ...
La modularité en JavaL’existant : les classloaders hiérarchiques    Les classloaders sont hiérarchiques et héritent de la...
La modularité en JavaL’existant : les classloaders hiérarchiques                                                          ...
La modularité en JavaL’existant : les classloaders hiérarchiques                                                          ...
La modularité en JavaL’existant : les classloaders hiérarchiques                                                          ...
La modularité en JavaL’existant : les classloaders hiérarchiques                                                          ...
La modularité en JavaL’existant : les classloaders hiérarchiques    JVM Classloader     Servlet Engine                    ...
La modularité en JavaL’existant : maven 2     Maven 2      Versionnage des jar      Description des dépendances       <p...
La modularité en JavaL’existant : maven 2           Les limitations                 Dépendances explicites seulement au b...
La modularité en JavaLe futur : JSR 291 : Dynamic Component Support for Java SE    OSGi rejoint le JCP    OSGi         ...
La modularité en JavaLe futur : JSR 277 – Java Module System    Associé à JSR 294 - super packages    Utilisation des an...
OSGi AllianceL’histoireLe fonctionnementOSGi Alliance et le JCP                          www.xebia.fr / blog.xebia.fr
OSGi AllianceL’histoire    Consortium créé en 1999    Objectifs initiaux : Java dans le monde embarqué (domotique,     a...
OSGi AllianceLe fonctionnement    Les experts group         Core platform EG         Vehicle EG         Mobile EG     ...
OSGi AllianceOSGi et le JCP    1999 : JSR 8 – OSGi specification => retirée en 1999    2006 : JSR 291- Dynamic Component...
OSGi AllianceOSGi et le JCP   Une communauté plus fermée que le JCP ?                                  OSGi Alliance      ...
La plateforme OSGI        Les bundles        Le réseau de classloader                               www.xebia.fr / blog.xe...
La plateformeLes bundles                                                     Les                                          ...
La plateformeLes bundles    Le versionning         major.minor.micro.qualifier           » 3.4.0.v20080603-2000        ...
La PlateformeLe réseau de ClassLoaders   gui-grand-public-1.9                               domaine-metier-1.3    web-serv...
La PlateformeLe réseau de Class Loaders                                     Classloader                           domaine-...
La plateformeLe conteneur    Environnement d’exécution des bundles    Standalone ou embarqué    Gère le cycle de vie de...
La plateformeLe cycle de vie des bundles                              www.xebia.fr / blog.xebia.fr   28
La plateformeLe Service Registry    Cœur du framework    Gère les services. Permet de         Publier des services     ...
Assemblage des services OSGIBundleActivator et ServiceTracker                                                            G...
Assemblage des services OSGIBundleActivator et ServiceTracker         Le manifest sert à déclarer le Bundle-Activator     ...
Assemblage des services OSGIBundleActivator et ServiceTracker                                   Gestion du cycle de vie du...
Assemblage des services OSGIBundleActivator et ServiceTracker                                                           In...
Assemblage des services OSGIBundleActivator et ServiceTracker   Enregistrement d’une servlet sur le HttpService           ...
Assemblage des services OSGIBundleActivator et ServiceTracker    Mécanisme de gestion des dépendances le plus stable et  ...
Assemblage des services OSGIDeclarative Service     Créé en 2005 (OSGI R4)     Mis à jour via la RFC 134                ...
Assemblage des services OSGIDeclarative Service     Semble peu utilisé     Techniquement limité        Ne gère pas les ...
Assemblage des services OSGISpring DM     En cours de standardisation pour OSGi R4.2        RFC 124                     ...
La plateformeLes services    Exemples         Log Service         Http Service         Configuration Admin Service    ...
La plateformeLes implémentations Open Source      Eclipse Equinox      Apache Felix      Knopflerfish (maintenu par Mak...
La plateformeLes chantiers en cours    Spécifiés dans le draft sur OSGi R4.2    Ajout de services « Java EE »         R...
Demo OSGiDescription      Un service dépend d’un backend      Un service expose une servlet      Les composants utilise...
Demo OSGiBundles & packages                                 backend-service-1.0                                   backend-...
Demo OSGiImport d’un service                                 backend-service-1.0                                   backend...
Demo OSGiExposition d’une servlet                                 backend-service-1.0                                   ba...
Demo OSGiUpgrade à chaud d’un bundle                                 backend-service-1.0                                ba...
Demo OSGiLog4j !                           backend-service-1.0                             backend-service-1.1  business-s...
OSGi dans le monde Java EE       Client side       Server Side                             www.xebia.fr / blog.xebia.fr
OSGi dans le monde Java EEClient side    Eclipse RCP        1ère utilisation d’OSGi dans le monde Open Source        Aj...
OSGi dans le monde Java EEServer side – Middlewares      Isolation middleware / application      Isolation des composant...
OSGi dans le monde Java EEServer side - Middlewares    Websphere 6.1 (2006) est full-osgi         Classloader OSGI pour ...
OSGi dans le monde Java EEServer side - Middlewares    Service Mix 4         Réécriture full OSGI / Spring DM de Service...
Bonnes pratiques OSGiLes enjeux d’OSGi pour Java EE                             www.xebia.fr / blog.xebia.fr
Bonnes pratiques   Préférer Import-Package à Require-Bundle   Utilisation des ranges de versions   Bien designer ses bu...
Les enjeux d’OSGi pour Java EE   L’utilisation d’anti-pattern OSGi        Class.forName / Factory Pattern        System...
Les enjeux d’OSGi pour Java EE   Problématique cross-bundle        AOP        Sécurité        Transaction   Testabili...
Conclusion   Socle robuste et éprouvé   Répond à des problématiques techniques complexes   Manque de maturité dans le m...
Questions            www.xebia.fr / blog.xebia.fr   58
Sponsors  14/10/2008                                  OSGI                                                                ...
Merci de votre   attention!                                                                                               ...
Licence  http://creativecommons.org/licenses/by-nc-sa/2.0/fr/   14/10/2008                                    OSGI        ...
Prochain SlideShare
Chargement dans…5
×

osgi-parisjug-20081014-presentation

623 vues

Publié le

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

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

Aucune remarque pour cette diapositive

osgi-parisjug-20081014-presentation

  1. 1. 14 octobre 2008 www.parisjug.org www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas dUtilisation Commerciale – Partage des Conditions Initiales à lIdentique
  2. 2. 14 octobre 2008 OSGICyrille Le ClercNicolas Griso www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas dUtilisation Commerciale – Partage des Conditions Initiales à lIdentique
  3. 3. La modularité Caractéristiques d’un module ?  Expose un contrat versionné  Masque ses détails d’implémentation  Décrit ses dépendances www.xebia.fr / blog.xebia.fr 3
  4. 4. Pourquoi la modularité ?  Limites du monolithique Windows Vista (50 M SLOC) est le dernier OS monolithique de Microsoft  Réutilisation et émergence de stacks Middleware Java  Serveur JavaEE, ESB/BPM, portail, télécoms,  Consolidation de marché  Maturité des briques et API de base  « One size does NOT fit all ! » Profiles Java EE 6 www.xebia.fr / blog.xebia.fr 4
  5. 5. La modularité en JavaL’existant Les jars Les classloaders hiérarchiques Maven 2Le futur Java Module System OSGi www.xebia.fr / blog.xebia.fr
  6. 6. La modularité en JavaL’existant : les jars Module de base : le Jar  Concept de build sans réalité au runtime  Pas de gestion de version Une seule version d’un jar peut être chargée  Pas d’intermédiaire de visibilité entre protected et public  Pas de description des dépendances Java s’est jusqu’à présent peu soucié du concept de module www.xebia.fr / blog.xebia.fr 6
  7. 7. La modularité en JavaL’existant : les classloaders hiérarchiques  Les classloaders sont hiérarchiques et héritent de la visibilité du parent  Visibilité globale dans un classloader  Impossibilité de charger plusieurs version d’une classe dans un classloader  Les packages ne sont pas contraints au runtime Deux classes d’un package peuvent provenir de jars différents www.xebia.fr / blog.xebia.fr 7
  8. 8. La modularité en JavaL’existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar Servlet Engine ClassLoader catalina-6.0.16.jar tomcat-dbcp-6.0.16.jar my-service-1.0.jar my-model-1.0.jar Web App ClassLoader hibernate-core-3.3.0.jar jdom-1.0.jar Web Application Classique www.xebia.fr / blog.xebia.fr 8
  9. 9. La modularité en JavaL’existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar Servlet Engine ClassLoader catalina-6.0.16.jar tomcat-dbcp-6.0.16.jar c a ve my-service-1.0.jar c ile AS iffi oss D B J my-model-1.0.jar Web App ClassLoader hibernate-core-3.3.0.jar jdom-1.0.jar www.xebia.fr / blog.xebia.fr 9
  10. 10. La modularité en JavaL’existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar Servlet Engine ClassLoader catalina-6.0.16.jar tomcat-dbcp-6.0.16.jar c a ve my-service-1.0.jar c ile here iffi bsp D e my-model-1.0.jar Web App ClassLoader W hibernate-core-3.3.0.jar jdom-1.0.jar www.xebia.fr / blog.xebia.fr 10
  11. 11. La modularité en JavaL’existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar Servlet Engine ClassLoader g catalina-6.0.16.jar a gin ack at ep omc R T tomcat-dbcp-6.0.16.jar my-service-1.0.jar my-model-1.0.jar Web App ClassLoader hibernate-core-3.3.0.jar jdom-1.0.jar www.xebia.fr / blog.xebia.fr 11
  12. 12. La modularité en JavaL’existant : les classloaders hiérarchiques JVM Classloader Servlet Engine Spring-2.5.jar ClassLoader my-service-1.0.jar Impossible Web App my-model-1.0.jar ClassLoader cxf-2.1.jar Spring-2.0.jar Il est aujourd’hui impossible de charger deux versions d’un même jar dans une web app ! www.xebia.fr / blog.xebia.fr 12
  13. 13. La modularité en JavaL’existant : maven 2 Maven 2  Versionnage des jar  Description des dépendances <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <name>My Service</name> <groupId>com.mycompany</groupId> version <artifactId>my-service</artifactId> <packaging>jar</packaging> <version>1.0</version> <dependencies> dépendances <dependency> <groupId>com.mycompany</groupId> <artifactId>my-backend</artifactId> <version>1.0</version> </dependency> </dependencies> </project> www.xebia.fr / blog.xebia.fr 13
  14. 14. La modularité en JavaL’existant : maven 2 Les limitations  Dépendances explicites seulement au build (pas runtime)  Pas de visibilité bundle Les défis  Qualité des méta-données  Dépendances transitives  Conflits de versions  Dépendances par nom de bundle vs. par package www.xebia.fr / blog.xebia.fr 14
  15. 15. La modularité en JavaLe futur : JSR 291 : Dynamic Component Support for Java SE  OSGi rejoint le JCP  OSGi  Unité de travail : le bundle  Gère la visibilité des bundles et leur dépendances, leur versionning  Dynamique (cycle de vie des bundles géré au runtime)  Orienté service » Les bundles publient des services dynamiquement » Recherche de services » Bind » Cycle de vie des services lié aux bundles qui les supportent www.xebia.fr / blog.xebia.fr 15
  16. 16. La modularité en JavaLe futur : JSR 277 – Java Module System  Associé à JSR 294 - super packages  Utilisation des annotations Java 5 pour décrire les dépendances et les version @Version("1.0") @ImportModules({ @ImportModule(name="com.mycompany.mybackend", version="1.0+") }) super package com.mycompany.myservice { export com.mycompany.myservice.*; } Vive opposition des partisans d’OSGI www.xebia.fr / blog.xebia.fr 16
  17. 17. OSGi AllianceL’histoireLe fonctionnementOSGi Alliance et le JCP www.xebia.fr / blog.xebia.fr
  18. 18. OSGi AllianceL’histoire  Consortium créé en 1999  Objectifs initiaux : Java dans le monde embarqué (domotique, automobile, telco, etc)  Membres : EDF, Siemens, BMW, Ericsson, Nokia, Motorola, Sprint, IBM, SpringSource, Sun, etc  Date clefs » 1999 : l’embarqué et networked devices, la domotique, l’automobile » 2003 : les télécommunications » 2004 : virage open source (Eclipse) » 2006 : server side Java  Besoin d’être léger et dynamique dès l’origine Besoin d’isolation des composants fournis par différents éditeurs www.xebia.fr / blog.xebia.fr 18
  19. 19. OSGi AllianceLe fonctionnement  Les experts group  Core platform EG  Vehicle EG  Mobile EG  Entreprise EG  Residential EG  Entreprise Expert Group  Gestion de la scalabilité (multi-conteneur, multi-processeurs)  Ouverture à d’autres languages  Distribué (SCA)  Intégration à JavaEE  Modèle de composants (Spring DM) www.xebia.fr / blog.xebia.fr 19
  20. 20. OSGi AllianceOSGi et le JCP  1999 : JSR 8 – OSGi specification => retirée en 1999  2006 : JSR 291- Dynamic Component Support for JavaTM SE  Spec Lead : IBM  Craintes que le JCP n’ai qu’un rôle de validation du travail de l’OSGi Alliance  Craintes du chevauchement avec JSR 277 – Java Module System  2008 : Sun embauche Richard Hall (Apache Felix) => intégration d’OSGi dans Glassfish www.xebia.fr / blog.xebia.fr 20
  21. 21. OSGi AllianceOSGi et le JCP Une communauté plus fermée que le JCP ? OSGi Alliance JCP Direction Partagée Exclusive Sun Membres Principalement des entreprises Variés : entreprises, universitaires, individuels Spécifications release Public Public Spécifications drafts Membres payants Public TCK Membres payants Membres payants + OSS Reference Impl Membres payants Public Débats Confidentiels De plus en plus publics OSGi Alliance Full Membership : 20 k$/an www.xebia.fr / blog.xebia.fr 21
  22. 22. La plateforme OSGI Les bundles Le réseau de classloader www.xebia.fr / blog.xebia.fr
  23. 23. La plateformeLes bundles Les c du ontra Ma inte nife s  Unité de déploiement sur la plateforme st  Un simple jar  Plus quelques entrées dans META-INF/MANIFEST.MF  Peut être utilisé hors contexte OSGi Description du bundle Déclaration des dépendances niveau package Déclaration des packages exportés www.xebia.fr / blog.xebia.fr 23
  24. 24. La plateformeLes bundles  Le versionning  major.minor.micro.qualifier » 3.4.0.v20080603-2000  [version, version]  (version, version)  [version, version) www.xebia.fr / blog.xebia.fr 24
  25. 25. La PlateformeLe réseau de ClassLoaders gui-grand-public-1.9 domaine-metier-1.3 web-services-1.7 dao&cache-1.1 domaine-metier-1.2 web-services-1.6 Audit&logs-1.0 Exemple de graphe de modules www.xebia.fr / blog.xebia.fr 25
  26. 26. La PlateformeLe réseau de Class Loaders Classloader domaine-metier-1.2 web-services-1.6 filtrant MANIFEST Audit&logs-1.0 Import-package … MANIFEST Export-package : … Import−Package: demo.audit;version=1.0.0 Export−Package: demo.audit;version=1.0.0 Seulement les classes de demo.audit www.xebia.fr / blog.xebia.fr 26
  27. 27. La plateformeLe conteneur  Environnement d’exécution des bundles  Standalone ou embarqué  Gère le cycle de vie des bundles www.xebia.fr / blog.xebia.fr 27
  28. 28. La plateformeLe cycle de vie des bundles www.xebia.fr / blog.xebia.fr 28
  29. 29. La plateformeLe Service Registry  Cœur du framework  Gère les services. Permet de  Publier des services  Rechercher des services  Binder des services  Découplage entre services www.xebia.fr / blog.xebia.fr 29
  30. 30. Assemblage des services OSGIBundleActivator et ServiceTracker Gestion du cycle de vie du Bundle Enregistrement du service Dé-enregistrement implicite du service www.xebia.fr / blog.xebia.fr 30
  31. 31. Assemblage des services OSGIBundleActivator et ServiceTracker Le manifest sert à déclarer le Bundle-Activator Déclaration de l’Activator www.xebia.fr / blog.xebia.fr 31
  32. 32. Assemblage des services OSGIBundleActivator et ServiceTracker Gestion du cycle de vie du Bundle Création du ServiceTracker Injection du ServiceTracker Fermeture du ServiceTracker www.xebia.fr / blog.xebia.fr 32
  33. 33. Assemblage des services OSGIBundleActivator et ServiceTracker Injection du ServiceTracker Résolution du service à chaque utilisation Gestion de l’indisponibilité Le ServiceTracker est intrusif sur le code ! www.xebia.fr / blog.xebia.fr 33
  34. 34. Assemblage des services OSGIBundleActivator et ServiceTracker Enregistrement d’une servlet sur le HttpService Surcharge des méthodes addingService(…) et removedService(…) ServiceTracker devient vite lourd à gérer ! www.xebia.fr / blog.xebia.fr 34
  35. 35. Assemblage des services OSGIBundleActivator et ServiceTracker  Mécanisme de gestion des dépendances le plus stable et mature d’OSGi  Très en retard par rapport aux mécanismes d’injection de dépendances Java actuels (EJB 3, Spring, Google Juice, etc)  Contraint par les limites des Execution Environments OSGI ? www.xebia.fr / blog.xebia.fr 35
  36. 36. Assemblage des services OSGIDeclarative Service  Créé en 2005 (OSGI R4)  Mis à jour via la RFC 134 www.xebia.fr / blog.xebia.fr 36
  37. 37. Assemblage des services OSGIDeclarative Service  Semble peu utilisé  Techniquement limité  Ne gère pas les dépendances intra-bundles  Remis en cause par RFC 124 (Spring DM) www.xebia.fr / blog.xebia.fr 37
  38. 38. Assemblage des services OSGISpring DM  En cours de standardisation pour OSGi R4.2  RFC 124 www.xebia.fr / blog.xebia.fr 38
  39. 39. La plateformeLes services  Exemples  Log Service  Http Service  Configuration Admin Service  Preferences Service  Event Admin Service  Plus orientés embarqué / J2ME que informatique de gestion / Java 5+  Fonctionnalités limitées  Ex: HttpService ne gère ni les Filter ni les ServletContextListener www.xebia.fr / blog.xebia.fr 39
  40. 40. La plateformeLes implémentations Open Source  Eclipse Equinox  Apache Felix  Knopflerfish (maintenu par Makewave)  ProSyst Open Source mBedded Server Equinox Edition  Newton Project  La liste complète  http://www.osgi.org/Markets/HomePage www.xebia.fr / blog.xebia.fr 40
  41. 41. La plateformeLes chantiers en cours  Spécifiés dans le draft sur OSGi R4.2  Ajout de services « Java EE »  RFC 98: gestion des transaction via JTA et/ou XA  RFC 119: OSGi distribué » Appel de services distants  Nouveau modèle de composant  En concurrence avec Declarative Service (OSGI R4 !)  RFC 124 – « A Component Model for OSGi » » Standardisation de Spring DM www.xebia.fr / blog.xebia.fr 41
  42. 42. Demo OSGiDescription  Un service dépend d’un backend  Un service expose une servlet  Les composants utilisent Log4j  Upgrade à chaud du service www.xebia.fr / blog.xebia.fr 42
  43. 43. Demo OSGiBundles & packages backend-service-1.0 backend-service-1.1 business-service-1.0 log4j-1.2.13 javax.servlet.*-2.4 org.osgi.service.http.*-1.2.0 www.xebia.fr / blog.xebia.fr 43
  44. 44. Demo OSGiImport d’un service backend-service-1.0 backend-service-1.1 business-service-1.0 log4j-1.2.13 javax.servlet.*-2.4 org.osgi.service.http.*-1.2.0 www.xebia.fr / blog.xebia.fr 44
  45. 45. Demo OSGiExposition d’une servlet backend-service-1.0 backend-service-1.1 business-service-1.0 log4j-1.2.13 javax.servlet.*-2.4 org.osgi.service.http.*-1.2.0 www.xebia.fr / blog.xebia.fr 45
  46. 46. Demo OSGiUpgrade à chaud d’un bundle backend-service-1.0 backend-service-1.1 business-service-1.0 log4j-1.2.13 javax.servlet.*-2.4 org.osgi.service.http.*-1.2.0 www.xebia.fr / blog.xebia.fr 46
  47. 47. Demo OSGiLog4j ! backend-service-1.0 backend-service-1.1 business-service-1.0 log4j-1.2.13 javax.servlet.*-2.4 log4j bundle fragment Log4j.properties org.osgi.service.http.*-1.2.0 www.xebia.fr / blog.xebia.fr 47
  48. 48. OSGi dans le monde Java EE Client side Server Side www.xebia.fr / blog.xebia.fr
  49. 49. OSGi dans le monde Java EEClient side  Eclipse RCP  1ère utilisation d’OSGi dans le monde Open Source  Ajout de fonctionnalités propriétaires » Eclipse-BuddyPolicy et Eclipse-RegisterBuddy » Les Features » La gestion des updates » Les extensions  Limitations Cycle de vie des plugins : On redémarre toujours Eclipse après avoir activé un plugin www.xebia.fr / blog.xebia.fr 49
  50. 50. OSGi dans le monde Java EEServer side – Middlewares  Isolation middleware / application  Isolation des composants du middleware (multi versions)  Lifecycle (start, stop, install, uninstall) exports OSGi stricts pour éviter les conflits Logging avec les dépendances Service Mon Application des applications High Availability Service javax.servlet.* javax.** … Messaging Service javax.servlet.http.* … JMS 1.1 Servlet 2.4 Servlet 2.5 EJB 2.1 EJB 3.0 Tx Service Container Container Container Container JTA 1.0.1B OSGI Container JVM www.xebia.fr / blog.xebia.fr 50
  51. 51. OSGi dans le monde Java EEServer side - Middlewares  Websphere 6.1 (2006) est full-osgi  Classloader OSGI pour isoler les applications du middleware  Equinox est le conteneur de Websphere  Tous les jars sont osgi-fiés (repository IBM)  Compositions Application Server, ESB, Process Server, Portal, Telecom Server  Weblogic 10 (2007) utilise OSGI  Plusieurs jars sont osgi-fiés  Glassfish  Glassfish démarre sur Equinox et Knopflerfish www.xebia.fr / blog.xebia.fr 51
  52. 52. OSGi dans le monde Java EEServer side - Middlewares  Service Mix 4  Réécriture full OSGI / Spring DM de ServiceMix  Service Mix Kernel est un enrichissement d’un conteneur OSGI  Possibilité de déployer des médiations en packaging JBI ou OSGI  Spring DM  Propose OSGI en alternative à Java EE  Autres acteurs Java EE : Jonas, JBoss Ces projets utilisent-ils OSGI basic ? ServiceTracker ? www.xebia.fr / blog.xebia.fr 52
  53. 53. Bonnes pratiques OSGiLes enjeux d’OSGi pour Java EE www.xebia.fr / blog.xebia.fr
  54. 54. Bonnes pratiques  Préférer Import-Package à Require-Bundle  Utilisation des ranges de versions  Bien designer ses bundles  Prévoir le couplage de ses bundles  Ne pas tout mettre dans un bundle  Séparer les APIs exportées des implémentations  Penser Orienté Service  Gérer le cycle de vie des dépendances  ServiceTracker, Spring DM, Declarative Service www.xebia.fr / blog.xebia.fr 54
  55. 55. Les enjeux d’OSGi pour Java EE  L’utilisation d’anti-pattern OSGi  Class.forName / Factory Pattern  System.exit()  Réutilisation des libraries existantes non-OSGi  Repackaging et prolifération de repositories OSGi.org, Spring, Servicemix, IBM (privé), etc  Modification du source code (http://www.dynamicjava.org/)  Bytecode patching au runtime (knoplerfish)  Gestion des meta données  OSGi: Entrées dans le manifest  Java Module System: annotations et nouvelle syntaxe java www.xebia.fr / blog.xebia.fr 55
  56. 56. Les enjeux d’OSGi pour Java EE  Problématique cross-bundle  AOP  Sécurité  Transaction  Testabilité des bundles  Packaging des applications  Archive .par chez Spring  Features chez eclipse www.xebia.fr / blog.xebia.fr 56
  57. 57. Conclusion  Socle robuste et éprouvé  Répond à des problématiques techniques complexes  Manque de maturité dans le monde Java EE  En pleine évolution pour les aspects Java EE www.xebia.fr / blog.xebia.fr 57
  58. 58. Questions www.xebia.fr / blog.xebia.fr 58
  59. 59. Sponsors 14/10/2008 OSGI www.parisjug.org Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas dUtilisation Commerciale – Partage des Conditions Initiales à lIdentique
  60. 60. Merci de votre attention! www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas dUtilisation Commerciale – Partage des Conditions Initiales à lIdentique
  61. 61. Licence http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ 14/10/2008 OSGI www.parisjug.org Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas dUtilisation Commerciale – Partage des Conditions Initiales à lIdentique

×