This first example is a module named com.greetings that simply prints "Greetings!".
The module consists of two source files:
the module declaration (module-info.java) and the Main class.
Java naming conventions for modules and packages: the src folder contains a module com.greetings (file-system: com.greetings) which in this case is also the name of the module.
This module contains a package called com.greetings (file-system: com/greetings).
Perform the below commands to see the contents of the respective Java classes contained in the src folder:
$ cat src/com.greetings/module-info.java
$ cat src/com.greetings/com/greetings/Main.java
Note: in case one of the below .sh script fails due to the tree command, please take a look at Download and install the tree and wget command section in the README.md file and apply the appropriate solution.
The source code is compiled into the directory mods/com.greetings with the following commands:
$ ./compile.sh
And we run the example with the following command:
$ ./run.sh
Check the contents of both these script files (use the cat command or a text editor) to see what they are doing and why - interesting instructions and information in there.
Please do not get confused with the naming conventions of modules with that of packages, here's how they go:
Modules in Java follow the below convention, the name is the literal name of the folder itself:
| Module name | File system naming* |
|---|---|
| com.greetings.hello | com.greetings.hello |
| com.greetings | com.greetings |
| com | com |
Packages in Java follow the usual convention:
| Package name | File system naming* |
|---|---|
| com.greetings.hello | com/greetings/hello |
| com.greetings | com/greetings |
| abc | abc |
*by File system naming, we mean the directory structure created as a result of a module or package