SlideShare une entreprise Scribd logo
1  sur  135
Télécharger pour lire hors ligne
Peter Kriens
                                   OSGi Evangelist




                       OSGi Next
dinsdag 14 juli 2009
OSGi Service Platform
                       Core Specification




dinsdag 14 juli 2009
Planning 4.2

                       • Core released for approval June 10
                       • Working on the final draft for
                           Compendium as we speak
                           • Compendium : July 10
                       •   Enterprise Release Autumn
                       •   Residential Release Spring 2010



dinsdag 14 juli 2009
Legend




dinsdag 14 juli 2009
Legend
                         Bundle
                           A




                         Bundle
                           B




dinsdag 14 juli 2009
Legend
                             Bundle
                               A




                       Service


                             Bundle
                               B




dinsdag 14 juli 2009
Legend
                             Bundle
                               A


                                 getService


                       Service
                                 registerService



                             Bundle
                               B




dinsdag 14 juli 2009
Legend
                             Bundle
                               A


                                 getService

                                                   Bundle
                       Service                       C
                                 registerService



                             Bundle
                               B




dinsdag 14 juli 2009
Legend
                             Bundle
                               A


                                 getService

                                                           Bundle
                       Service        addServiceListener
                                                             C
                                 registerService



                             Bundle
                               B




dinsdag 14 juli 2009
Legend
                                               Bundle
                                                 A


                                                   getService
                       Call/Dependency
                                                                             Bundle
                           Direction
                                         Service        addServiceListener
                                                                               C
                                                   registerService



                                               Bundle
                                                 B




dinsdag 14 juli 2009
Core

                       • Launching
                       • Bundle Tracker
                       • Bundle-License Header
                       • Service Hooks
                       • Negative Permissions

dinsdag 14 juli 2009
Launching

                       • To be inside a framework …
                       • Or outside a framework ...
                       • That’s the question!


dinsdag 14 juli 2009
Launching

                       • Standardizes launching different
                           frameworks
                       •   Will enable generic launchers
                       •   Allows you to embed a framework in your
                           application!




