SlideShare a Scribd company logo
1 of 25
Download to read offline
Very Important Bundles



         Roman Roelofsen
          Lead Architect

               @

                 
OSGi Bundles

    ●   Even though this depends on the architecture
        and dependencies, OSGi has proven that
        bundles increase the assembly possibilites
        –   Rich meta-data, enforced resolving, ...
    ●   E.g. copy & paste files to enhance the runtime
        features („VB-feeling“ on module level)
        –   Console (test, debug, ...)
    ●   Bundles can improve the development process
        –   Some bundles make it easy, some hard...
                                  
Good Bundles




        #6

      Logging

          
Good Bundles: Logging

●       Problem
        –   Your application + frameworks use different
            logging APIs, e.g. log4j, commons logging, ...
●       Solution
        –   PAX Logging
        –   2 bundles: pax-logging-api & pax-logging-service
        –   8 logging APIs
        –   Redirects to LogService & log4j
     
        –   Configuration Admin support
                                  
Good Bundles




          #5

    Web Development

            
Good Bundles: Web Development


●       Problem
        –   HttpService is simply not enough
●       Solution
        –   PAX Web
        –   Whiteboard pattern (service registry)
        –   Extender pattern (web.xml)
        –   Support for filters and JSP
        –   Configuration Admin support
                                   
Good Bundles




        #4

     Remoting

          
Good Bundles: Remoting
●       Problem
        –   You want to expose some of your services as
            endpoints
        –   You want to access endpoints via services
●       Solution
        –   Apache CXF Distributed OSGi
        –   Single bundle distribution!
        –   Export endpoint
             ●service.exported.interfaces = *
        –   Import Endpoint
                                     
             ●   /OSGI-INF/remote-service/remote-services.xml
Good Bundles




             #3

    Dependency Injection /
     Service Interaction

               
Good Bundles: DI
●       Problem
        –   You want dependency injection
●       Solution
        –   Declarative Services
             ●No full DI support, mostly for dealing with services
        –   Peaberry
             ●Google Guice add-on, Java based DSL
        –   Apache Felix iPOJO
             ●Sophisticated, a bit challenging
        –   Spring Dynamic Modules
                                     
             ●   Spring add-on
Good Bundles




          #2

    Framework Tooling

             
Good Bundles: Framework Tooling

●       Problem
        –   The console is nice, but sometimes a bit annoying
        –   Install file: /home/user/dev/workspace/app/.../bundle.jar
        –   Track EventAdmin events

●       Solution
        –   Apache Felix Web Console
        –   Basic setup requires only one bundle
        –   Works with Felix/Equinox/...
                                      
Good Bundles: Framework Tooling




                
Good Bundles




         #1

    Bundle Tooling

           
Good Bundles: Bundle Tooling


●       Problem
        –   Create bundles for quick tests
        –   Manifest reading
        –   Library wrapping
        –   ...
●       Solution
        –   Peter Kriens' BND

                                     
Good Bundles: Bundle Tooling




                  
Good Bundles: Bundle Tooling




                  
Better Modularity with Bundles




                  ≠



                   
Dependencies


●       Writing bundles does not automatically imply that
        dependency problems are avoided
●       Require-Bundle is just as bad as „new Service()“
        –   Only on a different level
        –   Rely on Import-Package, let the resolver do the rest
        –   Be open for future modifications
●       Provide whiteboard / extender pattern implementation
        where reasonable
                                         
Bundle Granularity

    ●   Common practive, e.g. Maven
        –   Divide you build into several modules
        –   Each module will result in a JAR

    ●   Maven-bundle-plugin
        –   Add OSGi metadata

    ●   Ship bundles
        –   User happy?
                                  
Bundle Granularity


Build            Bundle               User's POV

core1.jar        core1.jar            mandatory
core2.jar        core2.jar

protocolA1.jar   protocolA1.jar
protocolA2.jar   protocolA2.jar       either this
protocolA3.jar   protocolA3.jar

protocolB1.jar   protocolB1.jar
protocolB2.jar   protocolB2.jar       or this
                                   
Bundle Granularity


Build            Bundle              User's POV

core1.jar        core.jar            mandatory
core2.jar

protocolA1.jar
protocolA2.jar   protocolA.jar       either this
protocolA3.jar

protocolB1.jar
protocolB2.jar   protocolB.jar       or this
                                  
