JAR (file format)
جے اے آر ("جاوا آرکائیو") فائل ایک پیکیج فائل فارمیٹ ہے جو عام طور پر بہت سی جاوا کلاس فائلوں اور متعلقہ میٹا ڈیٹا اور وسائل (متن، تصاویر وغیرہ) کو جمع کرنے کے لیے استعمال ہوتی ہے۔ تقسیم کے لیے ایک فائل میں۔ جے اے آر فائلیں آرکائیو فائلیں ہیں جن میں جاوا مخصوص مینیفیسٹ فائل شامل ہوتی ہے۔ وہ زپ فارمیٹ پر بنائے گئے ہیں اور عام طور پر ان میں. جار فائل کی توسیع ہوتی ہے۔ ڈیزائن اے جے اے آر فائل جاوا رن ٹائمز کو ایک درخواست میں اس کی کلاسوں اور ان سے وابستہ وسائل سمیت پوری ایپلی کیشن کو مؤثر طریقے سے تعینات کرنے کی اجازت دیتی ہے۔ جے اے آر فائل کے عناصر کو کمپریس کیا جا سکتا ہے، جس سے ڈاؤن لوڈ کا وقت کم ہو جاتا ہے۔ جے اے آر فائل میں ایک مینی فیسٹ فائل ہو سکتی ہے، جو میٹا-آئی این ایف/مینی فیسٹ. ایم ایف پر واقع ہے۔ مینیفیسٹ فائل میں اندراجات بیان کرتے ہیں کہ جے اے آر فائل کو کیسے استعمال کیا جائے۔ مثال کے طور پر، کلاس پاتھ اندراج کو جے اے آر کے ساتھ لوڈ کرنے کے لیے دیگر جے اے آر فائلوں کی وضاحت کے لیے استعمال کیا جا سکتا ہے۔ کسی فائل کے مندرجات کو کسی بھی آرکائیو نکالنے والے سافٹ ویئر کا استعمال کرتے ہوئے نکالا جا سکتا ہے جو زپ فارمیٹ کی حمایت کرتا ہے، یا جاوا ڈویلپمنٹ کٹ کے ذریعہ فراہم کردہ جار کمانڈ لائن یوٹیلیٹی۔ سیکیورٹی ڈویلپرز جے اے آر فائلوں پر ڈیجیٹل طور پر دستخط کر سکتے ہیں۔ اس صورت میں، دستخطی معلومات سرایت شدہ مینیفیسٹ فائل کا حصہ بن جاتی ہے۔ جے اے آر خود دستخط شدہ نہیں ہے، بلکہ اس کے بجائے آرکائیو کے اندر موجود ہر فائل کو اس کے چیکسم کے ساتھ درج کیا گیا ہے۔ یہ وہ چیکسم ہیں جن پر دستخط کیے گئے ہیں۔ متعدد ادارے جے اے آر فائل پر دستخط کر سکتے ہیں، ہر دستخط کے ساتھ جے اے آر فائل کو خود تبدیل کر سکتے ہیں، حالانکہ دستخط شدہ فائلیں خود درست رہتی ہیں۔ جب جاوا رن ٹائم دستخط شدہ جے اے آر فائلوں کو لوڈ کرتا ہے، تو یہ دستخطوں کی توثیق کر سکتا ہے اور ان کلاسوں کو لوڈ کرنے سے انکار کر سکتا ہے جو دستخط سے میل نہیں کھاتے ہیں۔ یہ 'سیل شدہ' پیکجوں کو بھی سپورٹ کر سکتا ہے، جس میں کلاس لوڈر جاوا کلاسوں کو صرف اسی پیکیج میں لوڈ کرنے کی اجازت دے گا اگر ان سب پر ایک ہی ادارے کے دستخط ہوں۔ یہ بدنیتی پر مبنی کوڈ کو موجودہ پیکیج میں داخل ہونے سے روکتا ہے، اور اس طرح پیکیج کے دائرہ کار والی کلاسوں اور ڈیٹا تک رسائی حاصل کرتا ہے۔ ریورس انجینئرنگ کو مزید مشکل بنانے کے لیے جے اے آر فائلوں کے مواد کو مبہم بنایا جا سکتا ہے۔ ایک قابل عمل جاوا پروگرام کو جے اے آر فائل میں کسی بھی لائبریری کے ساتھ پیک کیا جا سکتا ہے جو پروگرام استعمال کرتا ہے۔ قابل عمل جے اے آر فائلوں میں مین کلاس کے ساتھ انٹری پوائنٹ کلاس کی وضاحت کرنے والا مینی فیسٹ ہوتا ہے: myPrograms.MyClass اور ایک واضح کلاس-پاتھ (اور-cp دلیل کو نظر انداز کر دیا جاتا ہے)۔ کچھ آپریٹنگ سسٹم کلک کرنے پر انہیں براہ راست چلا سکتے ہیں۔ عام دعا کمانڈ لائن سے جاوا جار foo.jar ہے۔ مقامی لانچر زیادہ تر پلیٹ فارمز پر بنائے جا سکتے ہیں۔ مثال کے طور پر، مائیکروسافٹ ونڈوز کے صارفین جو ونڈوز ایکس ای فائلیں رکھنے کو ترجیح دیتے ہیں وہ جے ایس موتھ، لانچ 4 جے، ون رن 4 جے یا نل سافٹ اسکرپٹیبل انسٹال سسٹم جیسے ٹولز کا استعمال کر سکتے ہیں تاکہ ایک جے اے آر فائلوں کو قابل عمل میں لپیٹا جا سکے۔ مینیفیسٹ فائل ایک میٹا ڈیٹا فائل ہے جو جے اے آر کے اندر موجود ہوتی ہے۔ یہ توسیعی اور پیکیج سے متعلق ڈیٹا کی وضاحت کرتا ہے۔ اس میں حصوں میں منظم نام-قدر کے جوڑے ہوتے ہیں۔ اگر کسی جے اے آر فائل کو قابل عمل فائل کے طور پر استعمال کرنے کا ارادہ کیا گیا ہے، تو مینیفیسٹ فائل ایپلی کیشن کی مرکزی کلاس کی وضاحت کرتی ہے۔ مینیفیسٹ فائل کا نام MANIFEST.MF ہے۔ مینیفیسٹ ڈائرکٹری کو کمپریسڈ آرکائیو کا پہلا اندراج ہونا چاہیے۔ وضاحتیں مینی فیسٹ کینونکل لوکیشن میٹا-آئی این ایف/مینی فیسٹ. ایم ایف پر ظاہر ہوتا ہے۔ آرکائیو میں صرف ایک مینیفیسٹ فائل ہو سکتی ہے اور اسے اسی مقام پر ہونا چاہیے۔ جاوا ڈویلپمنٹ کٹ کے ورژن 1 کے ساتھ بنائی گئی جے اے آر فائل میں مینیفیسٹ فائل کا مواد درج ذیل ہے۔ منشور-ورژن: 1.1 نام کو کالون کے ذریعے اس کی قدر سے الگ کیا جاتا ہے۔ ڈیفالٹ مینی فیسٹ سے پتہ چلتا ہے کہ یہ مینی فیسٹ تفصیلات کے ورژن 1 کے مطابق ہے۔ مینی فیسٹ میں دیگر فائلوں کے بارے میں معلومات ہو سکتی ہیں جو آرکائیو میں پیک کی گئی ہیں۔ ظاہر کردہ مواد کا انحصار جے اے آر فائل کے مطلوبہ استعمال پر ہوتا ہے۔ ڈیفالٹ مینیفیسٹ فائل اس بارے میں کوئی مفروضہ نہیں بناتی کہ اسے دوسری فائلوں کے بارے میں کون سی معلومات ریکارڈ کرنی چاہیے، اس لیے اس کی واحد لائن میں صرف اپنے بارے میں ڈیٹا ہوتا ہے۔ اسے UTF-8 میں انکوڈ کیا جانا چاہیے۔ صرف آرکائیو کرنے کے مقصد سے بنائی گئی اسپیشل پرپز مینی فیسٹ ہیڈرز جے اے آر فائلیں MANIFEST.MF فائل کا استعمال نہیں کرتی ہیں۔ جے اے آر فائلوں کے زیادہ تر استعمال سادہ آرکائیونگ اور کمپریشن سے بالاتر ہیں اور مینفیسٹ فائل میں خصوصی معلومات کی ضرورت ہوتی ہے۔ مینی فیسٹ ڈویلپرز کو اپنے جار کے لیے کئی مفید خصوصیات کی وضاحت کرنے کی اجازت دیتا ہے۔ خصوصیات کلیدی قدر کے جوڑوں میں متعین کی جاتی ہیں۔ اگر کوئی ایپلیکیشن جے اے آر فائل میں موجود ہے، تو جاوا ورچوئل مشین کو ایپلیکیشن کے انٹری پوائنٹ کو جاننے کی ضرورت ہے۔ انٹری پوائنٹ کوئی بھی کلاس ہے جس میں پبلک اسٹیٹک وایڈ مین (سٹرنگ [] آرگس) طریقہ ہے۔ یہ معلومات مینیفیسٹ مین کلاس ہیڈر میں فراہم کی گئی ہے، جس کی عمومی شکل ہے: مین کلاس: com.example.MyClassName اس مثال میں com.example.MyClassName. مین () ایپلیکیشن لانچ کے وقت انجام دیتا ہے۔ پیکیج سیلنگ اختیاری طور پر، جے اے آر فائل کے اندر ایک پیکیج کو سیل کیا جا سکتا ہے، جس کا مطلب ہے کہ اس پیکیج میں بیان کردہ تمام کلاسیں ایک ہی جے اے آر فائل میں محفوظ ہیں۔ سافٹ ویئر میں کلاسوں کے درمیان ورژن کی مستقل مزاجی کو یقینی بنانے کے لیے یا حفاظتی اقدام کے طور پر پیکیج کو سیل کیا جا سکتا ہے۔ پیکیج کو سیل کرنے کے لیے، ایک نام کی اندراج ظاہر ہونا ضروری ہے، اس کے بعد ایک مہر بند ہیڈر، جیسے: نام: مائی کمپنی/مائی پیکیج/مہر بند: درست نام ہیڈر کی قیمت پیکیج کا متعلقہ پاتھ نام ہے۔ نوٹ کریں کہ یہ فائل کے نام سے ممتاز کرنے کے لیے '/' کے ساتھ ختم ہوتا ہے۔ نام ہیڈر کے بعد آنے والے کوئی بھی ہیڈر، بغیر کسی درمیانی خالی لکیروں کے، نام ہیڈر میں مخصوص فائل یا پیکیج پر لاگو ہوتے ہیں۔ مندرجہ بالا مثال میں، کیونکہ مہر بند ہیڈر نام: مائی کمپنی/مائی پیکیج ہیڈر کے بعد ہوتا ہے جس میں کوئی درمیانی خالی لائنیں نہیں ہوتی ہیں، مہر بند ہیڈر پیکیج مائی کمپنی/مائی پیکیج پر (صرف) لاگو ہوتا ہے۔ مہر بند پیکجوں کی خصوصیت جاوا 9 میں متعارف کیے گئے جاوا پلیٹ فارم ماڈیول سسٹم کے ذریعے ختم کر دی گئی ہے، جس میں ماڈیول پیکجوں کو تقسیم نہیں کر سکتے۔ پیکیج ورژننگ کئی مینیفیسٹ ہیڈرز ورژننگ کی معلومات رکھتے ہیں۔ ہر پیکیج کے لیے ہیڈر کا ایک سیٹ تفویض کیا جا سکتا ہے۔ ورژننگ ہیڈر پیکیج کے نام ہیڈر کے نیچے براہ راست ظاہر ہوتے ہیں۔ یہ مثال تمام ورژننگ ہیڈرز کو دکھاتی ہے: نام: جاوا/یوٹیلی/سپیسیفیکیشن-ٹائٹل: "جاوا یوٹیلیٹی کلاسز" سپیسیفیکیشن-ورژن: "1.2" سپیسیفیکیشن-وینڈر: "سن مائیکرو سسٹمز، انکارپوریٹڈ"۔ امپلیمینٹیشن-ٹائٹل: "java.util" امپلیمینٹیشن-ورژن: "بلڈ 57" امپلیمینٹیشن-وینڈر: "سن مائیکرو سسٹمز، انکارپوریٹڈ"۔ ملٹی ریلیز ایک جار کو اختیاری طور پر ملٹی ریلیز جار کے طور پر نشان زد کیا جا سکتا ہے۔ ملٹی ریلیز فیچر کا استعمال لائبریری ڈویلپرز کو جاوا رن ٹائم کے ورژن کے لحاظ سے مختلف کوڈ لوڈ کرنے کی اجازت دیتا ہے۔ یہ بدلے میں ڈویلپرز کو مطابقت کی قربانی کے بغیر نئی خصوصیات سے فائدہ اٹھانے کی اجازت دیتا ہے۔ ایک ملٹی ریلیز جار کو مینی فیسٹ میں درج ذیل اعلامیے کا استعمال کرتے ہوئے فعال کیا جاتا ہے: ملٹی ریلیز: حقیقی انحصار MANIFEST.MF فائل کو ان تمام کلاسوں کی وضاحت کے لیے استعمال کیا جا سکتا ہے جنہیں کسی ایپلیکیشن کو چلانے کے لیے لوڈ کرنا ضروری ہے۔ نوٹ کریں کہ کلاس-پاتھ اندراجات خالی جگہوں کے ساتھ محدود ہیں، نہ کہ سسٹم پاتھ ڈیلیمیٹر: کلاس-پاتھ: کے ساتھ۔ اپاچی اینٹ بلڈ ٹول کا زپ اور جے اے آر آرکائیوز کو پڑھنے اور لکھنے کے لیے اپنا پیکیج ہے، جس میں یونکس فائل سسٹم ایکسٹینشنز کے لیے سپورٹ بھی شامل ہے۔ org.apache.tools.zip پیکیج اپاچی سافٹ ویئر فاؤنڈیشن لائسنس کے تحت جاری کیا گیا ہے اور اسے چیونٹی کے باہر استعمال کے قابل بنانے کے لیے ڈیزائن کیا گیا ہے۔ متعلقہ فارمیٹس جے اے آر فارمیٹ پر کئی متعلقہ فائل فارمیٹس بنتے ہیں: وار (ویب ایپلیکیشن آرکائیو) فائلیں، جاوا آرکائیوز، اسٹور ایکس ایم ایل فائلیں، جاوا کلاسز، جاوا سرور پیجز اور ویب ایپلیکیشنز کے لیے دیگر اشیاء۔ آر اے آر (ریسورس اڈاپٹر آرکائیو) فائلیں (آر اے آر فائل فارمیٹ کے ساتھ الجھن میں نہ پڑیں)، جاوا آرکائیوز بھی، جے 2 ای ای کنیکٹر آرکیٹیکچر (جے سی اے) ایپلی کیشنز کے لیے ایکس ایم ایل فائلیں، جاوا کلاسز اور دیگر اشیاء کو اسٹور کرتی ہیں۔ ای اے آر (انٹرپرائز آرکائیو) فائلیں جامع جاوا آرکائیوز فراہم کرتی ہیں جو ایکس ایم ایل فائلوں، جاوا کلاسوں اور انٹرپرائز ایپلی کیشنز کے لیے جے اے آر، ڈبلیو اے آر اور آر اے آر جاوا آرکائیو فائلوں سمیت دیگر اشیاء کو یکجا کرتی ہیں۔ ایس اے آر (سروس آرکائیو) ای اے آر سے ملتا جلتا ہے۔ یہ ایک service.xml فائل اور اس کے ساتھ جے اے آر فائلیں فراہم کرتا ہے۔ اے پی کے (اینڈرائڈ ایپلی کیشن پیکیج)، جاوا آرکائیو فارمیٹ کا ایک ورژن، اینڈرائڈ ایپلی کیشنز کے لیے استعمال ہوتا ہے۔ اے اے آر (اینڈرائڈ آرکائیو) کا استعمال اینڈرائڈ لائبریریوں کی تقسیم کے لیے کیا جاتا ہے، عام طور پر میوین کے ذریعے۔ پی اے آر (پلان آرکائیو)-جسے ایکلپس ورگو او ایس جی آئی ایپلی کیشن سرور کی حمایت حاصل ہے، ملٹی بنڈل او ایس جی آئی ایپلی کیشنز کو ایک واحد آرکائیو کے طور پر تعینات کرنے کی اجازت دیتا ہے اور اسی سرور میں تعینات دیگر پی اے آر پر مبنی ایپلی کیشنز سے الگ تھلگ فراہم کرتا ہے۔ کے اے آر (کراف آرکائیو)-اپاچی کراف او ایس جی آئی ایپلی کیشن سرور کے تعاون سے، ملٹی بنڈل، ملٹی فیچر او ایس جی آئی ایپلی کیشنز کی تعیناتی کی اجازت دیتا ہے۔ جے اے آر ہیل جاوا پلیٹ فارم ماڈیول سسٹم اوپن پیکیجنگ کنونشن جے اے ڈی (فائل فارمیٹ) جی آئی ایف اے آر حملہ۔ ایک جامد لائبریری حوالہ جات بیرونی لنکس جے اے آر فائل کی وضاحت جے اے آر فائل کا جائزہ آرکائیو فارمیٹس جاوا پلیٹ فارم