3. Caractéristiques principales
Modularisation des applications
Chargement/Déchargement de code dynamique
pour le langage Java
Déploiement dynamique d’applications sans
interruption de la plateforme
Installation, Lancement, Mise à jour, Arrêt, Retrait
No « reboot »
Résolution des dépendances versionnées de code
MIAGE M1 St-Marcel - @VELOSSITY
7. Un marché pour le résidentiel
From Orange Open Home Automation Infrastructure - J.M. Ortholand, A. Bottaro, nov 2011
MIAGE M1 St-Marcel - @VELOSSITY
9. Un peu d’histoire
Mars 1999 : Fondation de l’OSGi Alliance, un consortium
d’industriels
Aujourd’hui, plus de 40 sociétés membres
Au départ une plateforme embarquée pour les passerelles
résidentielles : Open Services Gateway initiative
Plusieurs groupes d’experts:
Core Platform Expert Group (CPEG) – Framework
–
Enterprise Expert Group (EEG) – Enterprise Issues
–
Residential Expert Group (EEG) – Home Automation
Groupes inactifs:
–
Mobile Expert Group (MEG) – Mobile Telephony
–
Vehicle Expert Group (VEG) - Automobile
–
MIAGE M1 St-Marcel - @VELOSSITY
10. Un standard en construction
R4
ei bo M
l
R3
e c he V
l i
R2
uA e m H
o
R1
Framework
Http
Log
Device Access
Package Admin
R2
Configuration Admin
Permission Admin
User Admin
Preferences
MetaType
Service Tracker
2000
From Peter Kriens, aQute
2001
UPnP
Initial Provisioning
Name Space
Jini
Start Level
IO Connector
Wire Admin
XML Parser
Measurement & State
Position
Execution Env.
2003
Application Manager
Foreign App. Access
Signed Bundles
Declarative Services
Device Management
Security Policies
Framework Layering
Initial Provisioning
UPnP
Conditional Permissions
…
2006
MIAGE M1 St-Marcel - @VELOSSITY
11. OSGi R5
Sortie
officielle en juin 2012
Core
Resource API
Version range
Compendium & Enterprise
Repository Service
Resolver Service
Subsystems Service
Service loader Mediator
Common Namespaces
…
MIAGE M1 St-Marcel - @VELOSSITY
12. Fournisseurs de solutions
Equinox
(OSGi-Framework – du projet
Eclipse (Enterprise)
Apache Felix – projet de la communauté R4.3
Apache
Knopflerfish – originellement commercialisé
comme un produit embarqué de Gatespace
ProSyst – Solution commerciale
MIAGE M1 St-Marcel - @VELOSSITY
14. Framework
Architecture du framework
La couche Services offre la
possibilité de mettre à disposition
des services au sein d'une même
machine virtuelle tout en masquant
leurs implémentations à leurs
utilisateurs.
La couche Cycle de vie prend en
charge les états des bundles
Services
Cycle de vie
Module
La couche Module adresse la
gestion du chargement des classes
(classloading), la gestion de leurs
visibilités et de leurs versions dans
chaque bundle.
MIAGE M1 St-Marcel - @VELOSSITY
15. Module
Comment ça marche : le bundle
L’unité
de déploiement: le bundle est le bloc
de légoTM
– Unité de livraison et de déploiement sous
forme de jar
– Une application OSGiTM est un assemblage
de bundles
– Chaque bundle est un isolat
MIAGE M1 St-Marcel - @VELOSSITY
17. Cycle de vie
Déploiement du bundle
Le Framework:
– Lit le manifest du jar
– Installe le code et les ressources
– Résolve les dépendances
– Contrôle le cycle de vie du bundle
– Appelle le Bundle Activator pour démarrer le
bundle
MIAGE M1 St-Marcel - @VELOSSITY
19. Services
Comment ça marche : µSOA
Architecture
orienté service (µServices)
Le service est défini par un contrat
(Service API)
Le fournisseur publie le service
dans le registre
Le service a son propre cycle de
vie, il peut venir et partir à tout
moment
Le consommateur demande un
fournisseur de service au registre, il
peut aussi être notifié de
l’apparition et de la disparition d’un
fournisseur
Le consommateur s’associe au
fournisseur, il invoque le service
Component
Java Interface
Service registry
Service API
Notifies
Publishes
Requests
Binds
Service
Provider
Invoke
Service
Requester
MIAGE M1 St-Marcel - @VELOSSITY
20. Mais où sont les composants?
Le
service ?
Le bundle ?
⇒ Le
framework OSGiTM natif est un framework
à composants primitifs !
⇒ Dynamique
difficile à gérer
⇒ Mélange du code métier et technique
MIAGE M1 St-Marcel - @VELOSSITY
21. Les modèles à composants sur OSGiTM
Plusieurs
approches concurrentes
Basées sur un modèle déclaratif, chaque
composant décrit ce qu’il fournit et ce qu’il
requiert
Abstraction de la dynamicité pour se
concentrer sur le métier
Un composant est déployé dans un bundle
MIAGE M1 St-Marcel - @VELOSSITY
22. Modélisation des composants
cmp Big Picture
REST Connector
RESTAdapter
Device
Business API
Multis ensor
HDDe vice
Field bus
MultiSensorStorage
Database
MultiSensor.storage
ZigbeeFactory
java.sql.Connection
DataStorage
MIAGE M1 St-Marcel - @VELOSSITY
23. Solutions concurrentes
Plusieurs
–
–
–
–
–
approches toutes compatibles:
Le SCR spécifié en 1.4
Blueprint
iPOJO, le préféré des Grenoblois
Dependency Manager
FROGi (Fractal over OSGiTM)
MIAGE M1 St-Marcel - @VELOSSITY
25. OSGiTM : une technologie mature
Modèle à composants déclaratif de haut niveau
Nombreux bundles open-source
–
http://wiki.chameleon.ow2.org/xwiki/bin/view/Main/WebHome
Outils de construction adaptés
–
–
–
Maven: construction de bundles
http://mvnrepository.com/
Nexus: entrepôts de bundles
Jenkins: intégration continue des bundles
http://velossity.zapto.org:8080/
MIAGE M1 St-Marcel - @VELOSSITY
26. OSGiTM : un paradoxe?
MIAGE M1 St-Marcel - @VELOSSITY
27. OSGiTM : un paradoxe?
DZone: How widespread is OSGi in the Java community and what are
your predictions for how adoption will change based on the
introduction of Jigsaw?
Kirk: Fascinating question. Just about every software developer is an
OSGi consumer today because just about every platform and every IDE
use OSGi. The major platform vendors, including IBM, Oracle, and Red
Hat are all using OSGi to build up their platforms. What's interesting is
that OSGi hasn't penetrated the enterprise developer space yet. At
least, it hasn't gone mainstream yet. Some people might complain that
OSGi is too complex. But what they're really saying is that designing
modular software is really really hard. Because it is.
http://java.dzone.com/articles/osgi-vs-jigsaw-kirk
MIAGE M1 St-Marcel - @VELOSSITY
28. OSGiTM : une solution ultime?
At this time, it has been decided to remove OSGi support from
WildFly for various reasons. OSGi support will continue within
our SOA platform. I personally do not view OSGi as a viable
technology but on the other hand it is possible that the winds may
shift and that we may revisit this decision some day. Note that
since we have a flexible low-level core in WildFly, the choice of
specifications to support do not carry down into any kind of basic
architectural lock-in so we're never really "too far" from
supporting any given container specification or component
model, so to me this isn't a terribly drastic choice, just a
pragmatic one based on the current known factors
David Lloyd at https://community.jboss.org/thread/229889?_sscc=t
MIAGE M1 St-Marcel - @VELOSSITY
29. OSGiTM : la concurrence
Jigsaw
+ Java natif, modularisation du JRE intégrée à Java 8?
– Pas encore sorti et éprouvé
Android (http://www.adon-line.de/kunden/prosystBlog/?p=18)
+ Simplicité, modèle d’application
- Communication inter-process, Pas de versionnement
.Net (http://www.aqute.biz/presentations/WhyOSGI.ppt)
+ Managed Extensibility Framework (MEF)
- Pas de standard / Single platform
MIAGE M1 St-Marcel - @VELOSSITY
30. Bibliographie
http://france.osgiusers.org/Main/HomePage
Peter
Kriens –
http://www.aqute.biz/Main/HomePage
Didier Donsez - http://membresliglab.imag.fr/donsez/cours/exemplesosgi/
Cette présentation est à retrouver à l’adresse
http://fr.slideshare.net/saintmar/m1-presentation-os-gi
MIAGE M1 St-Marcel - @VELOSSITY
Notes de l'éditeur
- Le divertissement et la culture ( Home Cinema, son multipièces
, VOD , triple play, …..)
- Sécurité des biens et des personnes ( contrôle d’intrusion,
alertes fuites d’eau, gaz , ….)
- Santé ( surveillance médicale à la maison, à distance,
détection de chutes,….).
- Confort ( commande des appareils électroménagers à
distance, boutons d’ambiance « je lis » , « je regarde la télé »,
télémaintenance, …. )