Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications