Once you split your Java project into components, you can have multiple compile classpaths. You can leverage that to have neatly isolated components with "plain old Java" at development time. In my second video on Java Modularity, I talk about how this is set up with Gradle and why to distinguish between