The Java Modules with @ASFMavenProject (4) series continues!
Decouple consumers from implementations using uses/provides/ServiceLoader β the command-line module no longer needs to know which AnalyzerService implementation it gets. True inversion of control built into the Java module system.
My Java Modules with @ASFMavenProject (4) series continues!
Cleanly separate API and implementation in Java modules β and why mixing both is a common antipattern.
https://maven.aschemann.net/blog/2026/03/26/api-and-implementation/
In the third part of my Java Modules with @ASFMavenProject (4) series, I explore strong encapsulation β how to properly hide implementation details in internal packages so that neither the compiler nor the JVM allows other modules to access them.
Part 2 of my Java Modules with @ASFMavenProject (4) series! This follow-up tackles the homework from the first article: missing resources and JAR packaging challenges in the module source hierarchy.
Workarounds included until Maven 4 fully catches up.
https://maven.aschemann.net/blog/2026/02/26/modular-basics-homework/
