Java 9 was released for General Availability (GA) on September 21, 2017. There are many new features shipped with Java 9. Among them, modularity is the defining feature for Java 9.
So far, there has been a problem of modularity in Java, especially significant for large codebases. Every public class can be accessed by any other class in the classpath, leading to inadvertent usage of classes. In addition, the classpath presents potential problems, such as the inability to know whether or not there are duplicated JARs. To solve these problems, Java 9 provides the Java Platform Module System, which allows to create modular JAR files. This type of modules contains an additional module descriptor called module-info.java. The content of such files is quite simple: it declares dependencies to other modules using the keyword requires, and exports its own packages with the keyword...