JLINK(1) دستورات JDK JLINK(1)

jlink-openjdk21 - مونتاژ و ایجاد یک تصویر زمان اجرای سفارشی جاوا در OpenJDK 21

jlink [گزینه‌ها] --module-path مسیر_ماژول --add-modules ماژول [, ماژول...]

گزینه‌ها (options)
گزینه‌های خط فرمان که با فاصله از هم جدا شده‌اند. بخش گزینه‌های JLINK را ببینید.
مسیر_ماژول (modulepath)
مسیری که ابزار jlink ماژول‌های قابل مشاهده را در آن پیدا می‌کند. این ماژول‌ها می‌توانند فایل‌های JAR ماژولار، فایل‌های JMOD یا ماژول‌های پوشه‌ای (exploded) باشند.
ماژول (module)
نام ماژول‌هایی که باید به تصویر زمان اجرا اضافه شوند. ابزار jlink این ماژول‌ها و وابستگی‌های گذرا (transitive) آن‌ها را اضافه می‌کند.

ابزار jlink مجموعه‌ای از ماژول‌ها را به همراه وابستگی‌های گذرای آن‌ها پیوند (link) می‌دهد تا یک تصویر زمان اجرای سفارشی ایجاد کند.

نکته:

توسعه‌دهندگان مسئول به‌روزرسانی تصاویر زمان اجرای سفارشی خود هستند.

--add-modules mod [, mod...]
ماژول‌های مشخص‌شده با mod را به مجموعه پیش‌فرض ماژول‌های ریشه اضافه می‌کند. مجموعه پیش‌فرض ماژول‌های ریشه خالی است.
--bind-services
ماژول‌های ارائه‌دهنده سرویس (service provider) و وابستگی‌های آن‌ها را پیوند می‌دهد.
-c ={0|1|2} یا --compress={0|1|2}
فشرده‌سازی منابع را فعال می‌کند:
•
0: بدون فشرده‌سازی
•
1: اشتراک‌گذاری رشته‌های ثابت (Constant string sharing)
•
2: فشرده‌سازی با الگوریتم ZIP
--disable-plugin pluginname
پلاگین مشخص‌شده را غیرفعال می‌کند. برای مشاهده فهرست پلاگین‌های پشتیبانی‌شده به بخش پلاگین‌های JLINK مراجعه کنید.
--endian {little|big}
ترتیب بایت‌ها (byte order / endianness) در تصویر تولیدشده را مشخص می‌کند. مقدار پیش‌فرض، فرمت معماری سیستم شما است.
-h یا --help
پیام راهنما را چاپ می‌کند.
--ignore-signing-information
از بروز خطای مهلک هنگام پیوند دادن فایل‌های JAR ماژولار امضاشده در تصویر زمان اجرا جلوگیری می‌کند. فایل‌های مربوط به امضا در فایل‌های JAR ماژولار امضاشده به تصویر زمان اجرا کپی نمی‌شوند.
--launcher command=module یا --launcher command=module/main
نام دستور راه‌انداز (launcher) برای ماژول یا نام دستور برای ماژول و کلاس اصلی (main class) را مشخص می‌کند (نام ماژول و کلاس اصلی با یک اسلش (/) از هم جدا می‌شوند).
--limit-modules mod [, mod...]
دنیای ماژول‌های قابل مشاهده را به ماژول‌های موجود در بستار گذرای (transitive closure) ماژول‌های مشخص‌شده mod، به‌علاوه ماژول اصلی (در صورت وجود)، و هر ماژول دیگری که در گزینه --add-modules مشخص شده محدود می‌کند.
--list-plugins
فهرست پلاگین‌های موجود را نمایش می‌دهد که می‌توانید از طریق گزینه‌های خط فرمان به آن‌ها دسترسی داشته باشید؛ بخش پلاگین‌های JLINK را ببینید.
-p یا --module-path modulepath
مسیر ماژول را مشخص می‌کند.

اگر این گزینه مشخص نشود، مسیر پیش‌فرض ماژول $JAVA_HOME/jmods خواهد بود. این دایرکتوری حاوی ماژول java.base و سایر ماژول‌های استاندارد و ماژول‌های JDK است. اگر این گزینه مشخص شود اما ماژول java.base در آن پیدا نشود، دستور jlink مسیر $JAVA_HOME/jmods را به انتهای مسیر ماژول اضافه می‌کند.