Summary

    ●   Bundles are so much better than plain JARs
    ●   Bundles are deliveries for your users
    ●   Granularity during development is different from
        granularity for deployments
    ●   Embed your dependencies if they do not provide
        a value for your user
        –   Bundle-Classpath is your friend
    ●   Avoid Require-Bundle & DynamicImport-
        Package
                                 
THANK YOU!


                    Roman Roelofsen
         
            r.roelofsen@prosyst.com
●   http://www.flickr.com/photos/jessicafm/2767435428


●http://www.manuelm.org/blog/wp-
content/uploads/2009/02/overview.png




                                 

More Related Content

What's hot

OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OpenBlend society
 
An evening with Postgresql
An evening with PostgresqlAn evening with Postgresql
An evening with PostgresqlJoshua Drake
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기jbugkorea
 
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...ddrschiw
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayrafaelliu
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpagesddrschiw
 
Magento caching
Magento cachingMagento caching
Magento cachingYireo
 
Developing in MODx
Developing in MODxDeveloping in MODx
Developing in MODxMODxpo
 
NetBeans Plugin Development Workshop
NetBeans Plugin Development WorkshopNetBeans Plugin Development Workshop
NetBeans Plugin Development Workshopelliando dias
 
PHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHPPHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHPHenri Bergius
 
Microservices, because everyone wants to be cool
Microservices, because everyone wants to be coolMicroservices, because everyone wants to be cool
Microservices, because everyone wants to be coolPat Hermens
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015Exove
 
JBoss Community Introduction
JBoss Community IntroductionJBoss Community Introduction
JBoss Community Introductionjbugkorea
 
Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)Divante
 
Arquillian 소개
Arquillian 소개Arquillian 소개
Arquillian 소개성욱 전
 
Super performing websites with TYPO3 and Varnish
Super performing websites with TYPO3 and VarnishSuper performing websites with TYPO3 and Varnish
Super performing websites with TYPO3 and Varnishchristianjul
 

What's hot (20)

OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
 
An evening with Postgresql
An evening with PostgresqlAn evening with Postgresql
An evening with Postgresql
 
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
 
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
AD113 -- IBM Lotus Notes Discussion Template: Next Generation and Other OpenN...
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
 
Ad110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of XpagesAd110 - Unleash the Power of Xpages
Ad110 - Unleash the Power of Xpages
 
Magento caching
Magento cachingMagento caching
Magento caching
 
Jvm mbeans jmxtran
Jvm mbeans jmxtranJvm mbeans jmxtran
Jvm mbeans jmxtran
 
Developing in MODx
Developing in MODxDeveloping in MODx
Developing in MODx
 
What's wrong with web
What's wrong with webWhat's wrong with web
What's wrong with web
 
NetBeans Plugin Development Workshop
NetBeans Plugin Development WorkshopNetBeans Plugin Development Workshop
NetBeans Plugin Development Workshop
 
PHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHPPHPCR - Standard Content Repository for PHP
PHPCR - Standard Content Repository for PHP
 
Microservices, because everyone wants to be cool
Microservices, because everyone wants to be coolMicroservices, because everyone wants to be cool
Microservices, because everyone wants to be cool
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
Start with Bolt and Go Ez - eZ Publish Summer Camp 2015
 
00_VB_Intro
00_VB_Intro00_VB_Intro
00_VB_Intro
 
JBoss Community Introduction
JBoss Community IntroductionJBoss Community Introduction
JBoss Community Introduction
 
Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)Magento scalability from the trenches (Meet Magento Sweden 2016)
Magento scalability from the trenches (Meet Magento Sweden 2016)
 
Arquillian 소개
Arquillian 소개Arquillian 소개
Arquillian 소개
 
Super performing websites with TYPO3 and Varnish
Super performing websites with TYPO3 and VarnishSuper performing websites with TYPO3 and Varnish
Super performing websites with TYPO3 and Varnish
 

Viewers also liked

Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnRoman Roelofsen
 
Про розвиток сімейних форм виховання: кількісні та якісні показники
Про розвиток сімейних форм виховання: кількісні та якісні показникиПро розвиток сімейних форм виховання: кількісні та якісні показники
Про розвиток сімейних форм виховання: кількісні та якісні показникиguest274957
 
