Iced Tea in Crete 2012:Java Application Architecture - modularity patterns

From WikiEducator
Jump to: navigation, search
Java Application Architecture - modularity patterns
Convenor: Thomas Darimont
Participants:
  • List
  • them
  • here
  • Thomas Darimont
Summary:
  • We discussed general modularity patterns and how they can be implementend with an OSGi Framework.
  • In addition to that we discussed a more lightweight approach to modularization than osgi based on the Java Service Loader API.
Recommendations:

No recommendations provided.

The following modularity patterns were discussed:

  • Base Patterns:
    • Manage Relationsships / Dependencies (Explicitly model the dependencies of your modules)
    • Make your modules reuseable
    • Provide cohesive modules - don't do to many things in one module
  • Dependency Patterns:
    • Avoid Acyclic Relationships
    • Levelize Modules
    • Represent the physical Layers as modules
    • Define container independent modules
    • Make your modules independently deployable
  • Usability Patterns:
    • Have one published interface per module (=> A set of public classes / interfaces / public methods)
    • Make your modules externally configurable
    • Always provide a default implementation for a module interface
    • Provide an module facade to make it easier for the clients to work with the module
  • Extensibility Patterns:
    • Abstract modules
    • Use an indirection layer (e.g. factories) to get implementations
    • Separate abstractions
  • Utility Patterns
    • Colocate exceptions
    • Levelize your module builds
    • Provide an explicit test-module per module