SlideShare a Scribd company logo
1 of 127
Download to read offline
OSGi &
                         Java Modularity

                                Jazoon 2009, Zürich

                                by Peter Kriens




donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Productivity




                         Application Complexity


donderdag 25 juni 2009
Productivity




                         Assembly




                         Application Complexity


donderdag 25 juni 2009
Productivity




                                     Structured
                                    Programming


                         Assembly




                         Application Complexity


donderdag 25 juni 2009
Productivity




                                     Structured   Object Oriented Programming
                                    Programming


                         Assembly




                         Application Complexity


donderdag 25 juni 2009
Productivity




                                    Service Oriented Programming?



                                     Structured   Object Oriented Programming
                                    Programming


                         Assembly




                         Application Complexity


donderdag 25 juni 2009
donderdag 25 juni 2009
Application




donderdag 25 juni 2009
Extensions

                                        Application

                                      Application
                                                Convenience
                         Foundation     Basic         Something
                                                      Core
                                            Java VM




donderdag 25 juni 2009
minilang      party        pos.           product         workeffort     workflow           …

                         accounting   assetmaint   content   Extensionsbi              ebay        ecommerce     googlebase

                          guiapp      hhfacility   manufact.       marketing          minerva         oagis         order



                                                             Application
                                                                Application layer

                          common       catalina      base           datafile           entity        widget           …




                                                   Application
                                                             Convenience
                          resolver      rome       serializer       servlets          tomcat          xalan          bsf

                            mail        mx4j        naming            jetty             poi          wsdl4j          bsh


                         Foundation                         Basic                               Something
                           jenks        jpos18      jython           looks            lucene         xerces        velocity

                          jakarta         jcl        json            jdbm              jdom         xmlapis      ws-commons


                                                                                              Core
                           log4j      barcode4j      axis            batik           commons         xmlrpc       geronimo

                          httpunit    freemarker   ezmorph            fop              derby       xmlgraphics
                                                                                                                  Libs..

                                                                    Java VM
                                                                    Java VM
                             rt          jce         jsse            plugin         sunjce_prov.     dnsns            ..




donderdag 25 juni 2009
minilang      party        pos.           product         workeffort     workflow           …

                         accounting   assetmaint   content   Extensionsbi              ebay        ecommerce     googlebase

                          guiapp      hhfacility   manufact.       marketing          minerva         oagis         order



                                                             Application
                                                                Application layer

                          common       catalina      base           datafile           entity        widget           …




                                                   Application
                                                             Convenience
                          resolver      rome       serializer       servlets          tomcat          xalan          bsf

                            mail        mx4j        naming            jetty             poi          wsdl4j          bsh


                         Foundation                         Basic                               Something
                           jenks        jpos18      jython           looks            lucene         xerces        velocity

                          jakarta         jcl        json            jdbm              jdom         xmlapis      ws-commons


                                                                                              Core
                           log4j      barcode4j      axis            batik           commons         xmlrpc       geronimo

                          httpunit    freemarker   ezmorph            fop              derby       xmlgraphics
                                                                                                                  Libs..

                                                                    Java VM
                                                                    Java VM
                             rt          jce         jsse            plugin         sunjce_prov.     dnsns            ..




donderdag 25 juni 2009
by Damoiselle de Pique
donderdag 25 juni 2009
Was Pollock
                         an Early OO
                         Programmer?

                                       by Damoiselle de Pique
donderdag 25 juni 2009
donderdag 25 juni 2009
modularity

donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
low coupling,



donderdag 25 juni 2009
low coupling,
                   high cohesion &


donderdag 25 juni 2009
low coupling,
                   high cohesion &
                    encapsulation
donderdag 25 juni 2009
donderdag 25 juni 2009
How Do We
             Handle This
             Complexity
               in Java?


donderdag 25 juni 2009
donderdag 25 juni 2009
Visibility
                              vs
                         Accessibility



donderdag 25 juni 2009
Visibility



                         Class   Class
                           S      T




donderdag 25 juni 2009
Visibility



                         Class   Class
                           S      T




donderdag 25 juni 2009
Visibility



                         Class   Class
                           S      T




donderdag 25 juni 2009
Visibility



                         Class   Class
                           S      T




donderdag 25 juni 2009
Visibility


                                 Module
                                 System
                         Class            Class
                           S               T




donderdag 25 juni 2009
Hierarchical Class
                Loaders
                                boot

                                ext


                         app           app

                         cust

donderdag 25 juni 2009
Hierarchical Class
                Loaders
                                boot

                                ext


                         app           app
                                             visibility

                         cust

donderdag 25 juni 2009
Context Class Loaders

                                       boot

                         X {}          ext


                                app           app

                         Y {}   cust

donderdag 25 juni 2009
Context Class Loaders

                                                  boot

                                    X {}          ext

                Thread -> Context
                   ClassLoader             app           app

                                    Y {}   cust

donderdag 25 juni 2009
Context Class Loaders

                                                  boot

                                    X {}          ext

                Thread -> Context
                   ClassLoader             app           app

                                    Y {}   cust

donderdag 25 juni 2009
Accessibility


                                public

                                module

                                package

                                private




donderdag 25 juni 2009
Accessibility

                                 Class           module
                                  V




                         Class   Class            Class
                          W        S               T
                                         class

                                 Class
                                  U
                                             package


donderdag 25 juni 2009
Java VM         party      common       resolver      axis        xerces

 Begin                        rt        assetmaint     catalina      mail      ezmorph       xmlapis

                             jce         hhfacility     base        jenks       servlets     xmlrpc
 Here                        jsse          pos.        datafile     jakarta      jetty     xmlgraphics

                            plugin       content        entity      log4j        looks

                         sunjce_prov.   manufact.      widget      httpunit      jdbm

                            dnsns        product          …          mx4j         bsf

                              ..            bi          rome        batik         bsh

                          marketing      workflow      jpos18        fop        velocity

                          workeffort    ecommerce        jcl        tomcat    ws-commons

                            ebay           oagis      barcode4j      poi       geronimo

                           minerva          …         freemarker    lucene         ..

                          minilang      googlebase    serializer    jdom         json

                         accounting        order       naming      commons       xalan

                           guiapp          ofbiz        jython      derby       wsdl4j




