Java Application Architecture: Modularity Patterns with Examples Using OSGi (Robert C. Martin Series)