pack200(1) Java Deployment Tools pack200(1)

pack200-openjdk8 - ابزار فشرده‌سازی فایل‌های JAR در جاوا ۸

pack200 [گزینه‌ها] فایل-خروجی فایل-JAR

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

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

دستور 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

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

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

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

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

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

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

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


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

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


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

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

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


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

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

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


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

رفتار پیش‌فرض را بازنویسی می‌کند، به این معنی که فایل کلاس حاوی ویژگی ناشناخته، با عمل مشخص‌شده پردازش می‌شود. مقادیر ممکن برای عملیات عبارتند از 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 باشد، کل کلاس مانند یک منبع معمولی منتقل می‌گردد.


می‌توان یک فایل پیکربندی حاوی ویژگی‌های جاوا را برای مقداردهی اولیه بسته‌بند در خط فرمان مشخص کرد.
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

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

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

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

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

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

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

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

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

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

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