dinsdag 14 juli 2009
Launching
                       Map<String,String> p = new HashMap<String,String>();
                       List<String> impls = getMetaInfServices(
                           loader, FrameworkFactory.class.getName());
                       if (impls.size() != 1)
                             throw new RuntimeException(
                               "Too many frameworks: "+ impls);

                       Class<?> clazz = loader.loadClass(impls.get(0));
                       FrameworkFactory factory = (FrameworkFactory) clazz
                                            .newInstance();

                       Framework fw = factory.newFramework(p);
                       Bundle b = fw.installBundle( “http://.../load/…”);
                       b.start();




dinsdag 14 juli 2009
Bundle Tracker
                       • Simple tool a la Service Tracker to track
                           bundles
                       •   Very useful for extenders
                           • Bundles that provide additional
                             functionality based on data in a bundle
                       •   Tracks a set of states
                           • Handles all concurrency issues


dinsdag 14 juli 2009
Service Hooks

                       • FindHook
                        • Intercept getServiceReference(s)
                       • EventHook
                        • Intercept Service Event delivery
                       • ListenerHook
                        • Find out who is listening to what

dinsdag 14 juli 2009
Service Hooks
                            Bundle
                              A




                            Bundle
                              B


dinsdag 14 juli 2009
Service Hooks
                            Bundle
                              A




                                     Proxy
                                     Bundle




                            Bundle
                              B


dinsdag 14 juli 2009
Service Hooks
                            Bundle
                              A




                                      FindHook   Proxy
                                     EventHook   Bundle




                            Bundle
                              B


dinsdag 14 juli 2009
Service Hooks
                            Bundle
                              A




                                      FindHook   Proxy
                                     EventHook   Bundle




                            Bundle
                              B


dinsdag 14 juli 2009
Service Hooks
                            Bundle
                              A
                                                 ListenerHook




                                      FindHook    Proxy
                                     EventHook    Bundle




                            Bundle
                              B


dinsdag 14 juli 2009
Service Hooks
                            Bundle
                              A
                                                 ListenerHook




                                      FindHook    Proxy
                                     EventHook    Bundle




                            Bundle
                              B


dinsdag 14 juli 2009
Negative Permissions

                       • Java 2 Permissions are only positive
                       • That is, you grant a permission P
                        • PackagePermission(com.acme,IMPORT)
                       • Very hard to say, all permissions except P
                       • Lack of deny permissions

dinsdag 14 juli 2009
Negative Permissions

                 DENY {
                    [...BundleSignerCondition "cn=*, o=ACME" "!" ]
                    (...PackagePermission "com.acme.secret.*"
                          "import,exportonly" )
                 }
                 ALLOW {
                     (...PackagePermission "*" "*" )
                 }




dinsdag 14 juli 2009
Compendium

                       • Initial Provisioning
                       • Bundle Tracker
                       • Declarative Services
                       • Remote Services
                       • Blueprint Extender

dinsdag 14 juli 2009
Remote Services

                       • RFC 119
                       • Formerly Distributed OSGi
                       • Distribution Software uses services to:
                        • Maps a service to/from a remote system
                        • Uses a service to abstract a
                           communication endpoint



dinsdag 14 juli 2009
Remote Services


                          Distribution   Distribution
                           Provider       Provider



                                                         X’



                                                        Bundle
                                                          B



dinsdag 14 juli 2009
Remote Services


                              Distribution   Distribution
                       X       Provider       Provider



                                                             X’



                                                            Bundle
                                                              B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider



                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider



                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider



                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports       imports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports       imports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports       imports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                Distribution   Distribution
                         X       Provider       Provider


                                  exports       imports
                                                               X’



                                                              Bundle
                                                                B



dinsdag 14 juli 2009
Remote Services
                       Bundle
                         A



                                  Distribution   Distribution
                         X         Provider       Provider


                                    exports       imports
                                                                 X’



                                                                Bundle
                                                                  B
                                Framework 1       Framework 2

dinsdag 14 juli 2009
Remote Services
                       • Service Properties define the interaction
                       • Intents specify the required/provided
                           capabilities
                           • Filters used to match
                       •   Service Component Architecture (SCA)
                           • Interaction specified, not mandated
                       •   Flexible configuration options


dinsdag 14 juli 2009
Service Properties
                                              Distribution Provider
                         <other properties>                           <other properties>

                   service.exported.intents

                            service.intents                           service.exported.intents

         service.exported.intents.extra                               service.imported

              service.exported.interfaces                             objectClass

                   service.exported.configs                           service.imported.configs




                       remote.intents.supported
                       remote.configs.supported



                       Framework 1                                           Framework 2


dinsdag 14 juli 2009
Service Properties
                                              Distribution Provider
                         <other properties>                           <other properties>

                   service.exported.intents

                            service.intents                           service.exported.intents

         service.exported.intents.extra                               service.imported

              service.exported.interfaces                             objectClass

                   service.exported.configs                           service.imported.configs




                       remote.intents.supported
                       remote.configs.supported



                       Framework 1                                           Framework 2


dinsdag 14 juli 2009
Service Properties
                                              Distribution Provider
                         <other properties>                           <other properties>

                   service.exported.intents

                            service.intents                           service.exported.intents

         service.exported.intents.extra                               service.imported

              service.exported.interfaces                             objectClass

                   service.exported.configs                           service.imported.configs



                                                   endpoint


                       remote.intents.supported
                       remote.configs.supported



                       Framework 1                                           Framework 2


dinsdag 14 juli 2009
Service Properties
                                              Distribution Provider
                         <other properties>                           <other properties>

                   service.exported.intents

                            service.intents                           service.exported.intents

         service.exported.intents.extra                               service.imported

              service.exported.interfaces                             objectClass

                   service.exported.configs                           service.imported.configs



                                                   endpoint


                       remote.intents.supported
                       remote.configs.supported



                       Framework 1                                           Framework 2


dinsdag 14 juli 2009
Blueprint Extender
                       • RFC 124
                       • Provides Spring DM Functionality
                       • Blueprint Extender uses XML definitions in
                           bundle to create & wire application objects
                       •   Namespace Handler services, not yet :-(
                       •   Provides damping
                           • Proxies services


dinsdag 14 juli 2009
Blueprint Extender


       XML




dinsdag 14 juli 2009
Blueprint Extender


                             Blueprint
       XML
                             Container




dinsdag 14 juli 2009
Blueprint Extender


                             Blueprint
       XML
                             Container




dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata

                         ServiceMetadata

                             Reference
                             Metadata


dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata

                             Reference
                             Metadata


dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata               Service

                             Reference
                             Metadata


dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata               Service

                             Reference
                             Metadata                            Reference


dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata               Service

                             Reference
                             Metadata                            Reference


dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata               Service

                             Reference
                             Metadata                            Reference


dinsdag 14 juli 2009
Blueprint Extender


                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata               Service

                             Reference
                             Metadata                            Reference


dinsdag 14 juli 2009
Blueprint Extender
                                                                             Application
                                                                              Objects




                                           Blueprint
       XML
                                           Container



                       BeanMetadata                Bean

                         ServiceMetadata               Service

                             Reference
                             Metadata                            Reference


dinsdag 14 juli 2009
Metadata




                         Null                   NonNull                                    Props
                       Metadata                 Metadata                                  Metadata




                        IdRef        Value      Component          Collection               Map
                       Metadata     Metadata     Metadata          Metadata               Metadata




                         Ref                                                                Map
                       Metadata                                                             Entry




                        Service
                                                                        Bean              Service
                       Reference                  Target
                                                                       Metadata           Metadata
                       Metadata




                          Ref
                                    Reference                Bean               Bean
                       Collection
                                    Metadata                Property          Argument
                       Metadata




                                                                                         Registration
                       Listener
                                                                                          Listener




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object


                                                 service
                       App          proxy        object


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object


                                                 service
                       App          proxy        object


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object


                                                 service
                       App          proxy        object


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object


                                                 service
                       App          proxy        object


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object


                                                 service
                       App          proxy        object


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object


                                                 service
                       App          proxy        object


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object



                       App          proxy


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object



                       App          proxy


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object



                       App          proxy


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Reference

                                                 service
                                                 object



                       App          proxy


                                                 service
                                                 object




dinsdag 14 juli 2009
Damping Ref-list

                                                service
                                      proxy     object


                                                service
                       App     List   proxy     object


                                                service
                                      proxy     object




dinsdag 14 juli 2009
Enterprise

                       • Transactions
                       • JDBC Database Access
                       • JMX
                       • JNDI
                       • JPA
                       • Connectors

dinsdag 14 juli 2009
Experimental


                       • TSL
                       • Nested Frameworks
                       • OBR


dinsdag 14 juli 2009
TSL

                       • A Tiny Script Language
                        • Feels like a shell
                        • Acts like a script language
                       • Uses reflection, but simplifies syntax
                        • No new commands
                       • Will become Felix project

dinsdag 14 juli 2009
TSL
                                     Telnet   Console            ...
                                      Shell    Shell            Shell


                        OSGi                            Command
                       Convert.                           Shell
                                  Converter
                                                               ThreadIO
                        Eclipse                TSL                            Thread
                       Convert.                Impl                             IO

                                                        *
                        Felix                               osgi.command.name=xxx
                       Convert.                             osgi.command.function=yyy

                                              Frame
                                      Basic                      ...
                                              Work
                                     Cmnds                     Cmnds
                                              Cmnds

dinsdag 14 juli 2009
TSL
                       $ echo Hello World
                       Hello World
                       $ echo <bundle 1>

                 initial@reference:file:org.eclipse.osgi.util_3.1.200.v200
                 70605.jar/ [1]

                       $ ls
                       eclipse
                       eclipse.ini
                       load
                       runner

                       $ ls /Ws
                       aQute
                       felix-trunk
                       osgi
                       osgi-books


dinsdag 14 juli 2009
TSL
                       $ <bundle 6> headers
                       Tool                 Bnd-0.0.169
                       Bundle-Activator     aQute.fileinstall.FileInstall
                       Export-Package        aQute.fileinstall ...
                       Created-By           1.6.0_01 (Sun Microsystems Inc.)
                       Bnd-LastModified     1184160147361
                       Bundle-Version       1.3
                       Bundle-ManifestVersion2
                       Manifest-Version     1.0
                       Import-Package     aQute.fileinstall, ...
                       Bundle-Name          biz.aQute.fileinstall
                       Bundle-Description This bundle watches a ....
                       Bundle-SymbolicName biz.aQute.fileinstall




dinsdag 14 juli 2009
TSL
                       $ help={each <<$it class> declaredmethods> {$it name }}
                       aQute.shell.runtime.Closure@90a284
                       $ help <bundle 6>
                       loadClass
                       getResource
                       ...
                       checkLoader
                       closeBundleLoader
                       getLoaderProxy

                       $ echo $exception
                       E: java.lang.NullPointerException
                       $ echo $exception
                       java.lang.NullPointerException
                       $ $exception printstacktrace
                       $ // the output is temporarily on reall stderr ...




dinsdag 14 juli 2009
Nested Frameworks
                       • Application Server Vendors want scoping of
                           applications …
                       •   Basic Idea OSGi is:
                           • The Application == the set of installed
                             bundles
                       •   Compromise:
                           • All Frameworks to be nested


dinsdag 14 juli 2009
Nested Frameworks
                       System
                       Bundle




                                    Framework P

dinsdag 14 juli 2009
Nested Frameworks
                       System
                       Bundle




                                 Composite
                                Bundle




                                             Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                             Framework C
                       System
                       Bundle




                                 Composite
                                Bundle




                                                Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                      Framework C
                       System
                       Bundle                System
                                             Bundle



                                 Composite
                                Bundle




                                                         Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                          Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle




                                                             Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                          Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle




                                                             Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                          Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle




                                   App
                                  Bundle
                                    A
                                                             Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                          Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle




                                   App
                                  Bundle
                                    A
                                                             Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                          Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle




                                   App
                                  Bundle
                                    A
                                                             Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                            Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle        App
                                                          Bundle
                                                            B




                                   App
                                  Bundle
                                    A
                                                                   Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                            Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle        App
                                                          Bundle
                                                            B




                                   App
                                  Bundle
                                    A
                                                                   Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                            Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle        App
                                                          Bundle
                                                            B




                                   App
                                  Bundle
                                    A
                                                                   Framework P

dinsdag 14 juli 2009
Nested Frameworks
                                                            Framework C
                       System
                       Bundle                  System
                                               Bundle



                                 Composite    Surrogate
                                Bundle       Bundle        App
                                                          Bundle
                                                            B




                                   App
                                  Bundle
                                    A
                                                                   Framework P

dinsdag 14 juli 2009
Java Modularity




dinsdag 14 juli 2009
Java Modularity


                         294
dinsdag 14 juli 2009
Java Modularity


                         294
dinsdag 14 juli 2009
                          7
Java Modularity



                          42
dinsdag 14 juli 2009
Java Modularity




dinsdag 14 juli 2009
Java Modularity




dinsdag 14 juli 2009
Java Modularity




dinsdag 14 juli 2009
Java Modularity




dinsdag 14 juli 2009
Java Modularity




dinsdag 14 juli 2009
Java Modularity


                       module

dinsdag 14 juli 2009
Java Modularity
                       module class Foo {}

                       public class Bar {
                         module int foo() {}
                       }

                       module interface Baz {}




dinsdag 14 juli 2009
Java Modularity

                         Visibility
                             vs
                        Accessibility

dinsdag 14 juli 2009
Visibility

                       Class                Class
                         S                   T




dinsdag 14 juli 2009
Visibility

                       Class                Class
                         S                   T




dinsdag 14 juli 2009
Visibility

                       Class                Class
                         S                   T




dinsdag 14 juli 2009
Visibility

                       Class                Class
                         S                   T




dinsdag 14 juli 2009
Visibility

                       Class                Class
                         S                   T




dinsdag 14 juli 2009
Visibility

                                  Module
                                  System
                       Class                Class
                         S                   T




dinsdag 14 juli 2009
Accessibility

                            public

                           module

                           package

                           private




dinsdag 14 juli 2009
Accessibility


                            Class
                              S




dinsdag 14 juli 2009
Accessibility


                            Class           Class
                              S              T

                                    class




dinsdag 14 juli 2009
Accessibility


                            Class           Class
                              S              T

                                    class



                            Class
                             U
                                            package



dinsdag 14 juli 2009
Accessibility
                                              module
                            Class
                             V




                            Class           Class
                              S              T

                                    class



                            Class
                             U
                                            package



dinsdag 14 juli 2009
Accessibility
                                              module
                            Class
                             V




                            Class           Class
                              S              T

                                    class



                            Class
                             U
                                            package



dinsdag 14 juli 2009
Accessibility
                                                 module
                               Class
                                V




                       Class   Class           Class
                        W        S              T

                                       class



                               Class
                                U
                                               package



dinsdag 14 juli 2009
Is JSR 294 a
 Meta Module System?
     (Implemented by OSGi™, Jigsaw, Guice, …)




dinsdag 14 juli 2009
Is JSR 294 a
 Meta Module System?
     (Implemented by OSGi™, Jigsaw, Guice, …)


                        No Java™
                       Standard for
dinsdag 14 juli 2009
                         Modules!
OSGi Modules: Bundle
                            = Module
                                Bundle

                                   module




dinsdag 14 juli 2009
OSGi Modules: Bundle
                        = Multiple Modules
                                Bundle

                                 module A




                                 module B




dinsdag 14 juli 2009
OSGi Modules:
                  Modules Cross Bundles
                       Bundle A            Bundle B




                                  module




dinsdag 14 juli 2009
OSGi Modules: Nested?

                            Bundle

                           module A


                           module B




dinsdag 14 juli 2009
Module Dependencies
                           Bundle A     Bundle B

                             module A     module B




dinsdag 14 juli 2009
Module Dependencies
                           Bundle A                Bundle B

                             module A                module B
                                        requires


                                        provides


                                        permits




dinsdag 14 juli 2009
Module Dependencies




                                        ?
                           Bundle A                Bundle B

                             module A                module B
                                        requires


                                        provides


                                        permits




dinsdag 14 juli 2009
dinsdag 14 juli 2009
Containers?


                       π     3.14
dinsdag 14 juli 2009
Containers?


                       π
                       JL S    3.14
dinsdag 14 juli 2009
Containers?


                       π
                       JL S    3.14
                                 JV M



dinsdag 14 juli 2009
Containers?




dinsdag 14 juli 2009
Containers?
                       container com.acme




dinsdag 14 juli 2009
Containers?
                       container com.acme
                          module com.acme.foo;




dinsdag 14 juli 2009
Containers?
                       container com.acme
                          module com.acme.foo;
                            module com.acme.foo;
                            module bar;




dinsdag 14 juli 2009
Containers?
                       container com.acme
                          module com.acme.foo;
                            module com.acme.foo;
                            module bar;

                             module com.acme.foo;   module com.acme.foo;
                             module bar;            module fiz;
                             private package one;   public package one;




dinsdag 14 juli 2009
Containers?
                       container com.acme
                          module com.acme.foo;
                            module com.acme.foo;
                            module bar;

                             module com.acme.foo;     module com.acme.foo;
                             module bar;              module fiz;
                             private package one;     public package one;

                               module com.acme.foo;    module com.acme.foo;
                               module bar;             module fiz;
                               package one;            package two;
                               import module fiz;
                               module class A {}       class B {}




dinsdag 14 juli 2009
Q&A



dinsdag 14 juli 2009

Contenu connexe

Plus de mfrancis

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...mfrancis
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)mfrancis
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)mfrancis
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruumfrancis
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...mfrancis
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...mfrancis
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...mfrancis
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)mfrancis
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...mfrancis
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...mfrancis
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...mfrancis
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)mfrancis
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)mfrancis
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)mfrancis
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...mfrancis
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...mfrancis
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)mfrancis
 