New Media Session for NLB Staff June25 09
New Media Session for NLB Staff  June25 09New Media Session for NLB Staff  June25 09
New Media Session for NLB Staff June25 09bainslide
 
To Christians with Love
To Christians with LoveTo Christians with Love
To Christians with LoveFawad Kiyani
 
Презентация Гая Ханова
Презентация Гая ХановаПрезентация Гая Ханова
Презентация Гая Хановаguesta73f046
 
HMF Emarketing Workshop
HMF Emarketing WorkshopHMF Emarketing Workshop
HMF Emarketing WorkshopSian Jamieson
 
תקדים צארלס קוריאה
תקדים צארלס קוריאהתקדים צארלס קוריאה
תקדים צארלס קוריאהIlan Langer
 
Mn1 sec 2 - les 3 - (suratun-noor 35-40)
Mn1   sec 2 - les 3 - (suratun-noor 35-40)Mn1   sec 2 - les 3 - (suratun-noor 35-40)
Mn1 sec 2 - les 3 - (suratun-noor 35-40)Fawad Kiyani
 
Quranic supplication (Duas) from The Only God (Allah)
Quranic supplication (Duas) from The Only God (Allah)Quranic supplication (Duas) from The Only God (Allah)
Quranic supplication (Duas) from The Only God (Allah)Fawad Kiyani
 
Dualcover
DualcoverDualcover
Dualcoverkareem
 
Using Social Media for Student Gradutates
Using Social Media for Student GradutatesUsing Social Media for Student Gradutates
Using Social Media for Student GradutatesSian Jamieson
 
Iir Jurisprudentiedag
Iir JurisprudentiedagIir Jurisprudentiedag
Iir Jurisprudentiedagweerokoster
 
Crowdfunding for Social Enterprises
Crowdfunding for Social EnterprisesCrowdfunding for Social Enterprises
Crowdfunding for Social EnterprisesSian Jamieson
 
מצגת פרויקט
מצגת פרויקטמצגת פרויקט
מצגת פרויקטIlan Langer
 
Nu Exista Femei Urate Ci Femei Fara Bani
Nu Exista Femei Urate Ci Femei Fara BaniNu Exista Femei Urate Ci Femei Fara Bani
Nu Exista Femei Urate Ci Femei Fara Baniaviaxis
 
GelişImsel Psikopatoloji Klinikte 2.BöLüM
GelişImsel Psikopatoloji Klinikte 2.BöLüMGelişImsel Psikopatoloji Klinikte 2.BöLüM
GelişImsel Psikopatoloji Klinikte 2.BöLüMGuzel Gunler Poliklinigi
 

Viewers also liked (20)

Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickeln
 
Про розвиток сімейних форм виховання: кількісні та якісні показники
Про розвиток сімейних форм виховання: кількісні та якісні показникиПро розвиток сімейних форм виховання: кількісні та якісні показники
Про розвиток сімейних форм виховання: кількісні та якісні показники
 
New Media Session for NLB Staff June25 09
New Media Session for NLB Staff  June25 09New Media Session for NLB Staff  June25 09
New Media Session for NLB Staff June25 09
 
To Christians with Love
To Christians with LoveTo Christians with Love
To Christians with Love
 
Презентация Гая Ханова
Презентация Гая ХановаПрезентация Гая Ханова
Презентация Гая Ханова
 
HMF Emarketing Workshop
HMF Emarketing WorkshopHMF Emarketing Workshop
HMF Emarketing Workshop
 
תקדים צארלס קוריאה
תקדים צארלס קוריאהתקדים צארלס קוריאה
תקדים צארלס קוריאה
 
Orhidee
OrhideeOrhidee
Orhidee
 
INTRODUCCIÓN:
INTRODUCCIÓN:INTRODUCCIÓN:
INTRODUCCIÓN:
 
Mn1 sec 2 - les 3 - (suratun-noor 35-40)
Mn1   sec 2 - les 3 - (suratun-noor 35-40)Mn1   sec 2 - les 3 - (suratun-noor 35-40)
Mn1 sec 2 - les 3 - (suratun-noor 35-40)
 
Quranic supplication (Duas) from The Only God (Allah)
Quranic supplication (Duas) from The Only God (Allah)Quranic supplication (Duas) from The Only God (Allah)
Quranic supplication (Duas) from The Only God (Allah)
 
