SlideShare a Scribd company logo
OSGi &
                       Modularity

                              2011-06-23 IBM Montpellier

                              by Peter Kriens




dinsdag 28 juni 2011                                       1
dinsdag 28 juni 2011   2
dinsdag 28 juni 2011   2
dinsdag 28 juni 2011   2
Productivity




                       Application Complexity


dinsdag 28 juni 2011                            3
Productivity




                       Assembly




                       Application Complexity


dinsdag 28 juni 2011                            3
Productivity




                                   Structured
                                  Programming


                       Assembly




                       Application Complexity


dinsdag 28 juni 2011                            3
Productivity




                                   Structured   Object Oriented Programming
                                  Programming


                       Assembly




                       Application Complexity


dinsdag 28 juni 2011                                                          3
Productivity




                                  Service Oriented Programming?



                                   Structured   Object Oriented Programming
                                  Programming


                       Assembly




                       Application Complexity


dinsdag 28 juni 2011                                                          3
dinsdag 28 juni 2011   4
Application




dinsdag 28 juni 2011                 4
Extensions

                                      Application

                                    Application
                                              Convenience
                       Foundation     Basic         Something
                                                    Core
                                          Java VM




dinsdag 28 juni 2011                                            4
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                Libs
                         log4j      barcode4j      axis            batik           commons         xmlrpc       geronimo

                        httpunit    freemarker   ezmorph            fop              derby       xmlgraphics        ..

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




dinsdag 28 juni 2011                                                                                                        4
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                Libs
                         log4j      barcode4j      axis            batik           commons         xmlrpc       geronimo

                        httpunit    freemarker   ezmorph            fop              derby       xmlgraphics        ..

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




dinsdag 28 juni 2011                                                                                                        4
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




dinsdag 28 juni 2011                                                                                   5
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




dinsdag 28 juni 2011                                                                                    5
dinsdag 28 juni 2011   6
dinsdag 28 juni 2011   7
dinsdag 28 juni 2011   8
dinsdag 28 juni 2011   8
dinsdag 28 juni 2011   9
low coupling,



dinsdag 28 juni 2011                   9
low coupling,
                   high cohesion &


dinsdag 28 juni 2011                 9
low coupling,
                   high cohesion &
                    encapsulation
dinsdag 28 juni 2011                 9
dinsdag 28 juni 2011   10
Applications                   S
                  (bundles)                     E
                                     Service
                                                C
                                                U
                                   Life Cycle
                                                R
                                                I
                                     Module     T
                                                Y
                       Execution Environment

                                    OS + Hardware
dinsdag 28 juni 2011                                11
Code

                       protected boolean report(Reporter reporter) {
                            if (reporter.getWarnings().size() > 0) {
                                System.err.println("Warnings");
                                for (Iterator<String> e = reporter.
                                 getWarnings().iterator(); e.hasNext();) {
                                    System.err.println(" " + e.next());
                                }
                            }
                            return false;
                        }




dinsdag 28 juni 2011                                                         12
Functions

                       protected boolean report(Reporter reporter) {
                            if (reporter.getWarnings().size() > 0) {
                                System.err.println("Warnings");
                                for (Iterator<String> e = reporter.
                                 getWarnings().iterator(); e.hasNext();) {
                                    System.err.println(" " + e.next());
                                }
                            }
                            return false;
                        }




dinsdag 28 juni 2011                                                         13
Classes

                       protected boolean report(Reporter reporter) {
                            if (reporter.getWarnings().size() > 0) {
                                System.err.println("Warnings");
                                for (Iterator<String> e = reporter.
                                 getWarnings().iterator(); e.hasNext();) {
                                    System.err.println(" " + e.next());
                                }
                            }
                            return false;
                        }




dinsdag 28 juni 2011                                                         14
Classes
                                                     Class D
                       Class C

                                                 Class B

                                 Class A




dinsdag 28 juni 2011                                           14
Packages
                                                     Class D
                       Class C

                                                 Class B

                                 Class A




dinsdag 28 juni 2011                                           15
Packages

                                       Class D
                       Class C




dinsdag 28 juni 2011                             15
Bundles
                       Bundle A         Bundle B




                                            p

                        q-1.4
                       Bundle A




                                            .