donderdag 25 juni 2009
Java VM         party      common       resolver      axis         xerces

 Begin                        rt        assetmaint     catalina      mail      ezmorph        xmlapis

                             jce         hhfacility     base        jenks       servlets      xmlrpc
 Here                        jsse          pos.        datafile     jakarta      jetty      xmlgraphics

                            plugin       content        entity      log4j        looks

                         sunjce_prov.   manufact.      widget      httpunit      jdbm

                            dnsns        product          …          mx4j         bsf

                              ..            bi          rome        batik         bsh
                                                                                             Class
                          marketing      workflow      jpos18        fop        velocity
                                                                                              Not
                          workeffort    ecommerce        jcl        tomcat    ws-commons
                                                                                            Found
                            ebay           oagis      barcode4j      poi       geronimo
                                                                                           Exception
                           minerva          …         freemarker    lucene         ..

                          minilang      googlebase    serializer    jdom         json

                         accounting        order       naming      commons       xalan

                           guiapp          ofbiz        jython      derby       wsdl4j




donderdag 25 juni 2009
Split Packages
                         JARs   A



                         2      B




                                C

                                import   private   export



donderdag 25 juni 2009
Split Packages
                                    package com.foo: X, Y
                         JARs   A

                                    package com.foo: X, Y, Z


                         2      B


                                    package com.foo: X, Y, Z


                                C

                                import        private       export



donderdag 25 juni 2009
Split Packages
                                    package com.foo: X, Y
                         JARs   A

                                    package com.foo: X, Y, Z


                         2      B


                                    package com.foo: X, Y, Z


                                C

                                import        private       export



donderdag 25 juni 2009
Split Packages
                                    package com.foo: X, Y
                         JARs   A

                                    package com.foo: X, Y, Z


                         2      B


                                    package com.foo: X, Y, Z


                                C

                                import        private       export



donderdag 25 juni 2009
Versioning
                             JARs
                                 package com.foo: X, Y

                             A

                                 package com.foo: X, Z


                         2   B


                                 package com.foo: X, Y, Z


                             C

                             import        private          export



donderdag 25 juni 2009
Versioning
                             JARs
                                 package com.foo: X, Y

                             A   package com.bar: A,B,C;1.0




                                 package com.foo: X, Z


                         2   B   package com.bar: A;2.0




                                 package com.foo: X, Y, Z


                             C   package com.bar: A,B,C;2.0




                             import        private          export



donderdag 25 juni 2009
Versioning
                             JARs
                                 package com.foo: X, Y

                             A   package com.bar: A,B,C;1.0




                                 package com.foo: X, Z


                         2   B   package com.bar: A;2.0




                                 package com.foo: X, Y, Z


                             C   package com.bar: A,B,C;2.0




                             import        private          export



donderdag 25 juni 2009
Private Packages
                                    package com.foo: X, Y
                         JARs   A   package com.bar: A,B,C;1.0




                                    package com.foo: X, Z


                         2      B   package com.bar: A;2.0




                                    package com.foo: X, Y, Z


                                C   package com.bar: A,B,C;2.0




                                import        private          export




donderdag 25 juni 2009
Private Packages
                                    package com.foo: X, Y
                         JARs   A   package com.bar: A,B,C;1.0




                                    package com.foo: X, Z


                         2      B   package com.bar: A;2.0

                                    package com.private: G




                                    package com.foo: X, Y, Z


                                C   package com.bar: A,B,C;2.0

                                    package com.private: G,H,I


                                import        private          export




donderdag 25 juni 2009
Private Packages
                                    package com.foo: X, Y
                         JARs   A   package com.bar: A,B,C;1.0




                                    package com.foo: X, Z


                         2      B   package com.bar: A;2.0

                                    package com.private: G




                                    package com.foo: X, Y, Z


                                C   package com.bar: A,B,C;2.0

                                    package com.private: G,H,I


                                import        private          export




donderdag 25 juni 2009
How Do We
             Handle This
             Complexity
               in Java?


donderdag 25 juni 2009
We Don’t ...



donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Applications                      S
                 (bundles)                        E
                                       Service
                                                  C
                                                  U
                                     Life Cycle
                                                  R
                                                  I
                                       Module     T
                                                  Y
                         Execution Environment

                                      OS + Hardware
donderdag 25 juni 2009
Execution Environment



donderdag 25 juni 2009
donderdag 25 juni 2009
CLDC/
                                  MIDP




                                          OSGi
                                          Min.



                                                 J2SE 1.3, 1.4,
                                                 5, 6, ...
                         CDC/FP




donderdag 25 juni 2009
Kim Scarborough
donderdag 25 juni 2009
Module Layer



donderdag 25 juni 2009
Import, Export, Private
                              Bundle A
                                                     Bundle B



                                  p                    p

                               q-1.4               q-[1.2,1.8)
                              Bundle A
                                  r                     r




                                                            .



                               import    private     export




donderdag 25 juni 2009
Import, Export, Private
                              Bundle A
                                                      Bundle B


                                         imports
                                  p                     p

                               q-1.4                q-[1.2,1.8)
                              Bundle A
                                  r                      r




                                                             .



                               import     private     export




donderdag 25 juni 2009
Import, Export, Private
                              Bundle A
                                                      Bundle B


                                         imports
                                  p                     p
                                         exports
                               q-1.4                q-[1.2,1.8)
                              Bundle A
                                  r                      r




                                                             .



                               import     private     export




donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Uses Constraints
                           Bundle A              Bundle B


                             r;1.0                r;2.0

                               p                    p

                            q-1.4               q-[1.2,1.8)




                           Bundle C             Bundle D


                             r;1.0                r;2.0




                             import   private     export


donderdag 25 juni 2009
Uses Constraints
                           Bundle A               Bundle B


                             r;1.0                 r;2.0
                                      imports
                               p                     p

                            q-1.4                q-[1.2,1.8)




                           Bundle C              Bundle D


                             r;1.0                 r;2.0




                             import    private     export


donderdag 25 juni 2009
Uses Constraints
                           Bundle A               Bundle B


                             r;1.0                 r;2.0
                                      imports
                               p                     p
                                      exports
                            q-1.4                q-[1.2,1.8)




                           Bundle C              Bundle D


                             r;1.0                 r;2.0




                             import    private     export


donderdag 25 juni 2009
Uses Constraints
                           Bundle A               Bundle B


                             r;1.0                 r;2.0
                                      imports
                               p                     p
                                      exports
                            q-1.4                q-[1.2,1.8)




                           Bundle C              Bundle D


                             r;1.0                 r;2.0




                             import    private     export


donderdag 25 juni 2009
System
                            Loader


                          Extension
                           Loader


            Application B
              Loader


                 Custom
                 Loader




donderdag 25 juni 2009
System
                            Loader


                          Extension
                           Loader


            Application B             OSGi
              Loader


                 Custom
                 Loader




donderdag 25 juni 2009
System
                            Loader                           Bundle A

                          Extension               Bundle G              Bundle B
                           Loader

                                                                OSGi          Bundle C
            Application B             Framework
              Loader                    Loader
                                                  Bundle F              Bundle D
                 Custom
                 Loader
                                                             Bundle E




donderdag 25 juni 2009
donderdag 25 juni 2009
Life Cycle Layer



donderdag 25 juni 2009
INSTALLED    STARTING




                          RESOLVED      ACTIVE




                         UNINSTALLED   STOPPING




donderdag 25 juni 2009
MANAGE-
                                           System
                                                              MENT
                                           bundle
                                                             BUNDLE




                         Bundle
                          X-v2
                           X




                                                    Bundle
                                  Bundle              B
                                    A




donderdag 25 juni 2009
Service Layer



donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Services
                                                defined in
                                             interface/class




                         Bundle   register                       get   Bundle
                           A                                             B



                                                        notify




donderdag 25 juni 2009
Services

                                         interface Foo {
                                            void foo();
                                         }
                         void foo() {                      …
                         …                                 s.foo()
                         }                                 …




donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Services Solve
                   Class Loader
                    Problems!
donderdag 25 juni 2009
donderdag 25 juni 2009
Security



donderdag 25 juni 2009
donderdag 25 juni 2009
Real Code!



donderdag 25 juni 2009
donderdag 25 juni 2009
package com.acme;
               import org.osgi.framework.*;
               public class HelloWorld extends BundleActivator {
                 public void start(BundleContext context) {
                     System.out.println(“Hello World”);
                 }
                 public void stop(BundleContext context) {
                     System.out.println(“Goodbye World”);
                 }
               }

               ---------------------------------------------

               Manifest: 1.0
               Bundle-Activator: com.acme.HelloWorld
               Import-Package: org.osgi.framework;version=1.3




donderdag 25 juni 2009
Bundles are active entities in runtime




donderdag 25 juni 2009
donderdag 25 juni 2009
294
donderdag 25 juni 2009
294
                          7
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Is JSR 294 a
 Meta Module System?
     (Implemented by OSGi™, Jigsaw, Guice, …)




donderdag 25 juni 2009
Is JSR 294 a
 Meta Module System?
     (Implemented by OSGi™, Jigsaw, Guice, …)


                          No Java™
                         Standard for
donderdag 25 juni 2009
                           Modules!
donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
Legacy




donderdag 25 juni 2009
Class
             .forName
donderdag 25 juni 2009
Class
             .forName
donderdag 25 juni 2009
donderdag 25 juni 2009
Bloat?
donderdag 25 juni 2009
Accidental
                         Complexity

donderdag 25 juni 2009
‘97   ‘98   ‘99   ‘00   ‘01   ‘02   ‘03   ‘04   ‘05   ‘06   ‘07   ‘08   ‘09   ‘10




donderdag 25 juni 2009
‘97   ‘98   ‘99   ‘00   ‘01   ‘02   ‘03   ‘04   ‘05   ‘06   ‘07   ‘08   ‘09   ‘10




donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
bundle
                                       A-1.2




                                  c                b




                                                       bundle
                                                        C-1.0
                         bundle                a
                          B-4.1




donderdag 25 juni 2009
donderdag 25 juni 2009
donderdag 25 juni 2009
The Component
            Framework
donderdag 25 juni 2009
donderdag 25 juni 2009
Q&A
donderdag 25 juni 2009
Thanks!

donderdag 25 juni 2009

More Related Content

What's hot

03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training Book03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training BookChuong Nguyen
 
PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?Tonny Madsen
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishArun Gupta
 
Websphere Application Server: Much more than Open Source
Websphere Application Server: Much more than Open SourceWebsphere Application Server: Much more than Open Source
Websphere Application Server: Much more than Open SourceIBM WebSphereIndia
 
CRX Best practices
CRX Best practicesCRX Best practices
CRX Best practiceslisui0807
 
Davoxx 2012 - 'JMS 2.0 Update'
Davoxx 2012 - 'JMS 2.0 Update'Davoxx 2012 - 'JMS 2.0 Update'
Davoxx 2012 - 'JMS 2.0 Update'C2B2 Consulting
 
Incremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation frameworkIncremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation frameworkIstvan Rath
 
