Readability is an important concept in modularity and it describes how modules work with each other. We've been using module dependencies to have one module require another module and use its APIs. Whenever a module depends on another module, the first module is said to read the second module. Also, the second module is said to be readable by the first. When a module reads another module, it has access to the types exported by the second module. In other words, the readability relationship between two modules is the arrow in the module graph that we've seen so far.
For example, in the address book viewer application, the module packt.addressbook reads packt.sortutil, packt.contact, and java.logging. That's because it requires those modules in the module descriptor.
Consider an example. The following diagram shows the relationships between three...