SlideShare a Scribd company logo
Building modular applications




Kamal Govindraj
TenXperts Technologies
About Me
   Programming for 13 Years
   Architect @ TenXperts Technologies
   Trainer / Consultant @ SpringPeople
    Technologies
   Enteprise applications leveraging open source
    frameworks (spring,hibernate, gwt,jbpm..)
   Key contributor to InfraRED & Grails jBPM
    plugin (open source)
Agenda
   Importance of Moudlarity
   How to?
   Challenges
   Tools & best practices
   OSGI
Modularity
   Break application into smaller modules
   Interaction between module via interfaces
   Helps in dealing with complexity
   Break development into smaller teams
   Reuse
   Easier to maintain
Horizontal / Technology
                                  Presentation
   Catalog    Inventory
             Inventory    Order



                                     Service
                                    / Domain




                                   Persistence
Vertical / Functional
                  Order
                                        Presentation
                            Inventory
                  Catalog




Order
                                         Application

          Inventory


Catalog
Vertical is better
   Scales better
    −   Team size
    −   Feature
   Separate concerns along the lines of business
    functionality
   Easier to maintain
Physical Vs Logical
   Logical separation provides most of the
    benefits
   Phyiscal separation issues
    −   Performance overheads
    −   Reduces reliability
    −   Increased Complexity
Package guidelines
               Visible to other
                  modules

                      Visible to other
                         modules




                    Private classes /
                    Not visible outside
                       this module
Challenges
   Builds become more complex
   Changes across module boundaries are
    harder
   Integration issue
   Wiring the system together
Tools & Frameworks
   Maven
    −   Simplifies multi module builds
    −   Declarative dependency
    −   Transitive dependency handling
    −   Versioned
Maven in action
Dependency Injection
   Takes care of wiring together components
    from different modules
   The modules are loosely coupled depending
    only on the published interfaces
   Spring Framework / Google Guice / EJB 3.0 ..
Java module limitation
   Jar is the basic construct for defining modules
   Only a compile time construct
    −   Modules are not preserved at run time
   No way to enforce strict separation
   Difficult to have multiple versions of same
    module in a vm
   Not easy to share modules across multiple
    applications
