pack200(1) Java Deployment Tools pack200(1)

pack200 - بسته‌بندی فایل‌های JAR در یک فایل فشردهٔ pack200 برای استقرار تحت وب.

pack200 [options] output-file JAR-file

گزینه‌ها می‌توانند به هر ترتیبی باشند. آخرین گزینه در خط فرمان یا در فایل تنظیمات (properties)، بر تمام گزینه‌های مشخص‌شدهٔ قبلی اولویت دارد.

گزینه‌های خط فرمان. بخش «گزینه‌ها» را ببینید.
نام فایل خروجی.
نام فایل ورودی.

دستور pack200 یک برنامهٔ جاوا است که یک فایل JAR را با فشرده‌ساز gzip جاوا به یک فایل فشردهٔ pack200 تبدیل می‌کند. فایل‌های pack200 فایل‌هایی بسیار فشرده هستند که می‌توان آن‌ها را مستقیماً برای صرفه‌جویی در پهنای باند و کاهش زمان بارگیری مستقر کرد.

دستور pack200 گزینه‌های متعددی برای تنظیم دقیق و پیکربندی موتور فشرده‌سازی دارد. کاربرد معمول آن در مثال زیر نشان داده شده است، جایی که myarchive.pack.gz با تنظیمات پیش‌فرض دستور pack200 تولید می‌شود:

pack200 myarchive.pack.gz myarchive.jar


با فشرده‌سازی و سپس استخراج یک فایل JAR، یک فایل JAR جدید تولید می‌کند. فایل حاصل می‌تواند به‌عنوان ورودی برای ابزار jarsigner(1) استفاده شود. مثال زیر فایل myarchive.jar را فشرده و مجدداً باز می‌کند:
pack200 --repack myarchive-packer.jar myarchive.jar
pack200 --repack myarchive.jar

مثال زیر ترتیب فایل‌ها را در فایل ورودی حفظ می‌کند.


یک فایل pack200 تولید می‌کند. با این گزینه، باید از یک فشرده‌ساز مناسب استفاده شود، و سیستم مقصد نیز باید از یک بازکنندهٔ متناظر استفاده نماید.
pack200 --no-gzip myarchive.pack myarchive.jar

ویژگی‌های اشکال‌زدایی (debugging) را از خروجی حذف می‌کند. این موارد شامل SourceFile، LineNumberTable، LocalVariableTable و LocalVariableTypeTable هستند. حذف این ویژگی‌ها اندازهٔ بارگیری و نصب را کاهش می‌دهد، اما کارایی ابزارهای اشکال‌زدایی را کم می‌کند.

ترتیب فایل‌ها را در فایل ورودی حفظ می‌کند. این رفتار پیش‌فرض است.

بسته‌بند تمام عناصر را بازترتیب داده و منتقل می‌کند. همچنین بسته‌بند می‌تواند نام پوشه‌های JAR را برای کاهش اندازهٔ بارگیری حذف کند. با این حال، ممکن است برخی بهینه‌سازی‌های فایل JAR مانند نمایه‌سازی (indexing) به‌درستی کار نکنند.

این مقدار، اندازهٔ هدف تخمینی N (به بایت) برای هر بخش (segment) آرشیو است. اگر یک فایل ورودی به تنهایی به بیش از N بایت نیاز داشته باشد، بخش آرشیو اختصاصی خود را دریافت می‌کند. به‌عنوان یک حالت خاص، مقدار -1 یک بخش بزرگ واحد شامل تمام فایل‌های ورودی تولید می‌کند، در حالی که مقدار 0 برای هر کلاس یک بخش ایجاد می‌کند. بخش‌های آرشیو بزرگ‌تر منجر به قطعه‌قطعه‌شدن کمتر و فشرده‌سازی بهتر می‌شوند، اما پردازش آن‌ها نیازمند حافظهٔ بیشتری است.

اندازهٔ هر بخش با محاسبهٔ اندازهٔ هر فایل ورودیِ منتقل‌شونده در آن بخش، به‌همراه اندازهٔ نام و سایر ویژگی‌های انتقال‌یافتهٔ آن تخمین زده می‌شود.

پیش‌فرض برابر -1 است، به این معنی که بسته‌بند یک فایل خروجی تک‌بخشی ایجاد می‌کند. در مواردی که فایل‌های خروجی بسیار بزرگی تولید می‌شوند، قویاً به کاربران توصیه می‌شود از بخش‌بندی استفاده کنند یا فایل ورودی را به فایل‌های JAR کوچک‌تر بشکنند.

یک فایل JAR با حجم ۱۰ مگابایت که بدون این محدودیت بسته‌بندی شود، معمولاً حدود ۱۰ درصد کوچک‌تر فشرده می‌شود، اما ممکن است بسته‌بند به حافظهٔ هیپ جاوا (Java heap) بزرگ‌تری نیاز داشته باشد (حدود ۱۰ برابر محدودیت بخش).


اگر مقدار روی یک رقم اعشاری تنظیم شود، بسته‌بند از میزان تلاش مشخص‌شده برای فشرده‌سازی آرشیو استفاده می‌کند. سطح ۱ ممکن است حجمی کمی بزرگ‌تر و سرعت فشرده‌سازی بالاتری تولید کند، در حالی که سطح ۹ زمان بسیار بیشتری می‌برد، اما فشرده‌سازی بهتری ارائه می‌دهد. مقدار ویژهٔ 0 به دستور pack200 دستور می‌دهد تا فایل JAR اصلی را مستقیماً و بدون هیچ فشرده‌سازی کپی کند. استاندارد JSR 200 مستلزم آن است که هر ابزار بازکننده (unpacker) این حالت خاص را به‌منزلهٔ عبور مستقیم کل آرشیو بشناسد.