Vmware management-with-vcli-5.0
Vmware management-with-vcli-5.0Vmware management-with-vcli-5.0
Vmware management-with-vcli-5.0Sathishkumar A
 
Eb07 Day Communiqué Web Content Management En
Eb07 Day Communiqué Web Content Management EnEb07 Day Communiqué Web Content Management En
Eb07 Day Communiqué Web Content Management EnValtech
 
Airbus Internship Presentation 2012
Airbus Internship Presentation 2012Airbus Internship Presentation 2012
Airbus Internship Presentation 2012Paveen Juntama
 
The OSGi Framework Multiplication
The OSGi Framework MultiplicationThe OSGi Framework Multiplication
The OSGi Framework MultiplicationClément Escoffier
 
5장. Execution Engine
5장. Execution Engine5장. Execution Engine
5장. Execution Engine김 한도
 

What's hot (12)

03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training Book03.egovFrame Runtime Environment Training Book
03.egovFrame Runtime Environment Training Book
 
PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?PROSA - Eclipse Is Just What?
PROSA - Eclipse Is Just What?
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFish
 
Websphere Application Server: Much more than Open Source
Websphere Application Server: Much more than Open SourceWebsphere Application Server: Much more than Open Source
Websphere Application Server: Much more than Open Source
 
CRX Best practices
CRX Best practicesCRX Best practices
CRX Best practices
 
Davoxx 2012 - 'JMS 2.0 Update'
Davoxx 2012 - 'JMS 2.0 Update'Davoxx 2012 - 'JMS 2.0 Update'
Davoxx 2012 - 'JMS 2.0 Update'
 
Incremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation frameworkIncremental pattern matching in the VIATRA2 model transformation framework
Incremental pattern matching in the VIATRA2 model transformation framework
 
Vmware management-with-vcli-5.0
Vmware management-with-vcli-5.0Vmware management-with-vcli-5.0
Vmware management-with-vcli-5.0
 
Eb07 Day Communiqué Web Content Management En
Eb07 Day Communiqué Web Content Management EnEb07 Day Communiqué Web Content Management En
Eb07 Day Communiqué Web Content Management En
 
Airbus Internship Presentation 2012
Airbus Internship Presentation 2012Airbus Internship Presentation 2012
Airbus Internship Presentation 2012
 
The OSGi Framework Multiplication
The OSGi Framework MultiplicationThe OSGi Framework Multiplication
The OSGi Framework Multiplication
 
5장. Execution Engine
5장. Execution Engine5장. Execution Engine
5장. Execution Engine
 

Viewers also liked

Intro to Programming: Modularity
Intro to Programming: ModularityIntro to Programming: Modularity
Intro to Programming: ModularityNicole Ryan
 
The connective tissue of creativity
The connective tissue of creativityThe connective tissue of creativity
The connective tissue of creativityRandall Snare
 
Modularity - What are we talking about?
Modularity - What are we talking about?Modularity - What are we talking about?
Modularity - What are we talking about?Brunel University
 
OSGi in the Enterprise: Agility, Modularity, and Architecture's Paradox
OSGi in the Enterprise: Agility, Modularity, and Architecture's ParadoxOSGi in the Enterprise: Agility, Modularity, and Architecture's Paradox
OSGi in the Enterprise: Agility, Modularity, and Architecture's Paradoxpragkirk
 
Modularity and Layered Data Model
Modularity and Layered Data ModelModularity and Layered Data Model
Modularity and Layered Data ModelAttila Jenei
 
Modularity and evolvability
Modularity and evolvabilityModularity and evolvability
Modularity and evolvabilitypedrobeltrao
 
Modularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sistersModularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sistersClément Escoffier
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Martin Toshev
 

Viewers also liked (8)

Intro to Programming: Modularity
Intro to Programming: ModularityIntro to Programming: Modularity
Intro to Programming: Modularity
 
The connective tissue of creativity
The connective tissue of creativityThe connective tissue of creativity
The connective tissue of creativity
 
Modularity - What are we talking about?
Modularity - What are we talking about?Modularity - What are we talking about?
Modularity - What are we talking about?
 
OSGi in the Enterprise: Agility, Modularity, and Architecture's Paradox
OSGi in the Enterprise: Agility, Modularity, and Architecture's ParadoxOSGi in the Enterprise: Agility, Modularity, and Architecture's Paradox
OSGi in the Enterprise: Agility, Modularity, and Architecture's Paradox
 
Modularity and Layered Data Model
Modularity and Layered Data ModelModularity and Layered Data Model
Modularity and Layered Data Model
 
Modularity and evolvability
Modularity and evolvabilityModularity and evolvability
Modularity and evolvability
 
Modularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sistersModularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sisters
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
 

Similar to OSGi and Java Modularity

OSGi Service Platform 4.2
OSGi Service Platform 4.2OSGi Service Platform 4.2
OSGi Service Platform 4.2Ilya Katsov
 
Workshop OSGI PPT
Workshop OSGI PPTWorkshop OSGI PPT
Workshop OSGI PPTSummer Lu
 
Live Integration Framework
Live Integration FrameworkLive Integration Framework
Live Integration Frameworktmra
 
When Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the EnterpriseWhen Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the Enterprisebenbrowning
 
Mozilla In Malaysia
Mozilla In MalaysiaMozilla In Malaysia
Mozilla In MalaysiaGen Kanai
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Alexandre Morgaut
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache CamelFuseSource.com
 
Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architectureRamnivas Laddad
 
We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell
We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshellWe4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell
We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshellWe4IT Group
 
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5David Nuescheler
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouJohn Pape
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009Stefane Fermigier
 
10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFish10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFishNuxeo
 
Ese2008 Swordfish
Ese2008 SwordfishEse2008 Swordfish
Ese2008 Swordfishwwtyler
 
