It also specifies a repository for storing these collections, or modules, and identifies how they can be discovered, loaded and checked for integrity.
JSR 277 later was put on hold and Project Jigsaw[2] was created to modularize the JDK.
The JDK will verify dependencies and interactions between modules both at compile-time and runtime.
Note that in Java versions 9 through 16, whether such 'illegal access' is de facto permitted depends on a command line setting.
[15] A couple of articles exploring how the Java Module System and OSGi could interoperate were published in 2016.