dinsdag 28 juni 2011                               16
Bundles
                       Bundle A                 Bundle B




                           p                      p

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




                                                       .

                        import      private     export




dinsdag 28 juni 2011                                        17
Bundles
                       Bundle A                  Bundle B




                                    imports
                           p                       p

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




                                                        .

                        import       private     export




dinsdag 28 juni 2011                                         17
Bundles
                       Bundle A                  Bundle B




                                    imports
                           p                       p

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




                                                        .

                        import       private     export




dinsdag 28 juni 2011                                         17
MANAGE-
                                         System
                                                            MENT
                                         bundle
                                                           BUNDLE




                       Bundle
                        X-v2
                         X




                                                  Bundle
                                Bundle              B
                                  A




dinsdag 28 juni 2011                                                 18
Services

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




dinsdag 28 juni 2011                                               19
dinsdag 28 juni 2011   20
dinsdag 28 juni 2011   20
dinsdag 28 juni 2011   20
dinsdag 28 juni 2011   21
dinsdag 28 juni 2011   21
bundle
                                     A-1.2




                                c                b




                                                     bundle
                                                      C-1.0
                       bundle                a
                        B-4.1




dinsdag 28 juni 2011                                          21
dinsdag 28 juni 2011   22
dinsdag 28 juni 2011   22
The Component
             Framework
dinsdag 28 juni 2011       22
dinsdag 28 juni 2011   23
Q&A
dinsdag 28 juni 2011         24
Thanks!

dinsdag 28 juni 2011             25

More Related Content

KEY
Modularity with OSGi
PDF
OSGi and Java Modularity
PDF
JavaOne 2010: OSGI Migrat
PDF
OSGi Best Practices - Tim Ward
PPTX
WORKS 11 Presentation
PDF
Architecture | Modular Enterprise Applications | Mark Nuttall
ODP
Chisimba - introduction to practical demo
PDF
Integrating RabbitMQ with PHP
Modularity with OSGi
OSGi and Java Modularity
JavaOne 2010: OSGI Migrat
OSGi Best Practices - Tim Ward
WORKS 11 Presentation
Architecture | Modular Enterprise Applications | Mark Nuttall
Chisimba - introduction to practical demo
Integrating RabbitMQ with PHP

What's hot (7)

PDF
Interoperability With RabbitMq
PDF
Overview of JPA (Java Persistence API) v2.0
PDF
From Distributed to Pervasive OSGi
PDF
Distributed Services - OSGi 4.2 and possible future enhancements
PPT
Java interview-questions-and-answers
DOCX
Java 7 Dolphin manjula kollipara
DOCX
Java questions with answers
Interoperability With RabbitMq
Overview of JPA (Java Persistence API) v2.0
From Distributed to Pervasive OSGi
Distributed Services - OSGi 4.2 and possible future enhancements
Java interview-questions-and-answers
Java 7 Dolphin manjula kollipara
Java questions with answers
Ad

Viewers also liked (20)

PPTX
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
PPTX
Prologue 2012 SDF
PDF
Concierge - Bringing OSGi (back) to Embedded Devices
PDF
Introduction into OSGi
PPTX
Системы работы с информацией . Инструменты? Протезы? Тренажеры? Компьютерные ...
PPT
Компонентная среда разработки инструментария нагрузочного тестирования
PDF
Liferay & Big Data Dev Con 2014
PDF
Field injection, type safe configuration, and more new goodies in Declarative...
PDF
How to manage software complexity with OSGi
PDF
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
PDF
OSGi toolchain from the ground up - Matteo Rulli
PDF
Moved to https://slidr.io/azzazzel/software-craftsmanship-in-the-era-of-softw...
PDF
Eclipse + Maven + OSGi has never been so easy - Atllia Kiss
PPTX
WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchev
PPT
It's beautiful enRoute - Paul Fraser
PPTX
Microservices and OSGi: Better together?
PPTX
Dockerizing apps for the Deployment Platform of the Month with OSGi - David B...
PDF
Use Case: Building OSGi Enterprise Applications (QCon 14)
PPTX
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
PDF
Moved to https://slidr.io/azzazzel/osgi-for-outsiders
Application Developer Days 2011 - Teamlead - Писать плагины проще простого!
Prologue 2012 SDF
Concierge - Bringing OSGi (back) to Embedded Devices
Introduction into OSGi
Системы работы с информацией . Инструменты? Протезы? Тренажеры? Компьютерные ...
Компонентная среда разработки инструментария нагрузочного тестирования
Liferay & Big Data Dev Con 2014
Field injection, type safe configuration, and more new goodies in Declarative...
How to manage software complexity with OSGi
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
OSGi toolchain from the ground up - Matteo Rulli
Moved to https://slidr.io/azzazzel/software-craftsmanship-in-the-era-of-softw...
Eclipse + Maven + OSGi has never been so easy - Atllia Kiss
WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchev
It's beautiful enRoute - Paul Fraser
Microservices and OSGi: Better together?
Dockerizing apps for the Deployment Platform of the Month with OSGi - David B...
Use Case: Building OSGi Enterprise Applications (QCon 14)
Евгений Бова: "Modularity in Java: introduction to Jigsaw through the prism o...
Moved to https://slidr.io/azzazzel/osgi-for-outsiders
Ad

