www.parisjug.org www.parisjug.org



Documents pareils
Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

JOnAS 5 Enterprise OSGi javaee compliant

JOnAS 5. Serveur d application d

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Java pour le Web. Cours Java - F. Michel

JOnAS Day 5.1. Outils de développements

Mise en œuvre des serveurs d application

SOA Open Source Intégration des services et business process dans une architecture SOA Open Source. Bruno Georges JBoss, a Division of Red Hat

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Serveur d'application à la juste taille

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Environnements de Développement

Applications distribuées: le retour du client "riche"

PRODUCTS LIST (updated 11th January 2010)

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

1 JBoss Entreprise Middleware

Direction des Technologies de l Information. Présentation OCDE. Contribution du Parlement européen. L utilisation de l OPEN SOURCE au PE

OSGi. Conception d applications modulaires en Java. Jérôme Molière. Préface de Peter Kriens. Groupe Eyrolles, 2012, ISBN :

S T L - C P S - L e s p l u g i n s E c l i p s e. - Une Introduction , Frédéric Peschanski

Machine virtuelle Java pour Palm TX

Introduction au Déploiement

Projet de développement

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Introduction aux «Services Web»

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Vulgarisation Java EE Java EE, c est quoi?

Environnements de développement (intégrés)

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Compte Rendu d intégration d application

Exposé Systèmes Réseaux

EXA1415 : Annotations

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Introduction à la plateforme J2EE

Un business model d éditeur open source

Le moteur de workflow JBPM

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

JOnAS Day 5.1. Clustering

Cedric Dumoulin (C) The Java EE 7 Tutorial

Open Source & Innovation exo Platform Oualid Chaker,

Java Enterprise Edition

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

<Insert Picture Here> Maintenir le cap avec Oracle WebLogic Server

WEBSPHERE & RATIONAL. Jacques Rage

Openmoko, free your phone!

Cours en ligne Développement Java pour le web

Configuration Interface for MEssage ROuting


Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Rendez-vous la liberté avec Rational Quality Manager

Logiciels Open Sources et le Secteur Privé

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

I-JVM: une machine virtuelle Java pour l isolation de composants dans OSGi

Web Tier : déploiement de servlets

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Guide de déploiement d'applications FormPublisher

Celui qui vous parle. Yann Vigara

JASMINe, smart tool for your SOA platform management

Initiation à JAVA et à la programmation objet.

ECLIPSE RCP. Introduction

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Valorisez vos actifs logiciels avec Rational Asset Manager. Jean-Michel Athané, Certified IT Specialist IBM Rational Software

GESTION DU CYCLE DE VIE. Albert Amar Avant-vente Middleware

Evolution des SI à l heure du Cloud

GESTION DE LA PERFORMANCE. Albert Amar Avant-vente Middleware

Famille IBM WebSphere Application Server

CORBA. (Common Request Broker Architecture)

JASMINe. Outils de gestion et supervision d'infrastructure intergicielle.

Logiciels libres et Open source

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

Automation Engine 10. Plates-formes prises en charge

Petit Déjeuner Pépinière du Logiciel Libre. 25 juin 2008

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

GWT à l'épreuve du feu. by Sami Jaber (DNG Consulting)

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Nouvelles Plateformes Technologiques

IBM Business Process Manager

La démarche SOA et l interopérabilité applicative

Auto-évaluation Aperçu de l architecture Java EE

NFP111 Systèmes et Applications Réparties

Manuel d installation de l application Dimona New via SMS

CAHIER DES CHARGES D IMPLANTATION

IBM Lotus Notes/Domino v7, fonctionnalités et évolutions

FOSS Enterprise Integration Plattaform

L'automatisation open source pour SI complexes

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

TP1 : Initiation à Java et Eclipse

Déploiement de l infrastructure SOA. Retour d expérience Août 2013

Point sur les solutions de développement d apps pour les périphériques mobiles

Architecture client riche Evolution ou révolution? Thomas Coustenoble IBM Lotus Market Manager

Les processus métiers : concepts, modèles et systèmes

Les nouvelles architectures des SI : Etat de l Art

Le Cloud: Mythe ou Réalité?

5004H103 Ed. 02. Procédure d installation du logiciel AKO-5004

Transcription:

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

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

La modularité Caractéristiques d un module? Expose un contrat versionné Masque ses détails d implémentation Décrit ses dépendances 3

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 4

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 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 6

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 7

La modularité en Java L existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar catalina-6.0.16.jar Servlet Engine ClassLoader 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 8