Jazoon 2011 - Smart EAI with Apache Camel
Jazoon 2011 - Smart EAI with Apache CamelJazoon 2011 - Smart EAI with Apache Camel
Jazoon 2011 - Smart EAI with Apache CamelKai Wähner
 
OSGi DevCon US 2010 Review
OSGi DevCon US 2010 ReviewOSGi DevCon US 2010 Review
OSGi DevCon US 2010 Reviewmfrancis
 
Alfresco day madrid jeff potts - activiti
Alfresco day madrid   jeff potts - activitiAlfresco day madrid   jeff potts - activiti
Alfresco day madrid jeff potts - activitiAlfresco Software
 
Alfresco Day Madrid - Jeff Potts - Activiti
Alfresco Day Madrid - Jeff Potts - ActivitiAlfresco Day Madrid - Jeff Potts - Activiti
Alfresco Day Madrid - Jeff Potts - ActivitiToni de la Fuente
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A GlanceStefan Christoph
 

Similar to OSGi and Java Modularity (20)

OSGi Service Platform 4.2
OSGi Service Platform 4.2OSGi Service Platform 4.2
OSGi Service Platform 4.2
 
Workshop OSGI PPT
Workshop OSGI PPTWorkshop OSGI PPT
Workshop OSGI PPT
 
Live Integration Framework
Live Integration FrameworkLive Integration Framework
Live Integration Framework
 
When Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the EnterpriseWhen Two Worlds Collide: Java and Ruby in the Enterprise
When Two Worlds Collide: Java and Ruby in the Enterprise
 
Mozilla In Malaysia
Mozilla In MalaysiaMozilla In Malaysia
Mozilla In Malaysia
 
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
Wakanda: NoSQL for Model-Driven Web applications - NoSQL matters 2012
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architecture
 
We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell
We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshellWe4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell
We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell
 
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
Valtech Days 2009 Paris Presentation: WCM in 2010 and an intro to CQ5
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell You
 
What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009What's new in Nuxeo 5.2? - Solutions Linux 2009
What's new in Nuxeo 5.2? - Solutions Linux 2009
 
10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFish10 reasons why Nuxeo is using GlassFish
10 reasons why Nuxeo is using GlassFish
 
Ese2008 Swordfish
Ese2008 SwordfishEse2008 Swordfish
Ese2008 Swordfish
 
Jazoon 2011 - Smart EAI with Apache Camel
Jazoon 2011 - Smart EAI with Apache CamelJazoon 2011 - Smart EAI with Apache Camel
Jazoon 2011 - Smart EAI with Apache Camel
 
OSGi DevCon US 2010 Review
OSGi DevCon US 2010 ReviewOSGi DevCon US 2010 Review
OSGi DevCon US 2010 Review
 
Alfresco day madrid jeff potts - activiti
Alfresco day madrid   jeff potts - activitiAlfresco day madrid   jeff potts - activiti
Alfresco day madrid jeff potts - activiti
 
Alfresco Day Madrid - Jeff Potts - Activiti
Alfresco Day Madrid - Jeff Potts - ActivitiAlfresco Day Madrid - Jeff Potts - Activiti
Alfresco Day Madrid - Jeff Potts - Activiti
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A Glance
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 

Recently uploaded

UX Conference on UX Research Trends in 2024
UX Conference on UX Research Trends in 2024UX Conference on UX Research Trends in 2024
UX Conference on UX Research Trends in 2024mikailaoh
 
Production of Erythromycin microbiology.pptx
Production of Erythromycin microbiology.pptxProduction of Erythromycin microbiology.pptx
Production of Erythromycin microbiology.pptxb2kshani34
 
Embroidery design from embroidery magazine
Embroidery design from embroidery magazineEmbroidery design from embroidery magazine
Embroidery design from embroidery magazineRivanEleraki
 
WCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptx
WCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptxWCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptx
WCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptxHasan S
 
Mike Tyson Sign The Contract Big Boy Shirt
Mike Tyson Sign The Contract Big Boy ShirtMike Tyson Sign The Contract Big Boy Shirt
Mike Tyson Sign The Contract Big Boy ShirtTeeFusion
 
Cold War Tensions Increase - 1945-1952.pptx
Cold War Tensions Increase - 1945-1952.pptxCold War Tensions Increase - 1945-1952.pptx
Cold War Tensions Increase - 1945-1952.pptxSamKuruvilla5
 
Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...
Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...
Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...Amil baba
 
Khushi sharma undergraduate portfolio...
Khushi sharma undergraduate portfolio...Khushi sharma undergraduate portfolio...
Khushi sharma undergraduate portfolio...khushisharma298853
 
Create Funeral Invites Online @ feedvu.com
Create Funeral Invites Online @ feedvu.comCreate Funeral Invites Online @ feedvu.com
Create Funeral Invites Online @ feedvu.comjakyjhon00
 
Designing for privacy: 3 essential UX habits for product teams
Designing for privacy: 3 essential UX habits for product teamsDesigning for privacy: 3 essential UX habits for product teams
Designing for privacy: 3 essential UX habits for product teamsBlock Party
 
How to use Ai for UX UI Design | ChatGPT
How to use Ai for UX UI Design | ChatGPTHow to use Ai for UX UI Design | ChatGPT
How to use Ai for UX UI Design | ChatGPTThink 360 Studio
 
The future of UX design support tools - talk Paris March 2024
The future of UX design support tools - talk Paris March 2024The future of UX design support tools - talk Paris March 2024
The future of UX design support tools - talk Paris March 2024Alan Dix
 
Construction Documents Checklist before Construction
Construction Documents Checklist before ConstructionConstruction Documents Checklist before Construction
Construction Documents Checklist before ConstructionResDraft
 
Building+your+Data+Project+on+AWS+-+Luke+Anderson.pdf
Building+your+Data+Project+on+AWS+-+Luke+Anderson.pdfBuilding+your+Data+Project+on+AWS+-+Luke+Anderson.pdf
Building+your+Data+Project+on+AWS+-+Luke+Anderson.pdfsaidbilgen
 
