Java 9, a new kind of programming component called module has been introduced. A module is a self-describing collection of code and data and has a name to identify it.
With the Modules component, following enhancements has been added in Java 9 −
A new optional phase,link time, is introduced. This phase is in-between compile time and run time. During this phase, a set of modules can be assembled and optimized, making a custom runtime image using jlink tool.
javac, jlink, and java have additional options to specify module paths, which further locate definitions of modules.
JAR format updated as modular JAR, which contains module-info.class file in its root directory.
JMOD format introduced, a packaging format (similar to JAR) which can include native code and configuration files.
Following the steps to create a module say com.howcodex.greetings.
Create a folder C:\>JAVA\src. Now create a folder com.howcodex.greetings which is same as the name of module we're creating.
Create module-info.java in C:\>JAVA\src\com.howcodex.greetings folder with following code.
module-info.java
module com.howcodex.greetings { }
module-info.java is the file which is used to create module. In this step we've created a module named com.howcodex.greetings. By convention this file should reside in the folder whose name is same as module name.
Add the source code in the module. Create Java9Tester.java in C:\>JAVA\src\com.howcodex.greetings\com\ howcodex\greetings folder with following code.
Java9Tester.java
package com.howcodex.greetings; public class Java9Tester { public static void main(String[] args) { System.out.println("Hello World!"); } }
By convention, the source code of a module to lie in same directory which is the name of the module.
Create a folder C:\>JAVA\mods. Now create a folder com.howcodex.greetings which is same as the name of module we've created. Now compile the module to mods directory.
C:/ > JAVA > javac -d mods/com.howcodex.greetings src/com.howcodex.greetings/module-info.java src/com.howcodex.greetings/com/howcodex/greetings/Java9Tester.java
Let's run the module to see the result. Run the following command.
C:/>JAVA>java --module-path mods -m com.howcodex.greetings/com.howcodex.greetings.Java9Tester
Here module-path provides the module location as mods and -m signifies the main module.
It will print the following output on console.
Hello World!