Java 9 brings modules as a core concept to the platform, but it’s more than just a language feature. With modules in Java, we can improve the design of code to increase maintainability and extensibility. As with every design principle, modularity requires thought and trade-offs to really reap the benefits.
This session covers design practices for making codebases more maintainable and extensible. You will also learn about trade-offs to help you make the best choices. Topics include hiding implementations, using services for extensibility, dependency injection, avoiding cycles, optional dependencies, and dynamically loading modules. Familiarity with modular development is helpful but not required.