ساختن و اجرا کردن فایل jar در زبان جاوا

JAR (Java Archive)فرض کنید به عنوان یک توسعه‌دهنده می‌خواهید پروژه خودتون رو برای استفاده کاربر منتشر کنید. آیا پروژتون رو با ده‌ها یا صدها کلاس نوشته شده در فولدرهای مختلف در اختیار کاربر قرار می‌دید؟ نه! اینجاست که باید با jar آشنا بشید.فایل jar یک فایل فشرده‌شده است که کلاس‌های جاوا، عکس، متن و... به همراه فایل Manifest(در ادامه بهش می‌رسیم) را در خود جای می‌دهد و از فرمت‌های فشرده‌سازی مانند zip استفاده می‌کند.ساختن فایل jarبرای شروع اول مطمئن بشید که JDK روی سیستمتون نصب است. از این لینک می‌تونید نسخه مورد نظرتون رو دانلود کنید.برای ساخت فایل jar کافیست به فولدری که فایل‌ها و کلاس‌ها قرار گرفته‌اند برویم و با دستور زیر در محیط ترمینال فایل jar ساخته می‌شود:Syntax:jar -cf jarfilename inputfilesjarfilename: نام فایل خروجی inputfiles: نام فایل‌هایی است که قرار است فشرده شوند-c: یک فایل آرشیو خالی و جدید می‌سازد-f: مشخص می‌کند پس از آن، نام فایل خروجی به عنوان پارامتر دریافت شودمثال از ساخت فایل jarنمونه‌ای از اجرا کردن دستور jarدر اینجا ما با دو فایل JavaClass1.class و JavaClass2.class روبه‌رو هستیم و با دستور زیر یک jar file ساخته شده:jar -cvf export.jar *.classاستفاده از v- فرایند فشرده‌سازی را در خروجی نمایش می‌دهد.اگر تعداد زیادی فایل کلاس را می‌خواهید در فایل jar قرار دهید می‌توانید از class.* استفاده کنید به جای اینکه تک تک نام فایل‌ها را بنویسید.مشاهده محتوای فایل jarپس از آنکه یک فایل jar بدست آمد، برای دیدن فایل‌های موجود در آن از دستور زیر استفاده می‌شود:Syntax:jar -tf jarfilenameExample:jar -tf export.jarخروجی:META-INF/ META-INF/MANIFEST.MF JavaClass1.class JavaClass2.classیک فایل jar به طور پیش فرض دارای فایل Manifest می‌باشد و همیشه در فولدر META-INF قرار دارد.استخراج کردن فایل jarبرای extract کردن از دستور زیر استفاده می‌شود:Syntax:jar -xf jarfilenameExample:jar -xf export.jarبرای extract کردن حتی می‌توان از ابزارهایی که یک فایل zip را extract می‌کنند، استفاده کرد.آپدیت کردن فایل jarاگر پروژه‌ی ما یک پروژه‌ی حجیم و بزرگی باشد، پس از تغییراتی که در پروژه اعمال می‌کنیم، برای تبدیل آن به فایل جدید jar زمان طولانی‌ صرف می‌شود. در اینجا بهتر است به جای ساختن یک فایل جدید jar، فایل قبلی را آپدیت بکنیم.برای آپدیت کردن محتوای فایل از دستور زیر استفاده می‌کنیم:Syntax:jar -uf jar-file input-file(s)Example:java -uf export.jar *.classبعد از نوشتن نام فایل jar مورد نظر، فایل‌ها و کلاس‌هایی را که می‌خواهیم آپدیت بکنیم می‌نویسیم. این امکان باعث می‌شود تا به جای اینکه دوباره تمام فایل‌ها را فشرده بکنیم، فقط فایل‌هایی که تغییرات داشتنند را جایگزین فایل‌های قبلی در jar بکنیم.قابلیت اجرا شدن فایل jarپیش از آنکه یاد بگیریم چگونه یک فایل jar را اجرا کنیم، باید آن را برای اجرا شدن آماده‌سازی کنیم.فرض می‌کنیم در پروژه، کلاسی با نام Main.class ساخته‌ایم و در آن متد main را پیاده‌سازی کرده‌ایم. اکنون باید به فایل jar بفهمانیم که متد main در چه کلاسی قرار دارد تا هنگام اجرا شدن jar، آن را اجرا کند. با استفاده از دستور زیر هنگام ساخت فایل jar این امکان را اضافه می‌کنیم:Syntax:jar -cfe jarfilename mainclass import-filesExample:jar -cfe export.jar Main client.class server.class logo.jpeg توجه کنید که کلاس Main بدون class. نوشته می‌شود.روش دیگری هم برای اضافه کردن Main وجود دارد که در ادامه در مبحت Manifest به آن می‌رسیم.اکنون می‌توان فایل jar خود را با دستور زیر اجرا کرد:Syntax:java -jar jarfilenameExample:java -jar export.jarفایل Manifestزمانی که یک فایل jar ساخته می‌شود به صورت اتوماتیک در آن فایل Manifast هم ساخته می‌شود. حالا اصلا Manifast چی است؟نمونه‌ای از فایل Manifestهر فایل jar یک فایل Manifest دارد که جزئیات و اطلاعات آن در Manifest نوشته شده است. نام این فایل به صورت پیش فرض MANIFEST.MF نام‌گذاری شده و در فولدر META-INF قرار دارد. در تصویر بالا نمونه‌ای از این فایل آمده‌است؛ حتی می‌تواند شامل جزئیات بیشتری باشد.ورودی فایل Manifest از دو قسمت تشکیل شده است، نام و مقدار. نوشتن نام و مقدارهای Manifest چند نکته دارد که به آن می‌پردازیم: باید یک اسپیس پس از ":" و قبل از مقدار باشد.بعد از آخرین خط، یک خط باید خالی باشد.متن باید از انکودر UTF-8 استفاده کند.وقتی کلاس main را مشخص می‌کنیم نباید پسوند class. را پس از آن بنویسیم.آپدیت کردن فایل Manifestنمونه‌ای از فایل تکست که برای آپدیت کردن Manifest نوشته شدهاگر فایل jar را ساخته‌ایم و می‌خواهیم تغییراتی روی فایل Manifest بدهیم؛ ابتدا یک فایل txt. می‌سازیم و سپس برای اعمال تغییرات از دستور زیر استفاده می‌کنیم:Example:jar -ufm export.jar manifest.txtشناساندن کلاس main از طریق Manifestدر قسمت‌های بالاتر توضیح داده شد که چگونه هنگام ساخت یک فایل jar، کلاس main را برای اجرا شدن به آن اضافه کنیم. حال اگر فایل jar را قبلا ساخته باشیم و کلاس main را به آن اضافه نکرده باشیم، کافیست خط زیر را به فایل Manifest اضافه کنیم:Main-Class: Mainحتما دقت کنید که class. پس از آن را نباید بنویسیم.استفاده از IDEتا به این جا با jar و با انواع دستورهاش آشنا شدیم. اگر پروژه‌ی ما از کتابخانه‌های خارجی استفاده می‌کرد، قرار دادن این کتابخانه‌ها در فایل jar کمی پیچیده می‌شد. محیط‌های توسعه قابلیت‌های پیشرفته‌ای در اختیارمان قرار می‌دهند که کار را برای ما ساده‌تر می‌کنند. در این قسمت ساختن یک فایل jar را در IntelliJ بررسی می‌کنیم.فرایند ساخت فایل jarابتدا از نوار بالا گزینه File را انتخاب می‌کنیم و به قسمت Artifacts می‌رویم.روی علامت + و سپس روی JAR کلیک می‌کنیم. گزینه‌ی From modules with dependencies انتخاب می‌کنیم.در فیلدهای پیش رو می‌توان کلاس Main را انتخاب کرد.در انتها روی OK کلیک می‌کنیم.در صفحه اصلی نرم‌افزار از نوار بالا روی Build و سپس Build Artifacts کلیک می‌کنیم.فایل jar مورد نظر را انتخاب کنید تا فرایند ساخت فایل jar آغاز شود.فایل‌های jar به طور پیش فرض در مسیر out/artifacts قرار می‌گیرد.منابعWorking with JAR and Manifest files In Java - GeeksforGeeksJar files in Java - GeeksforGeeksCompile and build applications with IntelliJ IDEA | IntelliJ IDEAJAR (file format) - Wikipediaاگر دوست داشتید در کانال تلگرام عضو بشید. #SBU_CE_AP_00