unnamed module in Java

An unnamed module is a jar construct without a module-info.java declaration. Since an unnamed module can render all other modules, this doesn’t require a current application to be modularized before using Java 9. One thing to note is an unnamed module that exports whole its packages doesn’t mean a named module can access unnamed module packages. This is because there is no way in module-info.java to declare requires unnamed module. An unnamed module will require all other modules and will export whole its packages as well. This gives a vast privilege to new applications to use Java 9 and Java 9 doesn’t allow named modules to read unnamed modules. This only ensures other unnamed modules can access its packages.
* It exports all its packages and opens all its packages to all other modules.
    * It does not mean that code in a named module can access types in the unnamed module. A named module cannot even declare a dependence upon the unnamed module. This restriction is intentional since allowing named module to depend upon the arbitrary content of the class path would make reliable configuration impossible.
* Unnamed modules can access public types in all exported packages in all modules.
* All classes in the unnamed module can read all classes exported by all the Java modules found on the module path.
* We can use the -classpath argument to the Java VM when running an application.