Dualcover
DualcoverDualcover
Dualcover
 
South Asian Studies08
South Asian Studies08South Asian Studies08
South Asian Studies08
 
Odev zamani 28.04.12
Odev zamani 28.04.12Odev zamani 28.04.12
Odev zamani 28.04.12
 
Using Social Media for Student Gradutates
Using Social Media for Student GradutatesUsing Social Media for Student Gradutates
Using Social Media for Student Gradutates
 
Iir Jurisprudentiedag
Iir JurisprudentiedagIir Jurisprudentiedag
Iir Jurisprudentiedag
 
Crowdfunding for Social Enterprises
Crowdfunding for Social EnterprisesCrowdfunding for Social Enterprises
Crowdfunding for Social Enterprises
 
מצגת פרויקט
מצגת פרויקטמצגת פרויקט
מצגת פרויקט
 
Nu Exista Femei Urate Ci Femei Fara Bani
Nu Exista Femei Urate Ci Femei Fara BaniNu Exista Femei Urate Ci Femei Fara Bani
Nu Exista Femei Urate Ci Femei Fara Bani
 
GelişImsel Psikopatoloji Klinikte 2.BöLüM
GelişImsel Psikopatoloji Klinikte 2.BöLüMGelişImsel Psikopatoloji Klinikte 2.BöLüM
GelişImsel Psikopatoloji Klinikte 2.BöLüM
 

Similar to VIB - Very Important Bundles

Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayTony Ng
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The FactLuciano Resende
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutionsSangjin Lee
 
(ATS3-DEV08) Team Development with Accelrys Enterprise Platform
(ATS3-DEV08) Team Development with Accelrys Enterprise Platform(ATS3-DEV08) Team Development with Accelrys Enterprise Platform
(ATS3-DEV08) Team Development with Accelrys Enterprise PlatformBIOVIA
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012Philip Polstra
 
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012Blend Interactive
 
Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014vespian_256
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ TokopediaQasim Zaidi
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
A Real ADF Experience Part II
A Real ADF Experience Part IIA Real ADF Experience Part II
A Real ADF Experience Part IIMano Swerts
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingStanislav Osipov
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?Dmitri Shiryaev
 
Production optimization with React and Webpack
Production optimization with React and WebpackProduction optimization with React and Webpack
Production optimization with React and Webpackk88hudson
 
Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0Sriram Narayanan
 
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Nuxeo
 
Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 2012Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 201244CON
 

Similar to VIB - Very Important Bundles (20)

Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Tuscany : Applying OSGi After The Fact
Tuscany : Applying  OSGi After The FactTuscany : Applying  OSGi After The Fact
Tuscany : Applying OSGi After The Fact
 
Calling all modularity solutions
Calling all modularity solutionsCalling all modularity solutions
Calling all modularity solutions
 
(ATS3-DEV08) Team Development with Accelrys Enterprise Platform
(ATS3-DEV08) Team Development with Accelrys Enterprise Platform(ATS3-DEV08) Team Development with Accelrys Enterprise Platform
(ATS3-DEV08) Team Development with Accelrys Enterprise Platform
 
Modularity problems
Modularity  problemsModularity  problems
Modularity problems
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
 
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
 
Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ Tokopedia
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
A Real ADF Experience Part II
A Real ADF Experience Part IIA Real ADF Experience Part II
A Real ADF Experience Part II
 
SCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scalingSCM Puppet: from an intro to the scaling
SCM Puppet: from an intro to the scaling
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
 
Carbon and OSGi Deep Dive
Carbon and OSGi Deep DiveCarbon and OSGi Deep Dive
Carbon and OSGi Deep Dive
 
Production optimization with React and Webpack
Production optimization with React and WebpackProduction optimization with React and Webpack
Production optimization with React and Webpack
 
Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0Continuous integration for open source distros v 3.0
Continuous integration for open source distros v 3.0
 
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
Creating Large Scale Software Platforms with OSGi and an Extension Point Mode...
 
Polstra 44con2012
Polstra 44con2012Polstra 44con2012
Polstra 44con2012
 
Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 2012Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 2012
 

Recently uploaded

Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
"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
 
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
 
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
 

Recently uploaded (20)

Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
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
 
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
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
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
 
"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
 
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
 
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
 