Design mental models for managing large-scale dbt projects. March 21, 2024 in...
Design mental models for managing large-scale dbt projects. March 21, 2024 in...Design mental models for managing large-scale dbt projects. March 21, 2024 in...
Design mental models for managing large-scale dbt projects. March 21, 2024 in...Ed Orozco
 
Math Group 3 Presentation OLOLOLOLILOOLLOLOL
Math Group 3 Presentation OLOLOLOLILOOLLOLOLMath Group 3 Presentation OLOLOLOLILOOLLOLOL
Math Group 3 Presentation OLOLOLOLILOOLLOLOLkenzukiri
 
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024Ted Drake
 
LRFD Bridge Design Specifications-AASHTO (2014).pdf
LRFD Bridge Design Specifications-AASHTO (2014).pdfLRFD Bridge Design Specifications-AASHTO (2014).pdf
LRFD Bridge Design Specifications-AASHTO (2014).pdfHctorFranciscoSnchez1
 
High-Quality Faux Embroidery Services | Cre8iveSkill
High-Quality Faux Embroidery Services | Cre8iveSkillHigh-Quality Faux Embroidery Services | Cre8iveSkill
High-Quality Faux Embroidery Services | Cre8iveSkillCre8iveskill
 

Recently uploaded (19)

UX Conference on UX Research Trends in 2024
UX Conference on UX Research Trends in 2024UX Conference on UX Research Trends in 2024
UX Conference on UX Research Trends in 2024
 
Production of Erythromycin microbiology.pptx
Production of Erythromycin microbiology.pptxProduction of Erythromycin microbiology.pptx
Production of Erythromycin microbiology.pptx
 
Embroidery design from embroidery magazine
Embroidery design from embroidery magazineEmbroidery design from embroidery magazine
Embroidery design from embroidery magazine
 
WCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptx
WCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptxWCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptx
WCM Branding Agency | 210519 - Portfolio Review (F&B) -s.pptx
 
Mike Tyson Sign The Contract Big Boy Shirt
Mike Tyson Sign The Contract Big Boy ShirtMike Tyson Sign The Contract Big Boy Shirt
Mike Tyson Sign The Contract Big Boy Shirt
 
Cold War Tensions Increase - 1945-1952.pptx
Cold War Tensions Increase - 1945-1952.pptxCold War Tensions Increase - 1945-1952.pptx
Cold War Tensions Increase - 1945-1952.pptx
 
Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...
Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...
Best-NO1 Pakistani Amil Baba Real Amil baba In Pakistan Najoomi Baba in Pakis...
 
Khushi sharma undergraduate portfolio...
Khushi sharma undergraduate portfolio...Khushi sharma undergraduate portfolio...
Khushi sharma undergraduate portfolio...
 
Create Funeral Invites Online @ feedvu.com
Create Funeral Invites Online @ feedvu.comCreate Funeral Invites Online @ feedvu.com
Create Funeral Invites Online @ feedvu.com
 
Designing for privacy: 3 essential UX habits for product teams
Designing for privacy: 3 essential UX habits for product teamsDesigning for privacy: 3 essential UX habits for product teams
Designing for privacy: 3 essential UX habits for product teams
 
How to use Ai for UX UI Design | ChatGPT
How to use Ai for UX UI Design | ChatGPTHow to use Ai for UX UI Design | ChatGPT
How to use Ai for UX UI Design | ChatGPT
 
The future of UX design support tools - talk Paris March 2024
The future of UX design support tools - talk Paris March 2024The future of UX design support tools - talk Paris March 2024
The future of UX design support tools - talk Paris March 2024
 
Construction Documents Checklist before Construction
Construction Documents Checklist before ConstructionConstruction Documents Checklist before Construction
Construction Documents Checklist before Construction
 
Building+your+Data+Project+on+AWS+-+Luke+Anderson.pdf
Building+your+Data+Project+on+AWS+-+Luke+Anderson.pdfBuilding+your+Data+Project+on+AWS+-+Luke+Anderson.pdf
Building+your+Data+Project+on+AWS+-+Luke+Anderson.pdf
 
Design mental models for managing large-scale dbt projects. March 21, 2024 in...
Design mental models for managing large-scale dbt projects. March 21, 2024 in...Design mental models for managing large-scale dbt projects. March 21, 2024 in...
Design mental models for managing large-scale dbt projects. March 21, 2024 in...
 
Math Group 3 Presentation OLOLOLOLILOOLLOLOL
Math Group 3 Presentation OLOLOLOLILOOLLOLOLMath Group 3 Presentation OLOLOLOLILOOLLOLOL
Math Group 3 Presentation OLOLOLOLILOOLLOLOL
 
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
Introduce Trauma-Informed Design to Your Organization - CSUN ATC 2024
 
LRFD Bridge Design Specifications-AASHTO (2014).pdf
LRFD Bridge Design Specifications-AASHTO (2014).pdfLRFD Bridge Design Specifications-AASHTO (2014).pdf
LRFD Bridge Design Specifications-AASHTO (2014).pdf
 
High-Quality Faux Embroidery Services | Cre8iveSkill
High-Quality Faux Embroidery Services | Cre8iveSkillHigh-Quality Faux Embroidery Services | Cre8iveSkill
High-Quality Faux Embroidery Services | Cre8iveSkill
 