Plus de mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Dernier

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Dernier (20)

Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

OSGi Users' Forum UK - OSGi Release 4 v4.2 Spec Overview - Peter Kriens

  • 1. Peter Kriens OSGi Evangelist OSGi Next dinsdag 14 juli 2009
  • 2. OSGi Service Platform Core Specification dinsdag 14 juli 2009
  • 3. Planning 4.2 • Core released for approval June 10 • Working on the final draft for Compendium as we speak • Compendium : July 10 • Enterprise Release Autumn • Residential Release Spring 2010 dinsdag 14 juli 2009
  • 5. Legend Bundle A Bundle B dinsdag 14 juli 2009
  • 6. Legend Bundle A Service Bundle B dinsdag 14 juli 2009
  • 7. Legend Bundle A getService Service registerService Bundle B dinsdag 14 juli 2009
  • 8. Legend Bundle A getService Bundle Service C registerService Bundle B dinsdag 14 juli 2009
  • 9. Legend Bundle A getService Bundle Service addServiceListener C registerService Bundle B dinsdag 14 juli 2009
  • 10. Legend Bundle A getService Call/Dependency Bundle Direction Service addServiceListener C registerService Bundle B dinsdag 14 juli 2009
  • 11. Core • Launching • Bundle Tracker • Bundle-License Header • Service Hooks • Negative Permissions dinsdag 14 juli 2009
  • 12. Launching • To be inside a framework … • Or outside a framework ... • That’s the question! dinsdag 14 juli 2009
  • 13. Launching • Standardizes launching different frameworks • Will enable generic launchers • Allows you to embed a framework in your application! dinsdag 14 juli 2009
  • 14. Launching Map<String,String> p = new HashMap<String,String>(); List<String> impls = getMetaInfServices( loader, FrameworkFactory.class.getName()); if (impls.size() != 1) throw new RuntimeException( "Too many frameworks: "+ impls); Class<?> clazz = loader.loadClass(impls.get(0)); FrameworkFactory factory = (FrameworkFactory) clazz .newInstance(); Framework fw = factory.newFramework(p); Bundle b = fw.installBundle( “http://.../load/…”); b.start(); dinsdag 14 juli 2009
  • 15. Bundle Tracker • Simple tool a la Service Tracker to track bundles • Very useful for extenders • Bundles that provide additional functionality based on data in a bundle • Tracks a set of states • Handles all concurrency issues dinsdag 14 juli 2009
  • 16. Service Hooks • FindHook • Intercept getServiceReference(s) • EventHook • Intercept Service Event delivery • ListenerHook • Find out who is listening to what dinsdag 14 juli 2009
  • 17. Service Hooks Bundle A Bundle B dinsdag 14 juli 2009
  • 18. Service Hooks Bundle A Proxy Bundle Bundle B dinsdag 14 juli 2009
  • 19. Service Hooks Bundle A FindHook Proxy EventHook Bundle Bundle B dinsdag 14 juli 2009
  • 20. Service Hooks Bundle A FindHook Proxy EventHook Bundle Bundle B dinsdag 14 juli 2009
  • 21. Service Hooks Bundle A ListenerHook FindHook Proxy EventHook Bundle Bundle B dinsdag 14 juli 2009
  • 22. Service Hooks Bundle A ListenerHook FindHook Proxy EventHook Bundle Bundle B dinsdag 14 juli 2009
  • 23. Negative Permissions • Java 2 Permissions are only positive • That is, you grant a permission P • PackagePermission(com.acme,IMPORT) • Very hard to say, all permissions except P • Lack of deny permissions dinsdag 14 juli 2009
  • 24. Negative Permissions DENY { [...BundleSignerCondition "cn=*, o=ACME" "!" ] (...PackagePermission "com.acme.secret.*" "import,exportonly" ) } ALLOW { (...PackagePermission "*" "*" ) } dinsdag 14 juli 2009
  • 25. Compendium • Initial Provisioning • Bundle Tracker • Declarative Services • Remote Services • Blueprint Extender dinsdag 14 juli 2009
  • 26. Remote Services • RFC 119 • Formerly Distributed OSGi • Distribution Software uses services to: • Maps a service to/from a remote system • Uses a service to abstract a communication endpoint dinsdag 14 juli 2009
  • 27. Remote Services Distribution Distribution Provider Provider X’ Bundle B dinsdag 14 juli 2009
  • 28. Remote Services Distribution Distribution X Provider Provider X’ Bundle B dinsdag 14 juli 2009
  • 29. Remote Services Bundle A Distribution Distribution X Provider Provider X’ Bundle B dinsdag 14 juli 2009
  • 30. Remote Services Bundle A Distribution Distribution X Provider Provider X’ Bundle B dinsdag 14 juli 2009
  • 31. Remote Services Bundle A Distribution Distribution X Provider Provider X’ Bundle B dinsdag 14 juli 2009
  • 32. Remote Services Bundle A Distribution Distribution X Provider Provider exports X’ Bundle B dinsdag 14 juli 2009
  • 33. Remote Services Bundle A Distribution Distribution X Provider Provider exports X’ Bundle B dinsdag 14 juli 2009
  • 34. Remote Services Bundle A Distribution Distribution X Provider Provider exports X’ Bundle B dinsdag 14 juli 2009
  • 35. Remote Services Bundle A Distribution Distribution X Provider Provider exports X’ Bundle B dinsdag 14 juli 2009
  • 36. Remote Services Bundle A Distribution Distribution X Provider Provider exports imports X’ Bundle B dinsdag 14 juli 2009
  • 37. Remote Services Bundle A Distribution Distribution X Provider Provider exports imports X’ Bundle B dinsdag 14 juli 2009
  • 38. Remote Services Bundle A Distribution Distribution X Provider Provider exports imports X’ Bundle B dinsdag 14 juli 2009
  • 39. Remote Services Bundle A Distribution Distribution X Provider Provider exports imports X’ Bundle B dinsdag 14 juli 2009
  • 40. Remote Services Bundle A Distribution Distribution X Provider Provider exports imports X’ Bundle B Framework 1 Framework 2 dinsdag 14 juli 2009
  • 41. Remote Services • Service Properties define the interaction • Intents specify the required/provided capabilities • Filters used to match • Service Component Architecture (SCA) • Interaction specified, not mandated • Flexible configuration options dinsdag 14 juli 2009
  • 42. Service Properties Distribution Provider <other properties> <other properties> service.exported.intents service.intents service.exported.intents service.exported.intents.extra service.imported service.exported.interfaces objectClass service.exported.configs service.imported.configs remote.intents.supported remote.configs.supported Framework 1 Framework 2 dinsdag 14 juli 2009
  • 43. Service Properties Distribution Provider <other properties> <other properties> service.exported.intents service.intents service.exported.intents service.exported.intents.extra service.imported service.exported.interfaces objectClass service.exported.configs service.imported.configs remote.intents.supported remote.configs.supported Framework 1 Framework 2 dinsdag 14 juli 2009
  • 44. Service Properties Distribution Provider <other properties> <other properties> service.exported.intents service.intents service.exported.intents service.exported.intents.extra service.imported service.exported.interfaces objectClass service.exported.configs service.imported.configs endpoint remote.intents.supported remote.configs.supported Framework 1 Framework 2 dinsdag 14 juli 2009
  • 45. Service Properties Distribution Provider <other properties> <other properties> service.exported.intents service.intents service.exported.intents service.exported.intents.extra service.imported service.exported.interfaces objectClass service.exported.configs service.imported.configs endpoint remote.intents.supported remote.configs.supported Framework 1 Framework 2 dinsdag 14 juli 2009
  • 46. Blueprint Extender • RFC 124 • Provides Spring DM Functionality • Blueprint Extender uses XML definitions in bundle to create & wire application objects • Namespace Handler services, not yet :-( • Provides damping • Proxies services dinsdag 14 juli 2009
  • 47. Blueprint Extender XML dinsdag 14 juli 2009
  • 48. Blueprint Extender Blueprint XML Container dinsdag 14 juli 2009
  • 49. Blueprint Extender Blueprint XML Container dinsdag 14 juli 2009
  • 50. Blueprint Extender Blueprint XML Container BeanMetadata ServiceMetadata Reference Metadata dinsdag 14 juli 2009
  • 51. Blueprint Extender Blueprint XML Container BeanMetadata Bean ServiceMetadata Reference Metadata dinsdag 14 juli 2009
  • 52. Blueprint Extender Blueprint XML Container BeanMetadata Bean ServiceMetadata Service Reference Metadata dinsdag 14 juli 2009
  • 53. Blueprint Extender Blueprint XML Container BeanMetadata Bean ServiceMetadata Service Reference Metadata Reference dinsdag 14 juli 2009
  • 54. Blueprint Extender Blueprint XML Container BeanMetadata Bean ServiceMetadata Service Reference Metadata Reference dinsdag 14 juli 2009
  • 55. Blueprint Extender Blueprint XML Container BeanMetadata Bean ServiceMetadata Service Reference Metadata Reference dinsdag 14 juli 2009
  • 56. Blueprint Extender Blueprint XML Container BeanMetadata Bean ServiceMetadata Service Reference Metadata Reference dinsdag 14 juli 2009
  • 57. Blueprint Extender Application Objects Blueprint XML Container BeanMetadata Bean ServiceMetadata Service Reference Metadata Reference dinsdag 14 juli 2009
  • 58. Metadata Null NonNull Props Metadata Metadata Metadata IdRef Value Component Collection Map Metadata Metadata Metadata Metadata Metadata Ref Map Metadata Entry Service Bean Service Reference Target Metadata Metadata Metadata Ref Reference Bean Bean Collection Metadata Property Argument Metadata Registration Listener Listener dinsdag 14 juli 2009
  • 59. Damping Reference service object service App proxy object service object dinsdag 14 juli 2009
  • 60. Damping Reference service object service App proxy object service object dinsdag 14 juli 2009
  • 61. Damping Reference service object service App proxy object service object dinsdag 14 juli 2009
  • 62. Damping Reference service object service App proxy object service object dinsdag 14 juli 2009
  • 63. Damping Reference service object service App proxy object service object dinsdag 14 juli 2009
  • 64. Damping Reference service object service App proxy object service object dinsdag 14 juli 2009
  • 65. Damping Reference service object App proxy service object dinsdag 14 juli 2009
  • 66. Damping Reference service object App proxy service object dinsdag 14 juli 2009
  • 67. Damping Reference service object App proxy service object dinsdag 14 juli 2009
  • 68. Damping Reference service object App proxy service object dinsdag 14 juli 2009
  • 69. Damping Ref-list service proxy object service App List proxy object service proxy object dinsdag 14 juli 2009
  • 70. Enterprise • Transactions • JDBC Database Access • JMX • JNDI • JPA • Connectors dinsdag 14 juli 2009
  • 71. Experimental • TSL • Nested Frameworks • OBR dinsdag 14 juli 2009
  • 72. TSL • A Tiny Script Language • Feels like a shell • Acts like a script language • Uses reflection, but simplifies syntax • No new commands • Will become Felix project dinsdag 14 juli 2009
  • 73. TSL Telnet Console ... Shell Shell Shell OSGi Command Convert. Shell Converter ThreadIO Eclipse TSL Thread Convert. Impl IO * Felix osgi.command.name=xxx Convert. osgi.command.function=yyy Frame Basic ... Work Cmnds Cmnds Cmnds dinsdag 14 juli 2009
  • 74. TSL $ echo Hello World Hello World $ echo <bundle 1> initial@reference:file:org.eclipse.osgi.util_3.1.200.v200 70605.jar/ [1] $ ls eclipse eclipse.ini load runner $ ls /Ws aQute felix-trunk osgi osgi-books dinsdag 14 juli 2009
  • 75. TSL $ <bundle 6> headers Tool Bnd-0.0.169 Bundle-Activator aQute.fileinstall.FileInstall Export-Package aQute.fileinstall ... Created-By 1.6.0_01 (Sun Microsystems Inc.) Bnd-LastModified 1184160147361 Bundle-Version 1.3 Bundle-ManifestVersion2 Manifest-Version 1.0 Import-Package aQute.fileinstall, ... Bundle-Name biz.aQute.fileinstall Bundle-Description This bundle watches a .... Bundle-SymbolicName biz.aQute.fileinstall dinsdag 14 juli 2009
  • 76. TSL $ help={each <<$it class> declaredmethods> {$it name }} aQute.shell.runtime.Closure@90a284 $ help <bundle 6> loadClass getResource ... checkLoader closeBundleLoader getLoaderProxy $ echo $exception E: java.lang.NullPointerException $ echo $exception java.lang.NullPointerException $ $exception printstacktrace $ // the output is temporarily on reall stderr ... dinsdag 14 juli 2009
  • 77. Nested Frameworks • Application Server Vendors want scoping of applications … • Basic Idea OSGi is: • The Application == the set of installed bundles • Compromise: • All Frameworks to be nested dinsdag 14 juli 2009
  • 78. Nested Frameworks System Bundle Framework P dinsdag 14 juli 2009
  • 79. Nested Frameworks System Bundle Composite Bundle Framework P dinsdag 14 juli 2009
  • 80. Nested Frameworks Framework C System Bundle Composite Bundle Framework P dinsdag 14 juli 2009
  • 81. Nested Frameworks Framework C System Bundle System Bundle Composite Bundle Framework P dinsdag 14 juli 2009
  • 82. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle Framework P dinsdag 14 juli 2009
  • 83. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle Framework P dinsdag 14 juli 2009
  • 84. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle A Framework P dinsdag 14 juli 2009
  • 85. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle A Framework P dinsdag 14 juli 2009
  • 86. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle A Framework P dinsdag 14 juli 2009
  • 87. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle B App Bundle A Framework P dinsdag 14 juli 2009
  • 88. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle B App Bundle A Framework P dinsdag 14 juli 2009
  • 89. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle B App Bundle A Framework P dinsdag 14 juli 2009
  • 90. Nested Frameworks Framework C System Bundle System Bundle Composite Surrogate Bundle Bundle App Bundle B App Bundle A Framework P dinsdag 14 juli 2009
  • 92. Java Modularity 294 dinsdag 14 juli 2009
  • 93. Java Modularity 294 dinsdag 14 juli 2009 7
  • 94. Java Modularity 42 dinsdag 14 juli 2009
  • 100. Java Modularity module dinsdag 14 juli 2009
  • 101. Java Modularity module class Foo {} public class Bar { module int foo() {} } module interface Baz {} dinsdag 14 juli 2009
  • 102. Java Modularity Visibility vs Accessibility dinsdag 14 juli 2009
  • 103. Visibility Class Class S T dinsdag 14 juli 2009
  • 104. Visibility Class Class S T dinsdag 14 juli 2009
  • 105. Visibility Class Class S T dinsdag 14 juli 2009
  • 106. Visibility Class Class S T dinsdag 14 juli 2009
  • 107. Visibility Class Class S T dinsdag 14 juli 2009
  • 108. Visibility Module System Class Class S T dinsdag 14 juli 2009
  • 109. Accessibility public module package private dinsdag 14 juli 2009
  • 110. Accessibility Class S dinsdag 14 juli 2009
  • 111. Accessibility Class Class S T class dinsdag 14 juli 2009
  • 112. Accessibility Class Class S T class Class U package dinsdag 14 juli 2009
  • 113. Accessibility module Class V Class Class S T class Class U package dinsdag 14 juli 2009
  • 114. Accessibility module Class V Class Class S T class Class U package dinsdag 14 juli 2009
  • 115. Accessibility module Class V Class Class Class W S T class Class U package dinsdag 14 juli 2009
  • 116. Is JSR 294 a Meta Module System? (Implemented by OSGi™, Jigsaw, Guice, …) dinsdag 14 juli 2009
  • 117. Is JSR 294 a Meta Module System? (Implemented by OSGi™, Jigsaw, Guice, …) No Java™ Standard for dinsdag 14 juli 2009 Modules!
  • 118. OSGi Modules: Bundle = Module Bundle module dinsdag 14 juli 2009
  • 119. OSGi Modules: Bundle = Multiple Modules Bundle module A module B dinsdag 14 juli 2009
  • 120. OSGi Modules: Modules Cross Bundles Bundle A Bundle B module dinsdag 14 juli 2009
  • 121. OSGi Modules: Nested? Bundle module A module B dinsdag 14 juli 2009
  • 122. Module Dependencies Bundle A Bundle B module A module B dinsdag 14 juli 2009
  • 123. Module Dependencies Bundle A Bundle B module A module B requires provides permits dinsdag 14 juli 2009
  • 124. Module Dependencies ? Bundle A Bundle B module A module B requires provides permits dinsdag 14 juli 2009
  • 126. Containers? π 3.14 dinsdag 14 juli 2009
  • 127. Containers? π JL S 3.14 dinsdag 14 juli 2009
  • 128. Containers? π JL S 3.14 JV M dinsdag 14 juli 2009
  • 130. Containers? container com.acme dinsdag 14 juli 2009
  • 131. Containers? container com.acme module com.acme.foo; dinsdag 14 juli 2009
  • 132. Containers? container com.acme module com.acme.foo; module com.acme.foo; module bar; dinsdag 14 juli 2009
  • 133. Containers? container com.acme module com.acme.foo; module com.acme.foo; module bar; module com.acme.foo; module com.acme.foo; module bar; module fiz; private package one; public package one; dinsdag 14 juli 2009
  • 134. Containers? container com.acme module com.acme.foo; module com.acme.foo; module bar; module com.acme.foo; module com.acme.foo; module bar; module fiz; private package one; public package one; module com.acme.foo; module com.acme.foo; module bar; module fiz; package one; package two; import module fiz; module class A {} class B {} dinsdag 14 juli 2009