Where can I find the authoritative definition of the Java SE 9 module dependencies and relationships?
When I'm looking at the "Modular platform" [1] section of the "Java SE 9 Public Review Specification", I can see the "module graph". Its module dependencies seem to correspond to the Java 9 API documentation [2]. For the "java.desktop" package for example, both define "java.datatransfer" and "java.xml" as its transitive dependencies. However when I'm looking at the source code [3], I can see that "java.desktop" also requires "java.prefs" (non-transitively). Why is this dependency not recorded in the module graph and the API documentation? For "java.corba" it seems even more confusing. The API documentation list "java.desktop" and "java.rmi" as transitively required, but also explicitly "java.datatransfer" and "java.xml" as "additionally required" modules, although they are implicitly reachable trough "java.desktop" anyway. On the other hand, the module-info of "java.corba" [5] only lists "java.desktop" and "java.rmi" as transitively required but not "java.datatransfer" and "java.xml". Additionally "java.logging", "java.naming" and "java.transaction" are required non-transitively (but these requirements are not recorded, neither in the module graph nor in the API documentation). So to keep a long story short: 1. What of these module relationships and dependencies is mandated by the Java SE 9 standard and what is implementation specific? 2. Where can I find the authoritative definition of the module relationships and dependencies mandated by the Java SE 9 standard? 3. Is it acceptable for an "independent implementation" to add additional "requires" and/or "requires transitive" edges from a standard module to another standard module? 4. Were can I find the authoritative package to module mapping mandated by the Java SE 9 standard? Is this just the current Java 9 API documentation? Thank you and best regards, Volker [1] http://cr.openjdk.java.net/~iris/se/9/java-se-9-pr-spec-01/java-se-9-spec.html#s7 [2] http://download.java.net/java/jdk9/docs/api [3] http://hg.openjdk.java.net/jdk9/dev/jdk/file/3bffd193a3a5/src/java.desktop/share/classes/module-info.java [4] http://download.java.net/java/jdk9/docs/api/java.corba-summary.html [5] http://hg.openjdk.java.net/jdk9/dev/corba/file/493011dee80e/src/java.corba/share/classes/module-info.java