OSGi and Java Modularity

  • 1. OSGi & Java Modularity Jazoon 2009, Zürich by Peter Kriens donderdag 25 juni 2009
  • 5. Productivity Application Complexity donderdag 25 juni 2009
  • 6. Productivity Assembly Application Complexity donderdag 25 juni 2009
  • 7. Productivity Structured Programming Assembly Application Complexity donderdag 25 juni 2009
  • 8. Productivity Structured Object Oriented Programming Programming Assembly Application Complexity donderdag 25 juni 2009
  • 9. Productivity Service Oriented Programming? Structured Object Oriented Programming Programming Assembly Application Complexity donderdag 25 juni 2009
  • 12. Extensions Application Application Convenience Foundation Basic Something Core Java VM donderdag 25 juni 2009
  • 13. minilang party pos. product workeffort workflow … accounting assetmaint content Extensionsbi ebay ecommerce googlebase guiapp hhfacility manufact. marketing minerva oagis order Application Application layer common catalina base datafile entity widget … Application Convenience resolver rome serializer servlets tomcat xalan bsf mail mx4j naming jetty poi wsdl4j bsh Foundation Basic Something jenks jpos18 jython looks lucene xerces velocity jakarta jcl json jdbm jdom xmlapis ws-commons Core log4j barcode4j axis batik commons xmlrpc geronimo httpunit freemarker ezmorph fop derby xmlgraphics Libs.. Java VM Java VM rt jce jsse plugin sunjce_prov. dnsns .. donderdag 25 juni 2009
  • 14. minilang party pos. product workeffort workflow … accounting assetmaint content Extensionsbi ebay ecommerce googlebase guiapp hhfacility manufact. marketing minerva oagis order Application Application layer common catalina base datafile entity widget … Application Convenience resolver rome serializer servlets tomcat xalan bsf mail mx4j naming jetty poi wsdl4j bsh Foundation Basic Something jenks jpos18 jython looks lucene xerces velocity jakarta jcl json jdbm jdom xmlapis ws-commons Core log4j barcode4j axis batik commons xmlrpc geronimo httpunit freemarker ezmorph fop derby xmlgraphics Libs.. Java VM Java VM rt jce jsse plugin sunjce_prov. dnsns .. donderdag 25 juni 2009
  • 15. by Damoiselle de Pique donderdag 25 juni 2009
  • 16. Was Pollock an Early OO Programmer? by Damoiselle de Pique donderdag 25 juni 2009
  • 25. low coupling, high cohesion & donderdag 25 juni 2009
  • 26. low coupling, high cohesion & encapsulation donderdag 25 juni 2009
  • 28. How Do We Handle This Complexity in Java? donderdag 25 juni 2009
  • 30. Visibility vs Accessibility donderdag 25 juni 2009
  • 31. Visibility Class Class S T donderdag 25 juni 2009
  • 32. Visibility Class Class S T donderdag 25 juni 2009
  • 33. Visibility Class Class S T donderdag 25 juni 2009
  • 34. Visibility Class Class S T donderdag 25 juni 2009
  • 35. Visibility Module System Class Class S T donderdag 25 juni 2009
  • 36. Hierarchical Class Loaders boot ext app app cust donderdag 25 juni 2009
  • 37. Hierarchical Class Loaders boot ext app app visibility cust donderdag 25 juni 2009
  • 38. Context Class Loaders boot X {} ext app app Y {} cust donderdag 25 juni 2009
  • 39. Context Class Loaders boot X {} ext Thread -> Context ClassLoader app app Y {} cust donderdag 25 juni 2009
  • 40. Context Class Loaders boot X {} ext Thread -> Context ClassLoader app app Y {} cust donderdag 25 juni 2009
  • 41. Accessibility public module package private donderdag 25 juni 2009
  • 42. Accessibility Class module V Class Class Class W S T class Class U package donderdag 25 juni 2009
  • 43. Java VM party common resolver axis xerces Begin rt assetmaint catalina mail ezmorph xmlapis jce hhfacility base jenks servlets xmlrpc Here jsse pos. datafile jakarta jetty xmlgraphics plugin content entity log4j looks sunjce_prov. manufact. widget httpunit jdbm dnsns product … mx4j bsf .. bi rome batik bsh marketing workflow jpos18 fop velocity workeffort ecommerce jcl tomcat ws-commons ebay oagis barcode4j poi geronimo minerva … freemarker lucene .. minilang googlebase serializer jdom json accounting order naming commons xalan guiapp ofbiz jython derby wsdl4j donderdag 25 juni 2009
  • 44. Java VM party common resolver axis xerces Begin rt assetmaint catalina mail ezmorph xmlapis jce hhfacility base jenks servlets xmlrpc Here jsse pos. datafile jakarta jetty xmlgraphics plugin content entity log4j looks sunjce_prov. manufact. widget httpunit jdbm dnsns product … mx4j bsf .. bi rome batik bsh Class marketing workflow jpos18 fop velocity Not workeffort ecommerce jcl tomcat ws-commons Found ebay oagis barcode4j poi geronimo Exception minerva … freemarker lucene .. minilang googlebase serializer jdom json accounting order naming commons xalan guiapp ofbiz jython derby wsdl4j donderdag 25 juni 2009
  • 45. Split Packages JARs A 2 B C import private export donderdag 25 juni 2009
  • 46. Split Packages package com.foo: X, Y JARs A package com.foo: X, Y, Z 2 B package com.foo: X, Y, Z C import private export donderdag 25 juni 2009
  • 47. Split Packages package com.foo: X, Y JARs A package com.foo: X, Y, Z 2 B package com.foo: X, Y, Z C import private export donderdag 25 juni 2009
  • 48. Split Packages package com.foo: X, Y JARs A package com.foo: X, Y, Z 2 B package com.foo: X, Y, Z C import private export donderdag 25 juni 2009
  • 49. Versioning JARs package com.foo: X, Y A package com.foo: X, Z 2 B package com.foo: X, Y, Z C import private export donderdag 25 juni 2009
  • 50. Versioning JARs package com.foo: X, Y A package com.bar: A,B,C;1.0 package com.foo: X, Z 2 B package com.bar: A;2.0 package com.foo: X, Y, Z C package com.bar: A,B,C;2.0 import private export donderdag 25 juni 2009
  • 51. Versioning JARs package com.foo: X, Y A package com.bar: A,B,C;1.0 package com.foo: X, Z 2 B package com.bar: A;2.0 package com.foo: X, Y, Z C package com.bar: A,B,C;2.0 import private export donderdag 25 juni 2009
  • 52. Private Packages package com.foo: X, Y JARs A package com.bar: A,B,C;1.0 package com.foo: X, Z 2 B package com.bar: A;2.0 package com.foo: X, Y, Z C package com.bar: A,B,C;2.0 import private export donderdag 25 juni 2009
  • 53. Private Packages package com.foo: X, Y JARs A package com.bar: A,B,C;1.0 package com.foo: X, Z 2 B package com.bar: A;2.0 package com.private: G package com.foo: X, Y, Z C package com.bar: A,B,C;2.0 package com.private: G,H,I import private export donderdag 25 juni 2009
  • 54. Private Packages package com.foo: X, Y JARs A package com.bar: A,B,C;1.0 package com.foo: X, Z 2 B package com.bar: A;2.0 package com.private: G package com.foo: X, Y, Z C package com.bar: A,B,C;2.0 package com.private: G,H,I import private export donderdag 25 juni 2009
  • 55. How Do We Handle This Complexity in Java? donderdag 25 juni 2009
  • 56. We Don’t ... donderdag 25 juni 2009
  • 59. Applications S (bundles) E Service C U Life Cycle R I Module T Y Execution Environment OS + Hardware donderdag 25 juni 2009
  • 62. CLDC/ MIDP OSGi Min. J2SE 1.3, 1.4, 5, 6, ... CDC/FP donderdag 25 juni 2009
  • 65. Import, Export, Private Bundle A Bundle B p p q-1.4 q-[1.2,1.8) Bundle A r r . import private export donderdag 25 juni 2009
  • 66. Import, Export, Private Bundle A Bundle B imports p p q-1.4 q-[1.2,1.8) Bundle A r r . import private export donderdag 25 juni 2009
  • 67. Import, Export, Private Bundle A Bundle B imports p p exports q-1.4 q-[1.2,1.8) Bundle A r r . import private export donderdag 25 juni 2009
  • 70. Uses Constraints Bundle A Bundle B r;1.0 r;2.0 p p q-1.4 q-[1.2,1.8) Bundle C Bundle D r;1.0 r;2.0 import private export donderdag 25 juni 2009
  • 71. Uses Constraints Bundle A Bundle B r;1.0 r;2.0 imports p p q-1.4 q-[1.2,1.8) Bundle C Bundle D r;1.0 r;2.0 import private export donderdag 25 juni 2009
  • 72. Uses Constraints Bundle A Bundle B r;1.0 r;2.0 imports p p exports q-1.4 q-[1.2,1.8) Bundle C Bundle D r;1.0 r;2.0 import private export donderdag 25 juni 2009
  • 73. Uses Constraints Bundle A Bundle B r;1.0 r;2.0 imports p p exports q-1.4 q-[1.2,1.8) Bundle C Bundle D r;1.0 r;2.0 import private export donderdag 25 juni 2009
  • 74. System Loader Extension Loader Application B Loader Custom Loader donderdag 25 juni 2009
  • 75. System Loader Extension Loader Application B OSGi Loader Custom Loader donderdag 25 juni 2009
  • 76. System Loader Bundle A Extension Bundle G Bundle B Loader OSGi Bundle C Application B Framework Loader Loader Bundle F Bundle D Custom Loader Bundle E donderdag 25 juni 2009
  • 79. INSTALLED STARTING RESOLVED ACTIVE UNINSTALLED STOPPING donderdag 25 juni 2009
  • 80. MANAGE- System MENT bundle BUNDLE Bundle X-v2 X Bundle Bundle B A donderdag 25 juni 2009
  • 86. Services defined in interface/class Bundle register get Bundle A B notify donderdag 25 juni 2009
  • 87. Services interface Foo { void foo(); } void foo() { … … s.foo() } … donderdag 25 juni 2009
  • 93. Services Solve Class Loader Problems! donderdag 25 juni 2009
  • 99. package com.acme; import org.osgi.framework.*; public class HelloWorld extends BundleActivator { public void start(BundleContext context) { System.out.println(“Hello World”); } public void stop(BundleContext context) { System.out.println(“Goodbye World”); } } --------------------------------------------- Manifest: 1.0 Bundle-Activator: com.acme.HelloWorld Import-Package: org.osgi.framework;version=1.3 donderdag 25 juni 2009
  • 100. Bundles are active entities in runtime donderdag 25 juni 2009
  • 103. 294 7 donderdag 25 juni 2009
  • 106. Is JSR 294 a Meta Module System? (Implemented by OSGi™, Jigsaw, Guice, …) donderdag 25 juni 2009
  • 107. Is JSR 294 a Meta Module System? (Implemented by OSGi™, Jigsaw, Guice, …) No Java™ Standard for donderdag 25 juni 2009 Modules!
  • 112. Class .forName donderdag 25 juni 2009
  • 113. Class .forName donderdag 25 juni 2009
  • 116. Accidental Complexity donderdag 25 juni 2009
  • 117. ‘97 ‘98 ‘99 ‘00 ‘01 ‘02 ‘03 ‘04 ‘05 ‘06 ‘07 ‘08 ‘09 ‘10 donderdag 25 juni 2009
  • 118. ‘97 ‘98 ‘99 ‘00 ‘01 ‘02 ‘03 ‘04 ‘05 ‘06 ‘07 ‘08 ‘09 ‘10 donderdag 25 juni 2009
  • 121. bundle A-1.2 c b bundle C-1.0 bundle a B-4.1 donderdag 25 juni 2009
  • 124. The Component Framework donderdag 25 juni 2009