| pack200(1) | Java Deployment Tools | pack200(1) |
نام (NAME)
pack200-openjdk8 - ابزار فشردهسازی فایلهای JAR در جاوا ۸
خلاصه دستور (SYNOPSIS)
pack200 [گزینهها] فایل-خروجی فایل-JAR
ترتیب قرارگیری گزینهها اهمیتی ندارد. آخرین گزینه مشخصشده در خط فرمان یا در فایل ویژگیها (properties)، بر تمام گزینههای پیشین اولویت دارد.
- گزینهها
- گزینههای خط فرمان. بخش «گزینهها» را ببینید.
- فایل-خروجی
- نام فایل خروجی.
- فایل-JAR
- نام فایل ورودی.
توضیحات (DESCRIPTION)
دستور pack200 یک برنامه جاوا است که یک فایل JAR را با استفاده از فشردهساز gzip جاوا به یک فایل فشرده pack200 تبدیل میکند. فایلهای pack200 فایلهایی با فشردگی بالا هستند که میتوان مستقیماً برای صرفهجویی در پهنای باند و کاهش زمان بارگیری آنها را مستقر کرد.
دستور pack200 گزینههای متعددی برای تنظیم دقیق موتور فشردهسازی دارد. کاربرد متداول آن در مثال زیر نشان داده شده است که در آن myarchive.pack.gz با تنظیمات پیشفرض دستور pack200 تولید میشود:
pack200 myarchive.pack.gz myarchive.jar
گزینهها (OPTIONS)
- -r, --repack
-
یک فایل JAR را با بستهبندی و سپس بازگشایی مجدد یک فایل JAR تولید میکند. فایل حاصل را میتوان به عنوان ورودی ابزار jarsigner(1) استفاده کرد. مثال زیر فایل myarchive.jar را بستهبندی و مجدداً باز میکند:pack200 --repack myarchive-packer.jar myarchive.jar
pack200 --repack myarchive.jar
مثال زیر ترتیب فایلها را در فایل ورودی حفظ میکند.
- -g, --no-gzip
-
یک فایل pack200 تولید میکند. با استفاده از این گزینه، باید از یک فشردهساز مناسب استفاده شود و سیستم مقصد نیز باید از یک بازگشاینده متناظر استفاده کند.pack200 --no-gzip myarchive.pack myarchive.jar
- -G, --strip-debug
-
ویژگیهای اشکالزدایی را از خروجی حذف میکند. این موارد شامل SourceFile، LineNumberTable، LocalVariableTable و LocalVariableTypeTable میشوند. حذف این ویژگیها حجم بارگیری و نصب را کاهش میدهد، اما کارایی ابزارهای اشکالزدایی را کم میکند. - --keep-file-order
-
ترتیب فایلها را در فایل ورودی حفظ میکند. این رفتار پیشفرض است. - -O, --no-keep-file-order
-
بستهبند، تمام عناصر را بازآرایی کرده و منتقل میکند. بستهبند همچنین میتواند نام دایرکتوریهای JAR را برای کاهش اندازه بارگیری حذف کند. با این حال، ممکن است برخی بهینهسازیهای فایل JAR مانند نمایهسازی (indexing) به درستی کار نکنند. - -Sمقدار , --segment-limit=مقدار
-
مقدار، اندازه تخمینی هدف N (به بایت) برای هر بخش آرشیو است. اگر یک فایل ورودی منفرد به بیش از N بایت نیاز داشته باشد، بخش آرشیو اختصاصی خود را دریافت میکند. به عنوان یک حالت خاص، مقدار -1 یک بخش بزرگ واحد شامل تمام فایلهای ورودی تولید میکند، در حالی که مقدار 0 برای هر کلاس یک بخش تولید مینماید. بخشهای آرشیو بزرگتر منجر به تکهتکهشدن کمتر و فشردهسازی بهتر میشوند، اما پردازش آنها به حافظه بیشتری نیاز دارد.اندازه هر بخش با شمارش اندازه هر فایل ورودیِ منتقلشده در آن بخش، به همراه اندازه نام آن و سایر ویژگیهای منتقلشده تخمین زده میشود.
مقدار پیشفرض -1 است، به این معنی که بستهبند یک فایل خروجی تکبخشی ایجاد میکند. در مواردی که فایلهای خروجی بسیار بزرگ تولید میشوند، به کاربران اکیداً توصیه میشود از بخشبندی استفاده کنند یا فایل ورودی را به JARهای کوچکتر تقسیم نمایند.
یک فایل JAR ده مگابایتی که بدون این محدودیت بستهبندی شود معمولاً حدود ۱۰ درصد کوچکتر فشرده میشود، اما ممکن است بستهبند به حافظه هیپ (Java heap) بزرگتری (حدود ۱۰ برابر محدودیت بخش) نیاز داشته باشد.
- -Eمقدار , --effort=مقدار
-
اگر مقدار روی یک رقم تکرقمی دهدهی تنظیم شود، بستهبند میزان تلاش مشخصشده را برای فشردهسازی آرشیو به کار میگیرد. سطح ۱ ممکن است حجم کمی بزرگتر و سرعت فشردهسازی بالاتری داشته باشد، در حالی که سطح ۹ زمان بسیار بیشتری میبرد اما فشردهسازی بهتری ارائه میدهد. مقدار خاص 0 به دستور pack200 دستور میدهد که فایل JAR اصلی را مستقیماً و بدون هیچ فشردهسازی کپی کند. استاندارد JSR 200 ایجاب میکند که هر ابزار unpacker این حالت خاص را به عنوان انتقال مستقیم کل آرشیو بشناسد.مقدار پیشفرض ۵ است تا با صرف زمانی متعادل، فشردهسازی مناسبی حاصل شود.
- -Hمقدار , --deflate-hint=مقدار
-
رفتار پیشفرض را که اطلاعات ورودی را حفظ میکند لغو مینماید، اما میتواند موجب بزرگتر شدن آرشیو منتقلشده گردد. مقادیر مجاز عبارتند از: true، false یا keep.اگر مقدار برابر true یا false باشد، دستور pack200 نشانه کاهش حجم (deflation hint) را متناسب با آن در آرشیو خروجی تنظیم کرده و نشانههای کاهش حجم جداگانه عناصر آرشیو را منتقل نمیکند.
مقدار keep نشانههای کاهش حجم دیدهشده در JAR ورودی را حفظ میکند. این گزینه پیشفرض است.
- -mمقدار , --modification-time=مقدار
-
مقادیر مجاز عبارتند از latest و keep.اگر مقدار برابر latest باشد، بستهبند تلاش میکند آخرین زمان تغییر را در میان تمام مدخلهای موجود در آرشیو اصلی، یا آخرین زمان تغییر تمام مدخلهای موجود در آن بخش را تعیین کند. این مقدار واحد به عنوان بخشی از بخش منتقل شده و روی تمام مدخلهای موجود در هر بخش اعمال میشود. این کار میتواند حجم آرشیو منتقلشده را اندکی کاهش دهد، به قیمت اینکه تاریخ تمام فایلهای نصبشده روی یک تاریخ واحد تنظیم شود.
اگر مقدار برابر keep باشد، زمانهای تغییر مشاهدهشده در JAR ورودی حفظ میشوند. این گزینه پیشفرض است.
- -Pفایل , --pass-file=فایل
-
مشخص میکند که یک فایل باید به صورت بایتبهبایت و بدون فشردهسازی منتقل شود. با تکرار این گزینه، میتوان چندین فایل را مشخص کرد. هیچ تغییری در مسیر فایل رخ نمیدهد، به جز اینکه جداکننده فایل سیستم با جداکننده فایل JAR یعنی اسلش (/) جایگزین میشود. نام فایلهای حاصل باید دقیقاً به صورت رشتهای با موارد موجود در فایل JAR مطابقت داشته باشد. اگر فایل نام یک دایرکتوری باشد، تمام فایلهای زیر آن دایرکتوری بدون فشردهسازی منتقل میشوند. - -Uعمل , --unknown-attribute=عمل
-
رفتار پیشفرض را بازنویسی میکند، به این معنی که فایل کلاس حاوی ویژگی ناشناخته، با عمل مشخصشده پردازش میشود. مقادیر ممکن برای عملیات عبارتند از error، strip یا pass.اگر مقدار برابر error باشد، کل عملیات دستور pack200 همراه با توضیح مناسب با شکست مواجه میشود.
اگر مقدار برابر strip باشد، ویژگی مورد نظر حذف میشود. حذف ویژگیهای مورد نیاز ماشین مجازی جاوا (JVM) میتواند منجر به خطای بارگذار کلاس (class loader) شود.
اگر مقدار برابر pass باشد، کل کلاس به گونهای منتقل میشود که گویی یک منبع (resource) معمولی است.
- -Cname=layout , --class-attribute=name=action
- گزینه بعدی را ببینید.
- -Fname=layout , --field-attribute=name=action
- گزینه بعدی را ببینید.
- -Mname=layout , --method-attribute=name=action
- گزینه بعدی را ببینید.
- -Dname=layout , --code-attribute=name=action
-
با چهار
گزینه
پیشین،
میتوان
قالب ویژگی
را برای یک
موجودیت
کلاسی
مانند class-attribute،
field-attribute، method-attribute و
code-attribute مشخص
کرد. عبارت
name نام
ویژگیای
است که قالب
یا عمل برای
آن تعریف
میشود.
مقادیر
ممکن برای
action عبارتند
از some-layout-string، error،
strip و pass.
some-layout-string: زبان قالببندی در مشخصات JSR 200 تعریف شده است، برای مثال: --class-attribute=SourceFile=RUH.
اگر مقدار برابر error باشد، عملیات pack200 با توضیح با خطا متوقف میشود.
اگر مقدار برابر strip باشد، ویژگی از خروجی حذف میشود. حذف ویژگیهای مورد نیاز JVM میتواند باعث خطای بارگذار کلاس شود. برای مثال، --class-attribute=CompilationID=pass باعث میشود فایل کلاسی که حاوی این ویژگی است، بدون هیچ اقدام دیگری توسط بستهبند منتقل شود.
اگر مقدار برابر pass باشد، کل کلاس مانند یک منبع معمولی منتقل میگردد.
- -f pack.properties , --config-file=pack.properties
-
میتوان یک فایل پیکربندی حاوی ویژگیهای جاوا را برای مقداردهی اولیه بستهبند در خط فرمان مشخص کرد.pack200 -f pack.properties myarchive.pack.gz myarchive.jar
more pack.properties
# ویژگیهای عمومی برای بستهبند.
modification.time=latest
deflate.hint=false
keep.file.order=false
# این گزینه باعث میشود فایلهای دارای ویژگیهای جدید به عنوان خطا
# گزارش شوند نه اینکه به صورت فشردهنشده منتقل گردند.
unknown.attribute=error
# نامحدود کردن سقف بخش.
segment.limit=-1
- -v, --verbose
-
پیامهای جزئی را در خروجی چاپ میکند. مشخص کردن چندباره این گزینه پیامهای مشروحتری ایجاد مینماید. - -q, --quiet
-
عملکرد بیصدا و بدون چاپ هیچ پیامی را تعیین میکند. - -lنامفایل , --log-file=نامفایل
-
یک فایل گزارش (log) را برای خروجی پیامها تعیین میکند. - -?, -h, --help
-
اطلاعات راهنمای این دستور را چاپ میکند. - -V, --version
-
اطلاعات نسخه این دستور را چاپ میکند. - -Jگزینه
-
گزینه مشخصشده را به ماشین مجازی جاوا منتقل میکند. برای اطلاعات بیشتر، صفحه راهنمای دستور java(1) را ببینید. برای مثال، -J-Xms48m حافظه راهاندازی را روی ۴۸ مگابایت تنظیم میکند.
وضعیت خروج (EXIT STATUS)
مقادیر خروج زیر برگردانده میشوند: 0 در صورت اتمام موفقیتآمیز و عددی بزرگتر از 0 در صورت بروز خطا.
نکات (NOTES)
این دستور نباید با pack(1) اشتباه گرفته شود. دستورات pack و pack200 دو محصول جداگانه هستند.
مشخصات API ویرایش Java SE ارائهشده به همراه JDK، در صورت وجود هرگونه مغایرت، مرجع حاکم و نهایی است.
همچنین ببینید (SEE ALSO)
- •
- unpack200(1)
- •
- jar(1)
- •
- jarsigner(1)
| 21 November 2013 | JDK 8 |