Skip to content

JDK Tools

Erik C. Thauvin edited this page Sep 3, 2024 · 9 revisions

bld provide direct access to various tools provided with the JDK, including:

This tool can be used to assemble and optimize a set of modules and their dependencies into a custom runtime image.

For example, assembling a module with a launcher in bld might look something like:

var options = new JlinkOptions()
        .modulePath(new File(buildDirectory(), "jmod"))
        .addModules("com.example.mylib")
        .launcher("foo", "com.example.mylib", "com.example.mylib.Foo")
        .output(new File(buildDirectory(), "jlink")
        .compress(ZipCompression.ZIP_9);

new JlinkOperation().jlinkOptions(options).execute();

Please check the JlinkOperation documentation for all available configuration options.

This tool can be used to create JMOD files and list the content of existing JMOD files.

For example, creating a JMOD file in bld might look something like:

var options = new JmodOptions()
        .classpath(new File(buildDistDirectory(), "mylib-0.1.jar")
        .compress(ZipCompression.ZIP_9);

new JmodOperation()
        .operationMode(OperationMode.CREATE)
        .jmodFile(new File(new File(buildDirectory(), "jmod"), "com.example.mylib.jmod"))
        .jmodOptions(options)
        .execute();

Please check the JmodOperation documentation for all available configuration options.

This tool can be used to package self-contained Java applications.

For example, packaging an application in bld, might look something like:

var jlinkOptions = new JlinkOptions()
        .compress(ZipCompression.ZIP_9)
        .stripNativeCommands(true);

var options = new JpackageOptions()
        .input(buildDistDirectory())
        .name("MyApp")
        .mainJar("myapp-0.1.jar")
        .javaOptions("--enable-preview")
        .dest(new File(buildDirectory(), "packages")
        .verbose(true)
        .jlinkOptions(jlinkOptions);
            
new JpackageOperation().jpackageOptions(options).execute();

Please check the JpackageOperation documentation for all available configuration options.


Next learn more about Examples

Clone this wiki locally