La modularité en Java L existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar catalina-6.0.16.jar Servlet Engine ClassLoader tomcat-dbcp-6.0.16.jar Web App ClassLoader ec v a S e l i fic ss A f i D Bo J my-service-1.0.jar my-model-1.0.jar hibernate-core-3.3.0.jar jdom-1.0.jar 9

La modularité en Java L existant : les classloaders hiérarchiques rt.jar JVM Classloader jce-provider.jar servlet-api-2.5.jar catalina-6.0.16.jar Servlet Engine ClassLoader tomcat-dbcp-6.0.16.jar Web App ClassLoader ec v a re e l i fic sphe f i D eb W my-service-1.0.jar my-model-1.0.jar hibernate-core-3.3.0.jar jdom-1.0.jar 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 ing g ka t c pa mca e R To 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 11

La modularité en Java L existant : les classloaders hiérarchiques JVM Classloader Servlet Engine ClassLoader Spring-2.5.jar my-service-1.0.jar Web App ClassLoader Impossible my-model-1.0.jar 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! 12

La modularité en Java L 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> <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 13

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 14

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 15

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("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 16

OSGi Alliance L histoire Le fonctionnement OSGi Alliance et le JCP

OSGi Alliance L histoire Consortium créé en 1999 Objectifs initiaux : Java dans le monde embarqué (domotique, Membres : EDF, Siemens, BMW, Ericsson, Nokia, Motorola, Sprint, IBM, SpringSource, Sun, etc Date clefs Besoin d être léger et dynamique dès l origine automobile, telco, etc)»»»» 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 isolation des composants fournis par différents éditeurs 18

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) 19

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 20

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 21

La plateforme OSGI Les bundles Le réseau de classloader

La plateforme Les bundles Unité de déploiement sur la plateforme Un simple jar Les c du ontra Ma inte nife s st 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 23

La plateforme Les bundles Le versionning major.minor.micro.qualifier» 3.4.0.v20080603-2000 [version, version] (version, version) [version, version) 24

La Plateforme Le réseau de ClassLoaders gui-grand-public-1.9 domaine-metier-1.3 dao&cache-1.1 web-services-1.7 domaine-metier-1.2 web-services-1.6 Audit&logs-1.0 Exemple de graphe de modules 25

La Plateforme Le réseau de Class Loaders web-services-1.6 domaine-metier-1.2 Classloader filtrant Audit&logs-1.0 MANIFEST 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 26

La plateforme Le conteneur Environnement d exécution des bundles Standalone ou embarqué Gère le cycle de vie des bundles 27

La plateforme Le cycle de vie des bundles 28

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 29

Assemblage des services OSGI BundleActivator et ServiceTracker Gestion du cycle de vie du Bundle Enregistrement du service Dé-enregistrement implicite du service 30

Assemblage des services OSGI BundleActivator et ServiceTracker Le manifest sert à déclarer le Bundle-Activator Déclaration de l Activator 31

Assemblage des services OSGI BundleActivator et ServiceTracker Gestion du cycle de vie du Bundle Création du ServiceTracker Injection du ServiceTracker Fermeture 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

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! 34

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? 35

Assemblage des services OSGI Declarative Service Créé en 2005 (OSGI R4) Mis à jour via la RFC 134 36

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) 37

Assemblage des services OSGI Spring DM En cours de standardisation pour OSGi R4.2 RFC 124 38

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 39

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 40

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 41

Demo OSGi Description Un service dépend d un backend Un service expose une servlet Les composants utilisent Log4j Upgrade à chaud du service 42

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 43

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 44

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 45

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 46

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 org.osgi.service.http.*-1.2.0 Log4j.properties 47

OSGi dans le monde Java EE Client side Server Side

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 49

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 avec les dépendances des applications Mon Application javax.servlet.* javax.servlet.http.* Servlet 2.4 Container Servlet 2.5 Container Logging Service javax.** EJB 2.1 Container EJB 3.0 Container High Availability Service Messaging Service JMS 1.1 Tx Service JTA 1.0.1B OSGI Container JVM 50

OSGi dans le monde Java EE Server side - Middlewares Websphere 6.1 (2006) est full-osgi Weblogic 10 (2007) utilise 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 Plusieurs jars sont osgi-fiés Glassfish Glassfish démarre sur Equinox et Knopflerfish 51

OSGi dans le monde Java EE Server side - Middlewares Service Mix 4 Spring DM 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 Propose OSGI en alternative à Java EE Autres acteurs Java EE : Jonas, JBoss Ces projets utilisent-ils OSGI basic? ServiceTracker? 52

Bonnes pratiques OSGi Les enjeux d OSGi pour Java EE

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 54

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 55

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 56

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 57

Questions 58

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

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

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