Java Modularity is software modularity, which specifically addresses the challenges of providing strong modularity capabilities in a Java language environment. Technology that improves Java Modularity must provide for the characteristics that good software modularity in‑general provides: loose coupling, high cohesion, and improved readability.
Java Modularity reduces the overall complexity, and improves the maintainability, and scalability, of software written in Java.
There are primarily two specifications/set of specifications addressing some form of Java Modularity in the Java language environment, the Java Platform Module System (JPMS), and the OSGi Core Specifications. Each provides different mechanisms for Java Modularity, JPMS being primarily targeted at modularizing the Java Platform itself, and the OSGi Core Specifications primarily targeting the modularization of applications written in Java.
For more information on Java Modularity:
Letter to our OSGi User Community RE: the Java Platform Module System (JPMS)
…the modularity capabilities in OSGi and JPMS are not the same. The OSGi Alliance’s modularity experience, earned through the evolution of OSGi, has proven there are specific requirements in modularizing an application that is assembled with code from multiple sources, which have independent release cycles. Given these requirements, JPMS is not suitable for most real-world applications and we therefore caution against the use of JPMS for the application layer.