JLINK(1) JDK Commands JLINK(1)

jlink - سرهم‌بندی و بهینه‌سازی مجموعه‌ای از ماژول‌ها و وابستگی‌های آن‌ها در یک ایمیج زمان اجرای سفارشی

jlink [options] --module-path modulepath --add-modules module [, module...]

گزینه‌های خط فرمان که با فاصله از هم جدا می‌شوند. بخش گزینه‌های jlink را ببینید.
مسیری که ابزار jlink ماژول‌های قابل‌مشاهده را در آن پیدا می‌کند. این ماژول‌ها می‌توانند فایل‌های JAR مدولار، فایل‌های JMOD یا ماژول‌های بازشده (exploded modules) باشند.
نام ماژول‌هایی که باید به ایمیج زمان اجرا افزوده شوند. ابزار jlink این ماژول‌ها و وابستگی‌های متعدی آن‌ها را اضافه می‌کند.

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

نکته:

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

ماژول‌های نام‌برده، mod، را به مجموعه پیش‌فرض ماژول‌های ریشه اضافه می‌کند. مجموعه پیش‌فرض ماژول‌های ریشه خالی است.
ماژول‌های ارائه‌دهنده سرویس و وابستگی‌های آن‌ها را پیوند می‌دهد.
فعال‌سازی فشرده‌سازی منابع:
•
0: بدون فشرده‌سازی
•
1: اشتراک رشته‌های ثابت
•
2: ZIP
پلاگین مشخص‌شده را غیرفعال می‌کند. برای دیدن فهرست پلاگین‌های پشتیبانی‌شده، بخش پلاگین‌های jlink را ببینید.
ترتیب بایت (byte order) ایمیج تولیدشده را مشخص می‌کند. مقدار پیش‌فرض، قالب معماری سیستم شما است.
پیام راهنما را چاپ می‌کند.
از ایجاد خطای مهلک هنگام پیوند دادن فایل‌های JAR مدولار امضاشده در ایمیج زمان اجرا جلوگیری می‌کند. فایل‌های مربوط به امضا در JARهای مدولار امضاشده در ایمیج زمان اجرا کپی نمی‌شوند.
نام دستور اجراکننده (launcher) را برای ماژول یا نام دستور را برای ماژول و کلاس اصلی مشخص می‌کند (نام‌های ماژول و کلاس اصلی با یک اسلش (/) جدا می‌شوند).
گستره ماژول‌های قابل‌مشاهده را به ماژول‌های موجود در بستار متعدی ماژول‌های نام‌برده، mod، به‌علاوه ماژول اصلی (در صورت وجود)، به‌علاوه هر ماژول دیگری که در گزینه --add-modules مشخص شده، محدود می‌کند.
پلاگین‌های دردسترس را که می‌توانید از طریق گزینه‌های خط فرمان به آن‌ها دسترسی پیدا کنید فهرست می‌کند؛ بخش پلاگین‌های jlink را ببینید.
مسیر ماژول را مشخص می‌کند.

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

فایل‌های سرآیند را مستثنی می‌کند.
صفحات man را مستثنی می‌کند.
مکان ایمیج زمان اجرای تولیدشده را مشخص می‌کند.
گزینه‌های jlink را در فایل مشخص‌شده ذخیره می‌کند.
ارائه‌دهندگانی از مسیر ماژول را پیشنهاد می‌دهد که انواع سرویس داده‌شده را پیاده‌سازی می‌کنند.
اطلاعات نسخه را چاپ می‌کند.
@filename
گزینه‌ها را از فایل مشخص‌شده می‌خواند.

فایل گزینه‌ها یک فایل متنی است که شامل گزینه‌ها و مقادیری است که شما معمولاً در خط فرمان وارد می‌کنید. گزینه‌ها ممکن است در یک خط یا در چندین خط قرار گیرند. نمی‌توانید از متغیرهای محیطی برای نام مسیرها استفاده کنید. می‌توانید با قرار دادن یک نماد هش (#) در ابتدای خط، آن خط را تبدیل به توضیح (کامنت) کنید..PP در ادامه مثالی از یک فایل گزینه‌ها برای دستور 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]
توضیحات
همه منابع را در ایمیج خروجی فشرده می‌کند.
•
سطح ۰: بدون فشرده‌سازی
•
سطح ۱: اشتراک رشته‌های ثابت
•
سطح ۲: 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) را از ایمیج خروجی حذف می‌کند.

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


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 ایجاد می‌کند که نمادهای اشکال‌زدایی از آن حذف شده‌اند، برای کاهش فضا از فشرده‌سازی استفاده می‌کند و شامل اطلاعات محلی (locale) زبان فرانسوی است:


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 و وابستگی‌های آن‌ها است، اما هیچ ارائه‌دهندهٔ دیگری را در بر نمی‌گیرد. توجه داشته باشید که این وابستگی‌ها باید در مسیر ماژول (module path) وجود داشته باشند:


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
2021 JDK 17