SlideShare une entreprise Scribd logo
1  sur  57
OSGi - ParisJUG Cyrille Le Clerc Nicolas Griso
La modularité ,[object Object],[object Object],[object Object],[object Object]
Pourquoi la modularité ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La modularité en Java L’existant Les jars Les classloaders hiérarchiques Maven 2 Le futur Java Module System OSGi
La modularité en Java L’existant : les jars ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Java s’est jusqu’à présent peu soucié du concept de module
La modularité en Java L’existant : les classloaders hiérarchiques ,[object Object],[object Object],[object Object],[object Object],[object Object]
La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar hibernate-core-3.3.0.jar jdom-1.0.jar Web Application Classique
La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar hibernate-core-3.3.0.jar jdom-1.0.jar Difficile avec  JBoss AS
La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar jdom-1.0.jar hibernate-core-3.3.0.jar Difficile avec  Websphere
La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar hibernate-core-3.3.0.jar Repackaging  Tomcat  jdom-1.0.jar
La modularité en Java L’existant : les classloaders hiérarchiques Web App  ClassLoader my-model-1.0.jar my-service-1.0.jar cxf-2.1.jar Spring-2.5.jar Spring-2.0.jar Impossible Il est aujourd’hui impossible de charger deux versions  d’un même jar dans une web app ! JVM Classloader Servlet Engine ClassLoader
La modularité en Java L’existant : maven 2 ,[object Object],[object Object],[object Object],<project  xmlns = &quot;http://maven.apache.org/POM/4.0.0&quot;   xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot;   xsi:schemaLocation = &quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot; >   <modelVersion> 4.0.0 </modelVersion>   <name> My Service </name>   <groupId> com.mycompany </groupId>   <artifactId> my-service </artifactId>   <packaging> jar </packaging>   <version> 1.0 </version>   <dependencies>   <dependency>   <groupId> com.mycompany </groupId>   <artifactId> my-backend </artifactId>   <version> 1.0 </version>   </dependency>   </dependencies> </project> version dépendances
La modularité en Java L’existant : maven 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La modularité en Java Le futur : JSR 291 : Dynamic Component Support for Java SE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La modularité en Java Le futur : JSR 277 – Java Module System ,[object Object],[object Object],@Version( &quot;1.0&quot; )  @ImportModules({  @ImportModule(name= &quot;com.mycompany.mybackend&quot; , version= &quot;1.0+&quot; )‏ })  super package   com.mycompany.myservice  { export  com.mycompany.myservice.*; } Vive opposition des partisans d’OSGI
OSGi Alliance L’histoire Le fonctionnement OSGi Alliance et le JCP
OSGi Alliance L’histoire ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OSGi Alliance Le fonctionnement ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OSGi Alliance OSGi et le JCP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OSGi Alliance OSGi et le JCP ,[object Object],OSGi Alliance Full Membership : 20 k$/an Exclusive Sun Partagée Direction Variés : entreprises, universitaires, individuels Principalement des entreprises Membres De plus en plus publics Confidentiels Débats Public Membres payants Reference Impl Membres payants + OSS Membres payants TCK Public Membres payants Spécifications drafts Public Public Spécifications release JCP OSGi Alliance
La plateforme OSGI Les bundles Le réseau de classloader
La plateforme Les bundles ,[object Object],[object Object],[object Object],[object Object],Déclaration des dépendances niveau package Déclaration des packages exportés Description du bundle Les contraintes  du Manifest
La plateforme Les bundles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La Plateforme Le réseau de ClassLoaders gui-grand-public-1.9 web-services-1.7 web-services-1.6 domaine-metier-1.3 Audit&logs-1.0 domaine-metier-1.2 dao&cache-1.1 Exemple de graphe de modules
La Plateforme Le réseau de Class Loaders web-services-1.6 Audit&logs-1.0 domaine-metier-1.2 Classloader filtrant MANIFEST Export-package : … MANIFEST Import-package … Import − Package : demo.audit;version=1.0.0 Seulement les classes de  demo.audit Export − Package : demo.audit;version=1.0.0
La plateforme Le conteneur ,[object Object],[object Object],[object Object]
La plateforme Le cycle de vie des bundles
La plateforme Le Service Registry ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Assemblage des services OSGI BundleActivator et ServiceTracker Enregistrement du service Dé-enregistrement implicite du service Gestion du cycle de vie du Bundle
Assemblage des services OSGI BundleActivator et ServiceTracker ,[object Object],Déclaration de l’ Activator
Assemblage des services OSGI BundleActivator et ServiceTracker Création du ServiceTracker Fermeture du ServiceTracker Gestion du cycle de vie du Bundle Injection du ServiceTracker
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 !
Assemblage des services OSGI BundleActivator et ServiceTracker ,[object Object],Surcharge des méthodes  addingService(…)  et  removedService(…)‏ ServiceTracker devient vite lourd à gérer !
Assemblage des services OSGI BundleActivator et ServiceTracker ,[object Object],[object Object],[object Object]
Assemblage des services OSGI Declarative Service ,[object Object],[object Object]
Assemblage des services OSGI Declarative Service ,[object Object],[object Object],[object Object],[object Object]
Assemblage des services OSGI Spring DM ,[object Object],[object Object]
La plateforme Les services ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La plateforme Les implémentations Open Source ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La plateforme Les chantiers en cours ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Demo OSGi Description ,[object Object],[object Object],[object Object],[object Object]
Demo OSGi Bundles & packages business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
Demo OSGi Import d’un service business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
Demo OSGi Exposition d’une servlet business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
Demo OSGi Upgrade à chaud d’un bundle business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
Demo OSGi Log4j ! business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1 log4j bundle fragment Log4j.properties
OSGi dans le monde Java EE Client side Server Side
OSGi dans le monde Java EE Client side ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OSGi dans le monde Java EE Server side – Middlewares ,[object Object],[object Object],[object Object],JVM OSGI Container Servlet 2.4 Container Servlet 2.5 Container EJB 2.1 Container Tx Service JTA 1.0.1B Messaging Service JMS 1.1 High Availability Service Logging Service EJB 3.0 Container javax.servlet.* javax.servlet.http .* … javax.** … exports OSGi stricts pour éviter les conflits avec les dépendances des applications Mon Application
OSGi dans le monde Java EE Server side - Middlewares ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OSGi dans le monde Java EE Server side - Middlewares ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Ces projets utilisent-ils OSGI basic ? ServiceTracker ?
Bonnes pratiques OSGi Les enjeux d’OSGi pour Java EE
Bonnes pratiques ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les enjeux d’OSGi pour Java EE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les enjeux d’OSGi pour Java EE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusion ,[object Object],[object Object],[object Object],[object Object]
Questions

