Skip to content

Latest commit

 

History

History
42 lines (23 loc) · 2.27 KB

README.md

File metadata and controls

42 lines (23 loc) · 2.27 KB

The Linker (jlink) example

Another one of the new tools that Jigsaw brings is 'jlink' which is a tool to produce custom run-time images, a single artefact containing both Java and the modules being run.

jlink is the linker tool and can be used to link a set of modules, along with their transitive dependencies, to create a custom modular run-time image (see JEP 220). The tool currently requires that modules on the module path be packaged in modular JAR or JMOD format.

In example creates a run-time image that contains the module com.greetings and its transitive dependencies:

The directory mlib on the module path contains the artifact for module com.greetings.

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.

Compile the 'hello world' example using:

$ ./compile.sh

Create JAR modules out of the class files:

$ ./packaging.sh

Run jlink to produce a new run-time image (distributable JDK + your app) for the 'hello world' example:

$ ./link.sh

Run the new run-time image (distributable JDK + your app):

$ ./run.sh

Inspect the images / artifacts created in the above process:

$ ./inspect.sh

Check the contents of all 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. Especially in the run.sh script, as this one reveals some interesting details about distributable JDK binaries + modules, module images.

See ../01_Greetings/README.md to learn more about package and module naming conventions and how to avoid confusions between them.

The jlink tool supports many advanced options to customize the generated image, see jlink --help for more options. $JAVA_HOME/jmods is the directory containing java.base.jmod and the other standard and JDK modules. If you using your own build of OpenJDK then the jmod files are in $BUILDOUTPUT/images/jmods, where $BUILDOUTPUT is the build output directory.

We will also see the jimage command in this example and learn how to create a JDK image with a smaller footprint.