| JLINK(1) | دستورات JDK | JLINK(1) |
نام (NAME)
jlink-openjdk21 - مونتاژ و ایجاد یک تصویر زمان اجرای سفارشی جاوا در OpenJDK 21
خلاصه دستور (SYNOPSIS)
jlink [گزینهها] --module-path مسیر_ماژول --add-modules ماژول [, ماژول...]
- گزینهها (options)
- گزینههای خط فرمان که با فاصله از هم جدا شدهاند. بخش گزینههای JLINK را ببینید.
- مسیر_ماژول (modulepath)
- مسیری که ابزار jlink ماژولهای قابل مشاهده را در آن پیدا میکند. این ماژولها میتوانند فایلهای JAR ماژولار، فایلهای JMOD یا ماژولهای پوشهای (exploded) باشند.
- ماژول (module)
- نام ماژولهایی که باید به تصویر زمان اجرا اضافه شوند. ابزار jlink این ماژولها و وابستگیهای گذرا (transitive) آنها را اضافه میکند.
توضیحات (DESCRIPTION)
ابزار jlink مجموعهای از ماژولها را به همراه وابستگیهای گذرای آنها پیوند (link) میدهد تا یک تصویر زمان اجرای سفارشی ایجاد کند.
نکته:
توسعهدهندگان مسئول بهروزرسانی تصاویر زمان اجرای سفارشی خود هستند.
گزینههای JLINK (JLINK OPTIONS)
- --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
پلاگینهای JLINK (JLINK PLUG-INS)
نکته:
پلاگینهایی که در این بخش فهرست نشدهاند پشتیبانی نمیشوند و ممکن است تغییر کنند.
برای گزینههای پلاگین که به یک pattern-list (فهرست الگو) نیاز دارند، مقدار مورد نظر یک فهرست جداشده با کاما از عناصر است که هر عنصر یکی از قالبهای زیر را دارد:
- •
- glob-pattern
- •
- glob:glob-pattern
- •
- regex:regex-pattern
- •
- @filename
- •
- filename نام فایلی است که الگوهای مورد استفاده را در خود دارد، هر الگو در یک خط.
برای مشاهده فهرست کامل تمامی پلاگینهای موجود، دستور jlink --list-plugins را اجرا کنید.
پلاگین compress
- گزینهها
- --compress={0|1|2}[:filter=pattern-list]
- توضیحات
- تمام منابع موجود در تصویر خروجی را فشرده میکند.
- •
- سطح 0: بدون فشردهسازی
- •
- سطح 1: اشتراکگذاری رشتههای ثابت
- •
- سطح 2: فشردهسازی با الگوریتم ZIP
میتوان یک فیلتر اختیاری pattern-list برای تعیین الگوی فایلهای مشمول مشخص کرد.
پلاگین include-locales
- گزینهها
- --include-locales=langtag[,langtag]*
- توضیحات
- فهرستی از زبانها و محلیها (locales) را شامل میشود که در آن langtag یک تگ زبان BCP 47 است. این گزینه از تطبیق لوکال طبق تعریف RFC 4647 پشتیبانی میکند. هنگام استفاده از این گزینه، مطمئن شوید که ماژول jdk.localedata را اضافه کردهاید.
مثال:
--add-modules jdk.localedata --include-locales=en,ja,*-IN
پلاگین order-resources
- گزینهها
- --order-resources=pattern-list
- توضیحات
- مسیرهای مشخصشده را بر اساس اولویت مرتب میکند. اگر @filename مشخص شده باشد، هر خط در pattern-list باید دقیقاً با مسیرهای مورد نظر برای مرتبسازی مطابقت داشته باشد.
مثال:
--order-resources=/module-info.class,@classlist,/java.base/java/lang/
پلاگین strip-debug
- گزینهها
- --strip-debug
- توضیحات
- اطلاعات اشکالزدایی (debug information) را از تصویر خروجی حذف میکند.
پلاگین generate-cds-archive
- گزینهها
- --generate-cds-archive
- توضیحات
- در صورتی که تصویر زمان اجرا از ویژگی CDS پشتیبانی کند، بایگانی CDS را تولید میکند.
مثالهای JLINK (JLINK EXAMPLES)
دستور زیر یک تصویر زمان اجرا در دایرکتوری 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 |