Contenu connexe

Tendances

Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinalAymen Drira
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileSylla Mamoudou
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
J2eeintro
J2eeintroJ2eeintro
J2eeintromedbmb
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
201003 OSGi
201003 OSGi201003 OSGi
201003 OSGilyonjug
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Celinio Fernandes
 

Tendances (20)

Présentation prime facesfinal
Présentation prime facesfinalPrésentation prime facesfinal
Présentation prime facesfinal
 
JSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces MobileJSF2, Primefaces, Primefaces Mobile
JSF2, Primefaces, Primefaces Mobile
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Axis2 services fr
Axis2 services frAxis2 services fr
Axis2 services fr
 
Osgi ParisJUG 2008-10-14
Osgi ParisJUG 2008-10-14Osgi ParisJUG 2008-10-14
Osgi ParisJUG 2008-10-14
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
J2eeintro
J2eeintroJ2eeintro
J2eeintro
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
201003 OSGi
201003 OSGi201003 OSGi
201003 OSGi
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
Rapport tp1 j2ee
Rapport tp1 j2eeRapport tp1 j2ee
Rapport tp1 j2ee
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
J2EE vs .NET
J2EE vs .NETJ2EE vs .NET
J2EE vs .NET
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)
 

En vedette

Enquête 2012 sur les Métiers du Web et de l'Internet
Enquête 2012 sur les Métiers du Web et de l'InternetEnquête 2012 sur les Métiers du Web et de l'Internet
Enquête 2012 sur les Métiers du Web et de l'InternetOtman MECHBAL
 
Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »
Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »
Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »Philippe TRINON
 
Quand Le Web 2.0 Transforme Votre Entreprise
Quand Le Web 2.0 Transforme Votre EntrepriseQuand Le Web 2.0 Transforme Votre Entreprise
Quand Le Web 2.0 Transforme Votre EntreprisePhilippe TRINON
 
Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)Cyrille Le Clerc
 
HAL v3.0 formation_administrateur_6_novembre_2014
HAL v3.0 formation_administrateur_6_novembre_2014HAL v3.0 formation_administrateur_6_novembre_2014
HAL v3.0 formation_administrateur_6_novembre_2014OAccsd
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionCyrille Le Clerc
 
Mettre en place un intranet de veille territoriale
Mettre en place un intranet de veille territorialeMettre en place un intranet de veille territoriale
Mettre en place un intranet de veille territorialeWoomeet
 
JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...
JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...
JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...GUSS
 