VIB - Very Important Bundles

  • 1. Very Important Bundles Roman Roelofsen Lead Architect @    
  • 2. OSGi Bundles ● Even though this depends on the architecture and dependencies, OSGi has proven that bundles increase the assembly possibilites – Rich meta-data, enforced resolving, ... ● E.g. copy & paste files to enhance the runtime features („VB-feeling“ on module level) – Console (test, debug, ...) ● Bundles can improve the development process – Some bundles make it easy, some hard...    
  • 3. Good Bundles #6 Logging    
  • 4. Good Bundles: Logging ● Problem – Your application + frameworks use different logging APIs, e.g. log4j, commons logging, ... ● Solution – PAX Logging – 2 bundles: pax-logging-api & pax-logging-service – 8 logging APIs – Redirects to LogService & log4j   – Configuration Admin support  
  • 5. Good Bundles #5 Web Development    
  • 6. Good Bundles: Web Development ● Problem – HttpService is simply not enough ● Solution – PAX Web – Whiteboard pattern (service registry) – Extender pattern (web.xml) – Support for filters and JSP – Configuration Admin support    
  • 7. Good Bundles #4 Remoting    
  • 8. Good Bundles: Remoting ● Problem – You want to expose some of your services as endpoints – You want to access endpoints via services ● Solution – Apache CXF Distributed OSGi – Single bundle distribution! – Export endpoint ●service.exported.interfaces = * – Import Endpoint     ● /OSGI-INF/remote-service/remote-services.xml
  • 9. Good Bundles #3 Dependency Injection / Service Interaction    
  • 10. Good Bundles: DI ● Problem – You want dependency injection ● Solution – Declarative Services ●No full DI support, mostly for dealing with services – Peaberry ●Google Guice add-on, Java based DSL – Apache Felix iPOJO ●Sophisticated, a bit challenging – Spring Dynamic Modules     ● Spring add-on
  • 11. Good Bundles #2 Framework Tooling    
  • 12. Good Bundles: Framework Tooling ● Problem – The console is nice, but sometimes a bit annoying – Install file: /home/user/dev/workspace/app/.../bundle.jar – Track EventAdmin events ● Solution – Apache Felix Web Console – Basic setup requires only one bundle – Works with Felix/Equinox/...    
  • 13. Good Bundles: Framework Tooling    
  • 14. Good Bundles #1 Bundle Tooling    
  • 15. Good Bundles: Bundle Tooling ● Problem – Create bundles for quick tests – Manifest reading – Library wrapping – ... ● Solution – Peter Kriens' BND    
  • 16. Good Bundles: Bundle Tooling    
  • 17. Good Bundles: Bundle Tooling    
  • 18. Better Modularity with Bundles ≠    
  • 19. Dependencies ● Writing bundles does not automatically imply that dependency problems are avoided ● Require-Bundle is just as bad as „new Service()“ – Only on a different level – Rely on Import-Package, let the resolver do the rest – Be open for future modifications ● Provide whiteboard / extender pattern implementation where reasonable    
  • 20. Bundle Granularity ● Common practive, e.g. Maven – Divide you build into several modules – Each module will result in a JAR ● Maven-bundle-plugin – Add OSGi metadata ● Ship bundles – User happy?    
  • 21. Bundle Granularity Build Bundle User's POV core1.jar core1.jar mandatory core2.jar core2.jar protocolA1.jar protocolA1.jar protocolA2.jar protocolA2.jar either this protocolA3.jar protocolA3.jar protocolB1.jar protocolB1.jar protocolB2.jar protocolB2.jar or this    
  • 22. Bundle Granularity Build Bundle User's POV core1.jar core.jar mandatory core2.jar protocolA1.jar protocolA2.jar protocolA.jar either this protocolA3.jar protocolB1.jar protocolB2.jar protocolB.jar or this    
  • 23. Summary ● Bundles are so much better than plain JARs ● Bundles are deliveries for your users ● Granularity during development is different from granularity for deployments ● Embed your dependencies if they do not provide a value for your user – Bundle-Classpath is your friend ● Avoid Require-Bundle & DynamicImport- Package    
  • 24. THANK YOU! Roman Roelofsen     r.roelofsen@prosyst.com
  • 25. http://www.flickr.com/photos/jessicafm/2767435428 ●http://www.manuelm.org/blog/wp- content/uploads/2009/02/overview.png