Decomposing Java applications
summary
Argues that naive splitting into libraries or microservices fails without enforced boundaries, then shows working code examples: compiling the same app on Java 8 allows illegal access but compiling with Java Platform Module System (JPMS) blocks it at compile/run time; implements swappable transport implementations via Java ServiceLoader and then via OSGi service registry to install replacements at runtime; demonstrates OSGi package semantic versioning that rejects incompatible updates; the demos run locally and show enforced encapsulation and dynamic replacement actually working.
AI-written summary · about
chapters (12)
- 0:00Introduction and speaker background
- 1:53The challenge of explaining software
- 3:19Modularity and Conway's Law
- 7:19From monolith to service-oriented architecture
- 16:25Universal microservices architecture flaws
- 20:23Business processes over entities
- 27:21Java Platform Module System
- 33:18Resilience with service abstraction
- 41:54Dynamic service replacement with OSGi
- 48:34Mental model for isolation
- 50:22Production constraints and versioning
- 57:12The importance of understanding design goals