پیش‌فرض برابر 5 است، تا با صرف زمانی معقول، فشرده‌سازی مناسبی حاصل شود.


رفتار پیش‌فرض را که اطلاعات ورودی را حفظ می‌کند اما می‌تواند منجر به بزرگ‌تر شدن آرشیو انتقالی شود، بازنویسی می‌کند. مقادیر ممکن عبارت‌اند از: true، false، یا keep.

اگر value برابر true یا false باشد، دستور pack200 راهنمای فشرده‌سازی (deflation hint) را بر همین اساس در آرشیو خروجی تنظیم کرده و راهنماهای فشرده‌سازی تکیِ عناصر آرشیو را انتقال نمی‌دهد.

مقدار keep راهنماهای فشرده‌سازی دیده‌شده در JAR ورودی را حفظ می‌کند. این رفتار پیش‌فرض است.


مقادیر ممکن عبارت‌اند از latest و keep.

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

اگر مقدار برابر keep باشد، زمان‌های تغییر مشاهده‌شده در JAR ورودی حفظ می‌شوند. این مقدار پیش‌فرض است.


نشان می‌دهد که یک فایل باید به‌صورت بایت‌به‌بایت و بدون فشرده‌سازی عبور داده شود. با تکرار این گزینه، می‌توان چندین فایل را مشخص کرد. هیچ تغییری در مسیر اعمال نمی‌شود، مگر اینکه جداکنندهٔ فایل‌های سیستم با جداکنندهٔ فایل‌های JAR یعنی اسلش (/) جایگزین شود. نام‌های فایل حاصل باید به‌صورت دقیق به‌عنوان رشته با موارد مشابه خود در فایل JAR مطابقت داشته باشند. اگر file نام یک پوشه باشد، تمام فایل‌های زیر آن پوشه عبور داده می‌شوند.

رفتار پیش‌فرض را بازنویسی می‌کند، بدین معنا که فایل کلاسی که شامل ویژگی ناشناخته است با action مشخص‌شده پردازش می‌شود. مقادیر ممکن برای عملیات عبارت‌اند از error، strip، یا pass.

اگر مقدار برابر error باشد، کل عملیات دستور pack200 با توضیحی مناسب با شکست مواجه می‌شود.

اگر مقدار برابر strip باشد، ویژگی حذف می‌شود. حذف ویژگی‌های مورد نیاز ماشین مجازی جاوا (JVM) می‌تواند باعث خطاهای بارگذار کلاس (class loader) شود.

اگر مقدار برابر pass باشد، کل کلاس طوری منتقل می‌شود که گویی یک منبع (resource) است.

-Cattribute-name=layout , --class-attribute=attribute-name=action
گزینهٔ بعدی را ببینید.
-Fattribute-name=layout , --field-attribute=attribute-name=action
گزینهٔ بعدی را ببینید.
-Mattribute-name=layout , --method-attribute=attribute-name=action
گزینهٔ بعدی را ببینید.
-Dattribute-name=layout , --code-attribute=attribute-name=action
با چهار گزینهٔ قبلی، ساختار ویژگی (layout) را می‌توان برای یک موجودیت کلاس مشخص کرد، مانند class-attribute، field-attribute، method-attribute، و code-attribute. مقدار 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 باشد، کل کلاس طوری منتقل می‌شود که گویی یک منبع است.


یک فایل پیکربندی، حاوی ویژگی‌های جاوا برای مقداردهی اولیه بسته‌بند، می‌تواند در خط فرمان مشخص شود.
pack200 -f pack.properties myarchive.pack.gz myarchive.jar
more pack.properties
# Generic properties for the packer.
modification.time=latest
deflate.hint=false
keep.file.order=false
# This option will cause the files bearing new attributes to
# be reported as an error rather than passed uncompressed.
unknown.attribute=error
# Change the segment limit to be unlimited.
segment.limit=-1

پیام‌های خروجی را با جزئیات کم نمایش می‌دهد. تکرار مشخص کردن این گزینه پیام‌های پرحرف‌تر و دقیق‌تری ایجاد می‌کند.

عملیات خاموش و بدون پیام را تعیین می‌کند.

یک فایل لاگ را برای ارسال خروجی پیام‌ها تعیین می‌کند.
-?, -h, --help

اطلاعات راهنمای این دستور را چاپ می‌کند.

اطلاعات نسخهٔ این دستور را چاپ می‌کند.

گزینهٔ مشخص‌شده را به ماشین مجازی جاوا (JVM) ارسال می‌کند. برای اطلاعات بیشتر، صفحهٔ راهنمای دستور java(1) را ببینید. برای مثال، -J-Xms48m حافظهٔ راه‌اندازی را روی ۴۸ مگابایت تنظیم می‌کند.

مقدارهای خروج زیر بازگردانده می‌شوند: 0 برای اتمام موفقیت‌آمیز، و عددی بزرگ‌تر از 0 هنگام وقوع خطا.

این دستور نباید با pack(1) اشتباه گرفته شود. دستورهای pack و pack200 ابزارهایی جداگانه هستند.

در صورت وجود هرگونه مغایرت، مشخصات Java SE API ارائه‌شده همراه با JDK مرجع نهایی و دارای اولویت است.

•
unpack200(1)
•
jar(1)
•
jarsigner(1)
21 November 2013 JDK 8