Présentation PowerPoint " Conception et développement d'un portail web pour l...
Présentation PowerPoint " Conception et développement d'un portail web pour l...Présentation PowerPoint " Conception et développement d'un portail web pour l...
Présentation PowerPoint " Conception et développement d'un portail web pour l...Hajer Dahech
 

En vedette (16)

Programme congres 2005
Programme congres 2005Programme congres 2005
Programme congres 2005
 
Enquête 2012 sur les Métiers du Web et de l'Internet
Enquête 2012 sur les Métiers du Web et de l'InternetEnquête 2012 sur les Métiers du Web et de l'Internet
Enquête 2012 sur les Métiers du Web et de l'Internet
 
Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »
Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »
Les Entreprises Souvrent Aux Outils LabelliséS « Web 2.0 »
 
Alain Morisod Csillagai
Alain Morisod CsillagaiAlain Morisod Csillagai
Alain Morisod Csillagai
 
Gerer fichiers
Gerer fichiersGerer fichiers
Gerer fichiers
 
Web 2.0 Wikipedia
Web 2.0 WikipediaWeb 2.0 Wikipedia
Web 2.0 Wikipedia
 
Quand Le Web 2.0 Transforme Votre Entreprise
Quand Le Web 2.0 Transforme Votre EntrepriseQuand Le Web 2.0 Transforme Votre Entreprise
Quand Le Web 2.0 Transforme Votre Entreprise
 
Web 2.0 Complet
Web 2.0 CompletWeb 2.0 Complet
Web 2.0 Complet
 
Le nouveau portail
Le nouveau portailLe nouveau portail
Le nouveau portail
 
Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)
 
HAL v3.0 formation_administrateur_6_novembre_2014
HAL v3.0 formation_administrateur_6_novembre_2014HAL v3.0 formation_administrateur_6_novembre_2014
HAL v3.0 formation_administrateur_6_novembre_2014
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la production
 
Mettre en place un intranet de veille territoriale
Mettre en place un intranet de veille territorialeMettre en place un intranet de veille territoriale
Mettre en place un intranet de veille territoriale
 
JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...
JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...
JSS2014 – Comment réaliser et administrer un portail BI avec SharePoint, SQL ...
 
presentation soutenance
presentation soutenance presentation soutenance
presentation soutenance
 
Présentation PowerPoint " Conception et développement d'un portail web pour l...
Présentation PowerPoint " Conception et développement d'un portail web pour l...Présentation PowerPoint " Conception et développement d'un portail web pour l...
Présentation PowerPoint " Conception et développement d'un portail web pour l...
 

Similaire à Soirée OSGi au Paris Jug (14/10/2008)

Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Cours du soir_gwt
Cours du soir_gwtCours du soir_gwt
Cours du soir_gwtSaid Talibi
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueAlexis Hassler
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Jean-Michel Doudoux
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?PALO IT
 
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système JavaLes ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système JavaDocDoku
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Jean-Michel Doudoux
 
osgi-parisjug-20081014-presentation
osgi-parisjug-20081014-presentationosgi-parisjug-20081014-presentation
osgi-parisjug-20081014-presentationngriso
 
M1 presentation OSGi
M1 presentation OSGiM1 presentation OSGi
M1 presentation OSGiVelossity
 
Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!OCTO Technology
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfRachida19
 
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Romain Linsolas
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 

Similaire à Soirée OSGi au Paris Jug (14/10/2008) (20)

Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Chap 02 poo en java
Chap 02 poo en javaChap 02 poo en java
Chap 02 poo en java
 
Cours du soir_gwt
Cours du soir_gwtCours du soir_gwt
Cours du soir_gwt
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presque
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018
 
Et pourquoi pas JEE ?
Et pourquoi pas JEE ?Et pourquoi pas JEE ?
Et pourquoi pas JEE ?
 
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système JavaLes ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
JAVA Chapitre1
JAVA Chapitre1 JAVA Chapitre1
JAVA Chapitre1
 
osgi-parisjug-20081014-presentation
osgi-parisjug-20081014-presentationosgi-parisjug-20081014-presentation
osgi-parisjug-20081014-presentation
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
M1 presentation OSGi
M1 presentation OSGiM1 presentation OSGi
M1 presentation OSGi
 
Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 

Plus de Cyrille Le Clerc

Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryCyrille Le Clerc
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Cyrille Le Clerc
 
Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Cyrille Le Clerc
 
Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...
Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...
Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...Cyrille Le Clerc
 
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXParis Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXCyrille Le Clerc
 
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...Cyrille Le Clerc
 
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspectiveGeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspectiveCyrille Le Clerc
 
Java Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' FounderJava Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' FounderCyrille Le Clerc
 
Xebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top TenXebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top TenCyrille Le Clerc
 

Plus de Cyrille Le Clerc (9)

Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetry
 
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
 
Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013
 
Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...
Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...
Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR...
 
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXParis Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
 
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
 
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspectiveGeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
 
