Using jlink, you can create customized runtime images containing specific modules for your application, eliminating the need for a JDK on the target system. This tool optimizes image size and enhances VM performance during linking. It distinguishes between runtime images and application images, where application images include project-specific modules. jlink requires the specification of modules and output folder to generate images. You can also create custom launchers for your modules. It’s essential to manually include service provider modules to optimize image size. Additionally, you can generate images across different operating systems. Experiment with different optimizations to enhance image performance. Test thoroughly to ensure effectiveness.
https://dev.java/learn/jlink/