There's one aspect of module dependency that you might have noticed is missing from what we've covered so far--versioning. When you declare a module definition, can you specify a version number for the module? Also, when you specify that a certain module requires another module, can you also specify which version of module it needs? The answer to both the questions is no. For various reasons, module versioning is not a feature that's available in the Java Module system. It is not a problem the Java platform attempts to solve.
The biggest advantage and utility with module versioning comes with dependency management. Think of tools like Maven or Gradle. These tools allow you to configure specific versions of external dependencies which they can then automatically download for you from some remote repository, and then make them available in the classpath...