JLink là công cụ linker mới được dùng để tạo JRE tùy chỉnh (customized JRE) của riêng chúng ta. Thông thường chúng ta chạy chương trình bằng JRE mặc định do Oracle cung cấp. Nếu cần tạo JRE riêng thì sử dụng công cụ này. JLink giúp tạo JRE chỉ chứa các class bắt buộc để chạy ứng dụng, giúp giảm kích thước API và loại bỏ sự phụ thuộc vào JRE đầy đủ.
Trong Java 9, có một giai đoạn mới giữa việc biên dịch mã và thực thi gọi là link time (thời gian liên kết). Link time là giai đoạn tùy chọn giữa compile-time (thời gian biên dịch) và runtime (thời gian chạy).
Lệnh tạo JRE tùy chỉnh
jlink --module-path --add-modules --limit-modules --output
- module-path: Đường dẫn nơi các module có thể quan sát được được khám phá bởi linker. Có thể là file JAR mô-đun, file JMOD và các module.
- add-modules: Tên các module cần thêm vào hình ảnh runtime, các module này có thể qua sự phụ thuộc bắc cầu khiến thêm các module khác.
- limit-modules: Giới hạn tập hợp các module có thể quan sát được.
- output: Thư mục chứa hình ảnh runtime kết quả.
Ví dụ thực tế
jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp
Trong lệnh trên, giá trị module-path là đường dẫn các thư mục chứa module đã đóng gói. JAVA_HOME/jmods là thư mục chứa java.base.jmod, các module chuẩn và JDK khác. Thư mục mlib trên module path chứa artifact cho module com.greetings.