Warum OSGi
      Christian Baranowski
Willkommen
•   Christian Baranowski

•   Software Qualitätssicherung @ SEITENBAU Gmbh Konstanz (DE)

        •   Custom Software Solutions

        •   E-Government Solutions

        •   Identity Management and SSO Solutions

        •   www.seitenbau.de

•   Vorstand OSGi Users' Forum Germany

    •   Co-lead (mit Jochen Hiller) German Enterprise Working Group.

    •   OSGi Code Camp
OSGi
OSGi




Modularity
 Modules
OSGi




Modularity
 Modules     Lifecycle
OSGi

                            A




                                Service
                            B
Modularity
 Modules     Lifecycle   Services
OSGi

                            A




                                Service
                            B
Modularity
 Modules     Lifecycle   Services
              Security
OSGi
             ist
 ein
 offener
 Standard
 der
 


                                                                                                                                                                                                                     A




                                                                                                                                                                                                                         Service
                                                                                                                                                                                                                     B
Modularity
 Modules                                                                       Lifecycle                                                                                                                          Services
                                                                                        Security
Warum   OSGi?
Erweiterbarkeit / Plugins
Erweiterbarkeit / Plugins


Firefox                Eclipse             Maven




          Spring Roo             Jenkins
Bundle



  JAR
Bundle
Private
 Packages




                  JAR
Bundle
Private
 Packages

                                                    Exported
 
                                                    Packages


                  JAR
Bundle
                                             Private
 Packages

Imported
                                                        Exported
 
Packages                                                                                         Packages


                                                               JAR
Modul Level

Funktionen   Klassen   Packages
Modul Level

Funktionen   Klassen   Packages   Bundles
Bundles
Bundles
                A
Provider
 Bundle
Bundles
                            A
            Provider
 Bundle




Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: A
Bundle-Version: 1.0.1
Export-Package:
 echo.api;version=1.0.0,
 echo.sysout;version=1.0.0
Bundles
                            A                                                                B
            Provider
 Bundle             Consumer
 Bundle




Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: A
Bundle-Version: 1.0.1
Export-Package:
 echo.api;version=1.0.0,
 echo.sysout;version=1.0.0
Bundles
                            A                                                                B
            Provider
 Bundle             Consumer
 Bundle




Manifest-Version: 1.0                                              Manifest-Version: 1.0
Bundle-ManifestVersion: 2                                          Bundle-ManifestVersion: 2
Bundle-SymbolicName: A                                             Bundle-SymbolicName: B
Bundle-Version: 1.0.1                                              Bundle-Version: 1.0.0
Export-Package:                                                    Import-Package:
 echo.api;version=1.0.0,                                          echo.api;version=[1.0,2),
 echo.sysout;version=1.0.0                                        echo.sysout;version=[1.0,2)
Demo Modularity / Lifecycle

                 Extender       World        Desktop


             Box
                                           API
          Arch

                            Provisioning
OSGi Services
OSGi Services



          API
 Bundle




  Manifest-Version: 1.0
  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: api
  Bundle-Version: 2.0.0
  Export-Package:
    echo.api;version=1.0.0
OSGi Services
                 Provider
 Bundle                   Service




Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: A
Bundle-Version: 1.0.1
                                                                            API
 Bundle
Import-Package:
	   echo.api;version=[1.0,2)
Service-Component:
	   OSGI-INF/EchoProvider.xml



                                                                    Manifest-Version: 1.0
                                                                    Bundle-ManifestVersion: 2
                                                                    Bundle-SymbolicName: api
                                                                    Bundle-Version: 2.0.0
                                                                    Export-Package:
                                                                      echo.api;version=1.0.0
OSGi Services
                 Provider
 Bundle                                                         Consumer
 Bundle
                                                                                    Service




Manifest-Version: 1.0                                                                                                     Manifest-Version: 1.0
Bundle-ManifestVersion: 2                                                                                                 Bundle-ManifestVersion: 2
Bundle-SymbolicName: A                                                                                                    Bundle-SymbolicName: B
Bundle-Version: 1.0.1                                                                                                     Bundle-Version: 1.0.0
                                                                            API
 Bundle   Import-Package:
Import-Package:
	   echo.api;version=[1.0,2)                                                                                            	   echo.api;version=[1.0,2)
Service-Component:                                                                                                        Service-Component:
	   OSGI-INF/EchoProvider.xml                                                                                             	   OSGI-INF/EchoClient.xml



                                                                    Manifest-Version: 1.0
                                                                    Bundle-ManifestVersion: 2
                                                                    Bundle-SymbolicName: api
                                                                    Bundle-Version: 2.0.0
                                                                    Export-Package:
                                                                      echo.api;version=1.0.0
OSGi Services
                 Provider
 Bundle                                                                 Consumer
 Bundle
                                                                                            Service



                                                                      Instance
 Coupling
Manifest-Version: 1.0                                                                                                             Manifest-Version: 1.0
Bundle-ManifestVersion: 2                                                                                                         Bundle-ManifestVersion: 2
Bundle-SymbolicName: A                                                                                                            Bundle-SymbolicName: B
Bundle-Version: 1.0.1                                                                                                             Bundle-Version: 1.0.0
                                                                                    API
 Bundle   Import-Package:
Import-Package:
	   echo.api;version=[1.0,2)                                                                                                    	   echo.api;version=[1.0,2)
Service-Component:                                                                                                                Service-Component:
	   OSGI-INF/EchoProvider.xml                                                                                                     	   OSGI-INF/EchoClient.xml



                                                                    Manifest-Version: 1.0
                                                                    Bundle-ManifestVersion: 2
                                                                    Bundle-SymbolicName: api
                                                                    Bundle-Version: 2.0.0
                                                                    Export-Package:
                                                                      echo.api;version=1.0.0
Service Registry

        Provider



                                                    Name          Value
                                                     type        api.Echo
               - register                         availavility       5
               - unregister
                                                                            Consumer
  Name          Value                            - get
                                                 - listen
   type        api.Echo
availavility       5          Service Registry
     ...           ...
OSGi Services Demo

                World             Desktop



                             API
 Wall


                        Sensor
        Robot
                        devices
OSGi Declarative Services



           API
 Bundle
OSGi Declarative Services
                    Provider

Warum OSGi?