Java Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' FounderJava Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' Founder
 
Xebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top TenXebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top Ten
 

Soirée OSGi au Paris Jug (14/10/2008)

  • 1. OSGi - ParisJUG Cyrille Le Clerc Nicolas Griso
  • 2.
  • 3.
  • 4. La modularité en Java L’existant Les jars Les classloaders hiérarchiques Maven 2 Le futur Java Module System OSGi
  • 5.
  • 6.
  • 7. La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar hibernate-core-3.3.0.jar jdom-1.0.jar Web Application Classique
  • 8. La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar hibernate-core-3.3.0.jar jdom-1.0.jar Difficile avec JBoss AS
  • 9. La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar jdom-1.0.jar hibernate-core-3.3.0.jar Difficile avec Websphere
  • 10. La modularité en Java L’existant : les classloaders hiérarchiques tomcat-dbcp-6.0.16.jar JVM Classloader jce-provider.jar rt.jar Servlet Engine ClassLoader servlet-api-2.5.jar catalina-6.0.16.jar Web App ClassLoader my-model-1.0.jar my-service-1.0.jar hibernate-core-3.3.0.jar Repackaging Tomcat jdom-1.0.jar
  • 11. La modularité en Java L’existant : les classloaders hiérarchiques Web App ClassLoader my-model-1.0.jar my-service-1.0.jar cxf-2.1.jar Spring-2.5.jar Spring-2.0.jar Impossible Il est aujourd’hui impossible de charger deux versions d’un même jar dans une web app ! JVM Classloader Servlet Engine ClassLoader
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. OSGi Alliance L’histoire Le fonctionnement OSGi Alliance et le JCP
  • 17.
  • 18.
  • 19.
  • 20.
  • 21. La plateforme OSGI Les bundles Le réseau de classloader
  • 22.
  • 23.
  • 24. La Plateforme Le réseau de ClassLoaders gui-grand-public-1.9 web-services-1.7 web-services-1.6 domaine-metier-1.3 Audit&logs-1.0 domaine-metier-1.2 dao&cache-1.1 Exemple de graphe de modules
  • 25. La Plateforme Le réseau de Class Loaders web-services-1.6 Audit&logs-1.0 domaine-metier-1.2 Classloader filtrant MANIFEST Export-package : … MANIFEST Import-package … Import − Package : demo.audit;version=1.0.0 Seulement les classes de demo.audit Export − Package : demo.audit;version=1.0.0
  • 26.
  • 27. La plateforme Le cycle de vie des bundles
  • 28.
  • 29. Assemblage des services OSGI BundleActivator et ServiceTracker Enregistrement du service Dé-enregistrement implicite du service Gestion du cycle de vie du Bundle
  • 30.
  • 31. Assemblage des services OSGI BundleActivator et ServiceTracker Création du ServiceTracker Fermeture du ServiceTracker Gestion du cycle de vie du Bundle Injection du ServiceTracker
  • 32. 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 !
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. Demo OSGi Bundles & packages business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
  • 43. Demo OSGi Import d’un service business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
  • 44. Demo OSGi Exposition d’une servlet business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
  • 45. Demo OSGi Upgrade à chaud d’un bundle business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1
  • 46. Demo OSGi Log4j ! business-service-1.0 backend-service-1.0 log4j-1.2.13 org.osgi.service.http.*-1.2.0 javax.servlet.*-2.4 backend-service-1.1 log4j bundle fragment Log4j.properties
  • 47. OSGi dans le monde Java EE Client side Server Side
  • 48.
  • 49.
  • 50.
  • 51.
  • 52. Bonnes pratiques OSGi Les enjeux d’OSGi pour Java EE
  • 53.
  • 54.
  • 55.
  • 56.

Notes de l'éditeur

  1. Self-Contained. Highly Cohesive Loosely coupled
  2. Telecom : SIP, IP Multimedia Subsystem (IMS), Parlay X web services, Websphere : Portal, ESB/Process Server, Telecom Server Weblogic : Integration, Communications Platform Glassfish : GlassfishESB, Sailfin, JBoss : features packs
  3. Pas de gestion de version - On ne peut pas charger plusieurs versions simultanément - l’aspect hiérarchique des packages n’est pas exploité pour décrire la visibilité
  4. Packages pas contraint au runtime : possibilité de charger depuis plusieurs jars les classes d’un même package
  5. http://jaitechwriteups.blogspot.com/2008/08/how-to-upgrade-hibernate-in-jboss.html JBoss ships hibernate-3.2.4
  6. Martin Fowler : Dependency Injection : Jan 2004 : http://martinfowler.com/articles/injection.html