Runtime modularity
   OSGI
    −   A mature specification & platform
    −   Eclipse is built on OSGI
    −   So are many of the application servers
    −   Multiple implementations (Equinox, Felxi,
        Knopflerfish
   JSR 294 – Simple module system for Java
OSGI
   A module is a jar with metadata (MANIFEST
    file)
    −   exported packages
    −   Imported packages with versions
    −   Other module dependecies with versions
   OSGI container
    −   Manages module lifecycle
    −   Resolve dependencies
    −   Enforces strict separation
OSGI != modular
   OSGI can make a existing modular
    application work better
   Breaking up a system into well defined
    modules and maintaining it that way is the
    harder part
   Tools can help – but ...
Questions ?
Thank You.

More Related Content

PPTX
How to Build Composite Applications with PRISM
PPT
SpringSource dm Server (formerly known as SpringSource Application Platform)
PDF
Lec 2 30_jul13
PPTX
Scaling Up And Speeding Up Video Analytics Inside Database Engine
PPTX
New Features in Windows Azure
PDF
Christof Zahneissen - Interactive Workshop Product Evolution
PDF
CERTIFICATE_INFO_F1706923_140
PPTX
Moving to moodle 2
How to Build Composite Applications with PRISM
SpringSource dm Server (formerly known as SpringSource Application Platform)
Lec 2 30_jul13
Scaling Up And Speeding Up Video Analytics Inside Database Engine
New Features in Windows Azure
Christof Zahneissen - Interactive Workshop Product Evolution
CERTIFICATE_INFO_F1706923_140
Moving to moodle 2

Viewers also liked (8)

PPT
Phone for Me, Tablet for We: Building a multi screen app in One Hour
PPT
Rsc update feb 2014
PDF
Cloud development made easy with cloud foundry indicthreads cloud computing...
PPTX
Indic threads pune12-recommenders-apache-mahout
PPTX
The move to m2 colchsfc
PPTX
Indic threads pune12-typesafe stack software development on the jvm
PPTX
Indic threads pune12-accelerating computation in html 5
PPTX
Http2 is here! And why the web needs it
Phone for Me, Tablet for We: Building a multi screen app in One Hour
Rsc update feb 2014
Cloud development made easy with cloud foundry indicthreads cloud computing...
Indic threads pune12-recommenders-apache-mahout
The move to m2 colchsfc
Indic threads pune12-typesafe stack software development on the jvm
Indic threads pune12-accelerating computation in html 5
Http2 is here! And why the web needs it
Ad

Similar to Building modular applications (20)

PDF
Modular Java EE in the Cloud
PDF
Calling all modularity solutions
PDF
Calling All Modularity Solutions: A Comparative Study from eBay
PDF
IBM Sponsorship Keynote: Towards a Modularity Maturity Model - Graham Charters
PDF
TS 5341 Rethinking the ESB
PDF
OSGi at eBay: JavaOne 2010
PDF
Developing polyglot applications on Cloud Foundry (#oredev 2012)
PDF
Spagic 3: OSGi Universal Middleware for an effective SOA solution
PDF
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
PDF
Enterprise OSGi at eBay
PDF
Java magazine july/august 2012
PDF
Interoperable Open Architecture through a Common Component Model
PDF
Model Driven Architecture (MDA): Motivations, Status & Future
PDF
Keynote-Service Orientation – Why is it good for your business
PPTX
Java Modularity with OSGi
PDF
Developing modular, polyglot applications with Spring (SpringOne India 2012)
PDF
From ci to cd - LavaJug 2012
PDF
Alfresco day madrid jeff potts - activiti
PDF
Alfresco Day Madrid - Jeff Potts - Activiti
PDF
Rails, ExtJs, and Netzke
Modular Java EE in the Cloud
Calling all modularity solutions
Calling All Modularity Solutions: A Comparative Study from eBay
IBM Sponsorship Keynote: Towards a Modularity Maturity Model - Graham Charters
TS 5341 Rethinking the ESB
OSGi at eBay: JavaOne 2010
Developing polyglot applications on Cloud Foundry (#oredev 2012)
Spagic 3: OSGi Universal Middleware for an effective SOA solution
Journey from Monolith to a Modularized Application - Approach and Key Learnin...
Enterprise OSGi at eBay
Java magazine july/august 2012
Interoperable Open Architecture through a Common Component Model
Model Driven Architecture (MDA): Motivations, Status & Future
Keynote-Service Orientation – Why is it good for your business
Java Modularity with OSGi
Developing modular, polyglot applications with Spring (SpringOne India 2012)
From ci to cd - LavaJug 2012
Alfresco day madrid jeff potts - activiti
Alfresco Day Madrid - Jeff Potts - Activiti
Rails, ExtJs, and Netzke
Ad

More from IndicThreads (20)

ODP
Understanding Bitcoin (Blockchain) and its Potential for Disruptive Applications
PPT
Go Programming Language - Learning The Go Lang way
PPT
Building Resilient Microservices
PPT
App using golang indicthreads
PDF
Building on quicksand microservices indicthreads
PDF
How to Think in RxJava Before Reacting
PPT
Iot secure connected devices indicthreads
PDF
Real world IoT for enterprises
PPT
IoT testing and quality assurance indicthreads
PPT
Functional Programming Past Present Future
PDF
Harnessing the Power of Java 8 Streams
PDF
Building & scaling a live streaming mobile platform - Gr8 road to fame
PPTX
Internet of things architecture perspective - IndicThreads Conference
PDF
Cars and Computers: Building a Java Carputer
PPTX
Scrap Your MapReduce - Apache Spark
PPT
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
PPTX
Speed up your build pipeline for faster feedback
PPT
Unraveling OpenStack Clouds
PPTX
Digital Transformation of the Enterprise. What IT leaders need to know!
PDF
Architectural Considerations For Complex Mobile And Web Applications
Understanding Bitcoin (Blockchain) and its Potential for Disruptive Applications
Go Programming Language - Learning The Go Lang way
Building Resilient Microservices
App using golang indicthreads
Building on quicksand microservices indicthreads
How to Think in RxJava Before Reacting
Iot secure connected devices indicthreads
Real world IoT for enterprises
IoT testing and quality assurance indicthreads
Functional Programming Past Present Future
Harnessing the Power of Java 8 Streams
Building & scaling a live streaming mobile platform - Gr8 road to fame
Internet of things architecture perspective - IndicThreads Conference
Cars and Computers: Building a Java Carputer
Scrap Your MapReduce - Apache Spark
Continuous Integration (CI) and Continuous Delivery (CD) using Jenkins & Docker
Speed up your build pipeline for faster feedback
Unraveling OpenStack Clouds
Digital Transformation of the Enterprise. What IT leaders need to know!
Architectural Considerations For Complex Mobile And Web Applications

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Spectroscopy.pptx food analysis technology
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Cloud computing and distributed systems.
PPT
Teaching material agriculture food technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
MYSQL Presentation for SQL database connectivity
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Chapter 3 Spatial Domain Image Processing.pdf
Unlocking AI with Model Context Protocol (MCP)
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectroscopy.pptx food analysis technology
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation_ Review paper, used for researhc scholars
Dropbox Q2 2025 Financial Results & Investor Presentation
Cloud computing and distributed systems.
Teaching material agriculture food technology
Understanding_Digital_Forensics_Presentation.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Per capita expenditure prediction using model stacking based on satellite ima...
Programs and apps: productivity, graphics, security and other tools
Reach Out and Touch Someone: Haptics and Empathic Computing

Building modular applications

  • 1. Building modular applications Kamal Govindraj TenXperts Technologies
  • 2. About Me  Programming for 13 Years  Architect @ TenXperts Technologies  Trainer / Consultant @ SpringPeople Technologies  Enteprise applications leveraging open source frameworks (spring,hibernate, gwt,jbpm..)  Key contributor to InfraRED & Grails jBPM plugin (open source)
  • 3. Agenda  Importance of Moudlarity  How to?  Challenges  Tools & best practices  OSGI
  • 4. Modularity  Break application into smaller modules  Interaction between module via interfaces  Helps in dealing with complexity  Break development into smaller teams  Reuse  Easier to maintain
  • 5. Horizontal / Technology Presentation Catalog Inventory Inventory Order Service / Domain Persistence
  • 6. Vertical / Functional Order Presentation Inventory Catalog Order Application Inventory Catalog
  • 7. Vertical is better  Scales better − Team size − Feature  Separate concerns along the lines of business functionality  Easier to maintain
  • 8. Physical Vs Logical  Logical separation provides most of the benefits  Phyiscal separation issues − Performance overheads − Reduces reliability − Increased Complexity
  • 9. Package guidelines Visible to other modules Visible to other modules Private classes / Not visible outside this module
  • 10. Challenges  Builds become more complex  Changes across module boundaries are harder  Integration issue  Wiring the system together
  • 11. Tools & Frameworks  Maven − Simplifies multi module builds − Declarative dependency − Transitive dependency handling − Versioned
  • 13. Dependency Injection  Takes care of wiring together components from different modules  The modules are loosely coupled depending only on the published interfaces  Spring Framework / Google Guice / EJB 3.0 ..
  • 14. Java module limitation  Jar is the basic construct for defining modules  Only a compile time construct − Modules are not preserved at run time  No way to enforce strict separation  Difficult to have multiple versions of same module in a vm  Not easy to share modules across multiple applications
  • 15. Runtime modularity  OSGI − A mature specification & platform − Eclipse is built on OSGI − So are many of the application servers − Multiple implementations (Equinox, Felxi, Knopflerfish  JSR 294 – Simple module system for Java
  • 16. OSGI  A module is a jar with metadata (MANIFEST file) − exported packages − Imported packages with versions − Other module dependecies with versions  OSGI container − Manages module lifecycle − Resolve dependencies − Enforces strict separation
  • 17. OSGI != modular  OSGI can make a existing modular application work better  Breaking up a system into well defined modules and maintaining it that way is the harder part  Tools can help – but ...