Java 9 allows you to split your code into modules and grant access only to certain packages and thus hide even public classes from external use.
Splitting up your code into modules directly communicates the architectural design, simplifies maintenance and reuse and can slow down the increase of technical debt.
In this talk we will have a look at some strategies which help you to split up your existing monolithic code base into several smaller modules. Firstly, we need tools to easily identify which parts can be split out. Then we apply some refactoring tricks to make it as easy as possible. Finally, we look at some more difficult examples and use design patterns to disentangle them.