Your SlideShare is downloading. ×
0
14 octobre 2008




                                                                                                      ...
14 octobre 2008




                                                         OSGI



Cyrille Le Clerc
Nicolas Griso

     ...
La modularité

  Caractéristiques d’un module ?

     Expose un contrat versionné

     Masque ses détails d’implémentat...
Pourquoi la modularité ?

     Limites du monolithique
      Windows Vista (50 M SLOC) est le dernier OS monolithique de ...
La modularité en Java
L’existant
           Les jars
           Les classloaders hiérarchiques
           Maven 2
Le futur...
La modularité en Java
L’existant : les jars

   Module de base : le Jar

         Concept de build sans réalité au runtim...
La modularité en Java
L’existant : les classloaders hiérarchiques

      Les classloaders sont hiérarchiques et héritent ...
La modularité en Java
L’existant : les classloaders hiérarchiques

                                                       ...
La modularité en Java
L’existant : les classloaders hiérarchiques

                                                       ...
La modularité en Java
L’existant : les classloaders hiérarchiques

                                                       ...
La modularité en Java
L’existant : les classloaders hiérarchiques

                                                       ...
La modularité en Java
L’existant : les classloaders hiérarchiques

    JVM Classloader


     Servlet Engine              ...
La modularité en Java
L’existant : maven 2

     Maven 2
      Versionnage des jar
      Description des dépendances
   ...
La modularité en Java
L’existant : maven 2

           Les limitations
                 Dépendances explicites seulement ...
La modularité en Java
Le futur : JSR 291 : Dynamic Component Support for Java SE

      OSGi rejoint le JCP

      OSGi
...
La modularité en Java
Le futur : JSR 277 – Java Module System

      Associé à JSR 294 - super packages

      Utilisati...
OSGi Alliance
L’histoire
Le fonctionnement
OSGi Alliance et le JCP




                          www.xebia.fr / blog.xebia...
OSGi Alliance
L’histoire

      Consortium créé en 1999

      Objectifs initiaux : Java dans le monde embarqué (domotiq...
OSGi Alliance
Le fonctionnement

      Les experts group
          Core platform EG
          Vehicle EG
          Mob...
OSGi Alliance
OSGi et le JCP

      1999 : JSR 8 – OSGi specification => retirée en 1999

      2006 : JSR 291- Dynamic ...
OSGi Alliance
OSGi 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 / ...
La plateforme
Les bundles                                                     Les
                                        ...
La plateforme
Les bundles



      Le versionning
          major.minor.micro.qualifier
            » 3.4.0.v20080603-20...
La Plateforme
Le réseau de ClassLoaders




   gui-grand-public-1.9
                               domaine-metier-1.3
    ...
La Plateforme
Le réseau de Class Loaders


                                     Classloader                           doma...
La plateforme
Le conteneur


      Environnement d’exécution des bundles

      Standalone ou embarqué

      Gère le c...
La plateforme
Le cycle de vie des bundles




                              www.xebia.fr / blog.xebia.fr   28
La plateforme
Le Service Registry


      Cœur du framework

      Gère les services. Permet de
          Publier des s...
Assemblage des services OSGI
BundleActivator et ServiceTracker



                                                        ...
Assemblage des services OSGI
BundleActivator et ServiceTracker

         Le manifest sert à déclarer le Bundle-Activator

...
Assemblage des services OSGI
BundleActivator et ServiceTracker

                                   Gestion du cycle de vie...
Assemblage des services OSGI
BundleActivator et ServiceTracker
                                                           ...
Assemblage des services OSGI
BundleActivator et ServiceTracker

   Enregistrement d’une servlet sur le HttpService
       ...
Assemblage des services OSGI
BundleActivator et ServiceTracker

      Mécanisme de gestion des dépendances le plus stable...
Assemblage des services OSGI
Declarative Service

     Créé en 2005 (OSGI R4)
     Mis à jour via la RFC 134




       ...
Assemblage des services OSGI
Declarative Service

     Semble peu utilisé

     Techniquement limité
        Ne gère pa...
Assemblage des services OSGI
Spring DM

     En cours de standardisation pour OSGi R4.2
        RFC 124




            ...
La plateforme
Les services

      Exemples
          Log Service
          Http Service
          Configuration Admin ...
La plateforme
Les implémentations Open Source


      Eclipse Equinox
      Apache Felix
      Knopflerfish (maintenu p...
La plateforme
Les chantiers en cours

      Spécifiés dans le draft sur OSGi R4.2

      Ajout de services « Java EE »
 ...
Demo OSGi
Description

      Un service dépend d’un backend
      Un service expose une servlet
      Les composants ut...
Demo OSGi
Bundles & packages



                                 backend-service-1.0


                                   ...
Demo OSGi
Import d’un service



                                 backend-service-1.0


                                  ...
Demo OSGi
Exposition d’une servlet



                                 backend-service-1.0


                             ...
Demo OSGi
Upgrade à chaud d’un bundle



                                 backend-service-1.0


                          ...
Demo OSGi
Log4j !



                           backend-service-1.0


                             backend-service-1.1

  ...
OSGi dans le monde Java EE
       Client side
       Server Side




                             www.xebia.fr / blog.xebi...
OSGi dans le monde Java EE
Client side

      Eclipse RCP
          1ère utilisation d’OSGi dans le monde Open Source
  ...
OSGi dans le monde Java EE
Server side – Middlewares
      Isolation middleware / application
      Isolation des compos...
OSGi dans le monde Java EE
Server side - Middlewares

      Websphere 6.1 (2006) est full-osgi
          Classloader OSG...
OSGi dans le monde Java EE
Server side - Middlewares

      Service Mix 4
          Réécriture full OSGI / Spring DM de ...
Bonnes pratiques OSGi
Les 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 desig...
Les enjeux d’OSGi pour Java EE

     L’utilisation d’anti-pattern OSGi
         Class.forName / Factory Pattern
       ...
Les enjeux d’OSGi pour Java EE


     Problématique cross-bundle
         AOP
         Sécurité
         Transaction

...
Conclusion

     Socle robuste et éprouvé

     Répond à des problématiques techniques complexes

     Manque de maturi...
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                                    OS...
Upcoming SlideShare
Loading in...5
×

Osgi ParisJUG 2008-10-14

2,857

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,857
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
61
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Osgi ParisJUG 2008-10-14"

  1. 1. 14 octobre 2008 www.parisjug.org www.parisjug.org Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
  2. 2. 14 octobre 2008 OSGI Cyrille Le Clerc Nicolas Griso www.parisjug.org Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
  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 Java L’existant Les jars Les classloaders hiérarchiques Maven 2 Le futur Java Module System OSGi www.xebia.fr / blog.xebia.fr
  6. 6. La modularité en Java L’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 Java L’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 Java L’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 Java L’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 Java L’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 Java L’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 Java L’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 Java L’existant : maven 2 Maven 2  Versionnage des jar  Description des dépendances <project xmlns=quot;http://maven.apache.org/POM/4.0.0quot; xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot; xsi:schemaLocation=quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdquot;> <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 Java L’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 Java Le 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 Java Le 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(quot;1.0quot;) @ImportModules({ @ImportModule(name=quot;com.mycompany.mybackendquot;, version=quot;1.0+quot;) }) 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 Alliance L’histoire Le fonctionnement OSGi Alliance et le JCP www.xebia.fr / blog.xebia.fr
  18. 18. OSGi Alliance L’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 Alliance Le 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 Alliance OSGi 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 Alliance OSGi 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 plateforme Les 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 plateforme Les 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 Plateforme Le 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 Plateforme Le 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 plateforme Le 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 plateforme Le cycle de vie des bundles www.xebia.fr / blog.xebia.fr 28
  29. 29. La plateforme Le 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 OSGI BundleActivator 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 OSGI BundleActivator 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 OSGI BundleActivator 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 OSGI BundleActivator 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 OSGI BundleActivator 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 OSGI BundleActivator 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 OSGI Declarative Service  Créé en 2005 (OSGI R4)  Mis à jour via la RFC 134 www.xebia.fr / blog.xebia.fr 36
  37. 37. Assemblage des services OSGI Declarative 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 OSGI Spring DM  En cours de standardisation pour OSGi R4.2  RFC 124 www.xebia.fr / blog.xebia.fr 38
  39. 39. La plateforme Les 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 plateforme Les 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 plateforme Les 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 OSGi Description  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 OSGi Bundles & 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 OSGi Import 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 OSGi Exposition 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 OSGi Upgrade à 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 OSGi Log4j ! 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 EE Client 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 EE Server 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 EE Server 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 EE Server 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 OSGi Les 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 d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
  60. 60. Merci de votre attention! www.parisjug.org Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
  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 d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×