--no-header-files
فایل‌های هدر (header files) را حذف می‌کند.
--no-man-pages
صفحات راهنما (man pages) را حذف می‌کند.
--output path
مسیر ذخیره تصویر زمان اجرای تولیدشده را مشخص می‌کند.
--save-opts filename
گزینه‌های jlink را در فایل مشخص‌شده ذخیره می‌کند.
--suggest-providers [name, ...]
ارائه‌دهندگانی از مسیر ماژول را پیشنهاد می‌دهد که انواع سرویس‌های داده‌شده را پیاده‌سازی کرده‌اند.
--version
اطلاعات نسخه را چاپ می‌کند.
@filename
گزینه‌ها را از فایل مشخص‌شده می‌خواند.

فایل گزینه‌ها یک فایل متنی است که حاوی گزینه‌ها و مقادیری است که معمولاً در اعلان خط فرمان وارد می‌کنید. گزینه‌ها می‌توانند در یک خط یا در چندین خط قرار گیرند. نمی‌توانید متغیرهای محیطی را برای نام مسیرها مشخص کنید. می‌توانید با قرار دادن نماد هش (#) در ابتدای خط، آن خط را به کامنت تبدیل کنید.

در ادامه نمونه‌ای از یک فایل گزینه‌ها برای دستور jlink آمده است:


#Wed Dec 07 00:40:19 EST 2016
--module-path mlib
--add-modules com.greetings
--output greetingsapp

نکته:

پلاگین‌هایی که در این بخش فهرست نشده‌اند پشتیبانی نمی‌شوند و ممکن است تغییر کنند.

برای گزینه‌های پلاگین که به یک pattern-list (فهرست الگو) نیاز دارند، مقدار مورد نظر یک فهرست جداشده با کاما از عناصر است که هر عنصر یکی از قالب‌های زیر را دارد:

•
glob-pattern
•
glob:glob-pattern
•
regex:regex-pattern
•
@filename
•
filename نام فایلی است که الگوهای مورد استفاده را در خود دارد، هر الگو در یک خط.

برای مشاهده فهرست کامل تمامی پلاگین‌های موجود، دستور jlink --list-plugins را اجرا کنید.

گزینه‌ها
--compress={0|1|2}[:filter=pattern-list]
توضیحات
تمام منابع موجود در تصویر خروجی را فشرده می‌کند.
•
سطح 0: بدون فشرده‌سازی
•
سطح 1: اشتراک‌گذاری رشته‌های ثابت
•
سطح 2: فشرده‌سازی با الگوریتم ZIP

می‌توان یک فیلتر اختیاری pattern-list برای تعیین الگوی فایل‌های مشمول مشخص کرد.

گزینه‌ها
--include-locales=langtag[,langtag]*
توضیحات
فهرستی از زبان‌ها و محلی‌ها (locales) را شامل می‌شود که در آن langtag یک تگ زبان BCP 47 است. این گزینه از تطبیق لوکال طبق تعریف RFC 4647 پشتیبانی می‌کند. هنگام استفاده از این گزینه، مطمئن شوید که ماژول jdk.localedata را اضافه کرده‌اید.

مثال:

--add-modules jdk.localedata --include-locales=en,ja,*-IN

گزینه‌ها
--order-resources=pattern-list
توضیحات
مسیرهای مشخص‌شده را بر اساس اولویت مرتب می‌کند. اگر @filename مشخص شده باشد، هر خط در pattern-list باید دقیقاً با مسیرهای مورد نظر برای مرتب‌سازی مطابقت داشته باشد.

مثال:

--order-resources=/module-info.class,@classlist,/java.base/java/lang/

گزینه‌ها
--strip-debug
توضیحات
اطلاعات اشکال‌زدایی (debug information) را از تصویر خروجی حذف می‌کند.

گزینه‌ها
--generate-cds-archive
توضیحات
در صورتی که تصویر زمان اجرا از ویژگی CDS پشتیبانی کند، بایگانی CDS را تولید می‌کند.

دستور زیر یک تصویر زمان اجرا در دایرکتوری greetingsapp ایجاد می‌کند. این دستور ماژول com.greetings را پیوند می‌دهد که تعریف ماژول آن در دایرکتوری mlib قرار دارد.


jlink --module-path mlib --add-modules com.greetings --output greetingsapp

دستور زیر ماژول‌های موجود در تصویر زمان اجرای greetingsapp را فهرست می‌کند:


greetingsapp/bin/java --list-modules
com.greetings
java.base@11
java.logging@11
org.astro@1.0

دستور زیر یک تصویر زمان اجرا در دایرکتوری compressedrt ایجاد می‌کند که نمادهای دیباگ از آن حذف شده، از فشرده‌سازی برای کاهش حجم استفاده می‌کند و شامل اطلاعات محلی زبان فرانسوی است:


jlink --add-modules jdk.localedata --strip-debug --compress=2 --include-locales=fr --output compressedrt

مثال زیر اندازه تصویر زمان اجرای compressedrt را با fr_rt مقایسه می‌کند که در آن نمادهای دیباگ حذف نشده و از فشرده‌سازی استفاده نشده است:


jlink --add-modules jdk.localedata --include-locales=fr --output fr_rt
du -sh ./compressedrt ./fr_rt
23M     ./compressedrt
36M     ./fr_rt

مثال زیر ارائه‌دهندگانی را فهرست می‌کند که رابط java.security.Provider را پیاده‌سازی می‌کنند:


jlink --suggest-providers java.security.Provider
Suggested providers:
  java.naming provides java.security.Provider used by java.base
  java.security.jgss provides java.security.Provider used by java.base
  java.security.sasl provides java.security.Provider used by java.base
  java.smartcardio provides java.security.Provider used by java.base
  java.xml.crypto provides java.security.Provider used by java.base
  jdk.crypto.cryptoki provides java.security.Provider used by java.base
  jdk.crypto.ec provides java.security.Provider used by java.base
  jdk.crypto.mscapi provides java.security.Provider used by java.base
  jdk.security.jgss provides java.security.Provider used by java.base

مثال زیر یک تصویر زمان اجرای سفارشی به نام mybuild ایجاد می‌کند که فقط شامل java.naming و jdk.crypto.cryptoki و وابستگی‌های آن‌ها است و هیچ ارائه‌دهنده دیگری را شامل نمی‌شود. توجه داشته باشید که این وابستگی‌ها باید در مسیر ماژول وجود داشته باشند:


jlink --add-modules java.naming,jdk.crypto.cryptoki --output mybuild

دستور زیر مشابه دستوری است که تصویر زمان اجرای greetingsapp را ایجاد می‌کند، با این تفاوت که ماژول‌های حل‌شده از ماژول‌های ریشه را با اتصال سرویس (service binding) پیوند می‌دهد؛ متد Configuration.resolveAndBind را ببینید.


jlink --module-path mlib --add-modules com.greetings --output greetingsapp --bind-services

دستور زیر ماژول‌های موجود در تصویر زمان اجرای greetingsapp ایجادشده توسط این دستور را فهرست می‌کند:


greetingsapp/bin/java --list-modules
com.greetings
java.base@11
java.compiler@11
java.datatransfer@11
java.desktop@11
java.logging@11
java.management@11
java.management.rmi@11
java.naming@11
java.prefs@11
java.rmi@11
java.security.jgss@11
java.security.sasl@11
java.smartcardio@11
java.xml@11
java.xml.crypto@11
jdk.accessibility@11
jdk.charsets@11
jdk.compiler@11
jdk.crypto.cryptoki@11
jdk.crypto.ec@11
jdk.crypto.mscapi@11
jdk.internal.opt@11
jdk.jartool@11
jdk.javadoc@11
jdk.jdeps@11
jdk.jfr@11
jdk.jlink@11
jdk.localedata@11
jdk.management@11
jdk.management.jfr@11
jdk.naming.dns@11
jdk.naming.rmi@11
jdk.security.auth@11
jdk.security.jgss@11
jdk.zipfs@11
org.astro@1.0
2023 JDK 21