Similar to Modularity with OSGi (20)

PDF
OSGi Service Platform 4.2
PDF
An introduction to OSGi
PPTX
Florian adler minute project
PDF
What's New in GWT 2.2
PPTX
Entity Framework Today (May 2012)
PDF
Anarchist guide to titanium ui
PPTX
Workshop OSGI PPT
PPTX
XEO Framework - TDose 2011
PDF
Ese2008 Swordfish
PDF
SnapLogic corporate presentation
PDF
What's new in Nuxeo 5.2? - Solutions Linux 2009
PDF
Java EE Technical Keynote - JavaOne India 2011
PDF
Windows Phone and Open Source 1
PDF
Grameen Solutions Technology Skills
PDF
Live Integration Framework
PDF
Nuxeo Summer Seminar 2007 - Nuxeo Platform 5.1 (EN)
PDF
03.egovFrame Runtime Environment Training Book
PPTX
Visual Studio 2010 IDE Enhancements - Alex Mackey, Readify
PPTX
Overview Of .Net 4.0 Sanjay Vyas
PDF
Leadership Symposium on Digital Media in Healthcare
OSGi Service Platform 4.2
An introduction to OSGi
Florian adler minute project
What's New in GWT 2.2
Entity Framework Today (May 2012)
Anarchist guide to titanium ui
Workshop OSGI PPT
XEO Framework - TDose 2011
Ese2008 Swordfish
SnapLogic corporate presentation
What's new in Nuxeo 5.2? - Solutions Linux 2009
Java EE Technical Keynote - JavaOne India 2011
Windows Phone and Open Source 1
Grameen Solutions Technology Skills
Live Integration Framework
Nuxeo Summer Seminar 2007 - Nuxeo Platform 5.1 (EN)
03.egovFrame Runtime Environment Training Book
Visual Studio 2010 IDE Enhancements - Alex Mackey, Readify
Overview Of .Net 4.0 Sanjay Vyas
Leadership Symposium on Digital Media in Healthcare

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Cloud computing and distributed systems.
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PPT
Teaching material agriculture food technology
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Agricultural_Statistics_at_a_Glance_2022_0.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Encapsulation_ Review paper, used for researhc scholars
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Cloud computing and distributed systems.
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
NewMind AI Weekly Chronicles - August'25 Week I
Building Integrated photovoltaic BIPV_UPV.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Advanced methodologies resolving dimensionality complications for autism neur...
Mobile App Security Testing_ A Comprehensive Guide.pdf
NewMind AI Monthly Chronicles - July 2025
Teaching material agriculture food technology
Chapter 3 Spatial Domain Image Processing.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto

Modularity with OSGi

  • 1. OSGi & Modularity 2011-06-23 IBM Montpellier by Peter Kriens dinsdag 28 juni 2011 1
  • 5. Productivity Application Complexity dinsdag 28 juni 2011 3
  • 6. Productivity Assembly Application Complexity dinsdag 28 juni 2011 3
  • 7. Productivity Structured Programming Assembly Application Complexity dinsdag 28 juni 2011 3
  • 8. Productivity Structured Object Oriented Programming Programming Assembly Application Complexity dinsdag 28 juni 2011 3
  • 9. Productivity Service Oriented Programming? Structured Object Oriented Programming Programming Assembly Application Complexity dinsdag 28 juni 2011 3
  • 10. dinsdag 28 juni 2011 4
  • 12. Extensions Application Application Convenience Foundation Basic Something Core Java VM dinsdag 28 juni 2011 4
  • 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 Libs log4j barcode4j axis batik commons xmlrpc geronimo httpunit freemarker ezmorph fop derby xmlgraphics .. Java VM Java VM rt jce jsse plugin sunjce_prov. dnsns .. dinsdag 28 juni 2011 4
  • 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 Libs log4j barcode4j axis batik commons xmlrpc geronimo httpunit freemarker ezmorph fop derby xmlgraphics .. Java VM Java VM rt jce jsse plugin sunjce_prov. dnsns .. dinsdag 28 juni 2011 4
  • 15. 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 dinsdag 28 juni 2011 5
  • 16. 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 dinsdag 28 juni 2011 5
  • 17. dinsdag 28 juni 2011 6
  • 18. dinsdag 28 juni 2011 7
  • 19. dinsdag 28 juni 2011 8
  • 20. dinsdag 28 juni 2011 8
  • 21. dinsdag 28 juni 2011 9
  • 23. low coupling, high cohesion & dinsdag 28 juni 2011 9
  • 24. low coupling, high cohesion & encapsulation dinsdag 28 juni 2011 9
  • 25. dinsdag 28 juni 2011 10
  • 26. Applications S (bundles) E Service C U Life Cycle R I Module T Y Execution Environment OS + Hardware dinsdag 28 juni 2011 11
  • 27. Code protected boolean report(Reporter reporter) { if (reporter.getWarnings().size() > 0) { System.err.println("Warnings"); for (Iterator<String> e = reporter. getWarnings().iterator(); e.hasNext();) { System.err.println(" " + e.next()); } } return false; } dinsdag 28 juni 2011 12
  • 28. Functions protected boolean report(Reporter reporter) { if (reporter.getWarnings().size() > 0) { System.err.println("Warnings"); for (Iterator<String> e = reporter. getWarnings().iterator(); e.hasNext();) { System.err.println(" " + e.next()); } } return false; } dinsdag 28 juni 2011 13
  • 29. Classes protected boolean report(Reporter reporter) { if (reporter.getWarnings().size() > 0) { System.err.println("Warnings"); for (Iterator<String> e = reporter. getWarnings().iterator(); e.hasNext();) { System.err.println(" " + e.next()); } } return false; } dinsdag 28 juni 2011 14
  • 30. Classes Class D Class C Class B Class A dinsdag 28 juni 2011 14
  • 31. Packages Class D Class C Class B Class A dinsdag 28 juni 2011 15
  • 32. Packages Class D Class C dinsdag 28 juni 2011 15
  • 33. Bundles Bundle A Bundle B p q-1.4 Bundle A . dinsdag 28 juni 2011 16
  • 34. Bundles Bundle A Bundle B p p q-1.4 q-[1.2,1.8) Bundle A r r . import private export dinsdag 28 juni 2011 17
  • 35. Bundles Bundle A Bundle B imports p p q-1.4 q-[1.2,1.8) Bundle A r r . import private export dinsdag 28 juni 2011 17
  • 36. Bundles Bundle A Bundle B imports p p q-1.4 exports q-[1.2,1.8) Bundle A r r . import private export dinsdag 28 juni 2011 17
  • 37. MANAGE- System MENT bundle BUNDLE Bundle X-v2 X Bundle Bundle B A dinsdag 28 juni 2011 18
  • 38. Services interface Foo { void foo(); } void foo() { … … s.foo() } … dinsdag 28 juni 2011 19
  • 39. dinsdag 28 juni 2011 20
  • 40. dinsdag 28 juni 2011 20
  • 41. dinsdag 28 juni 2011 20
  • 42. dinsdag 28 juni 2011 21
  • 43. dinsdag 28 juni 2011 21
  • 44. bundle A-1.2 c b bundle C-1.0 bundle a B-4.1 dinsdag 28 juni 2011 21
  • 45. dinsdag 28 juni 2011 22
  • 46. dinsdag 28 juni 2011 22
  • 47. The Component Framework dinsdag 28 juni 2011 22
  • 48. dinsdag 28 juni 2011 23