JAR (file format)
जे. ए. आर. ("जावा संग्रह") फ़ाइल एक पैकेज फ़ाइल प्रारूप है जिसका उपयोग आमतौर पर कई जावा वर्ग की फ़ाइलों और संबंधित मेटाडेटा और संसाधनों (पाठ, चित्र, आदि) को एकत्रित करने के लिए किया जाता है। वितरण के लिए एक फाइल में। जे. ए. आर. संचिकाएँ अभिलेख संचिकाएँ होती हैं जिनमें जावा-विशिष्ट मैनिफेस्ट संचिका शामिल होती है। वे ज़िप प्रारूप पर बनाए जाते हैं और आम तौर पर एक. جار फ़ाइल विस्तार होता है। डिज़ाइन एक जे. ए. आर. फ़ाइल जावा रनटाइम को एक ही अनुरोध में अपने वर्गों और उनके संबंधित संसाधनों सहित एक पूरे अनुप्रयोग को कुशलता से तैनात करने की अनुमति देती है। जे. ए. आर. फ़ाइल तत्वों को संपीड़ित किया जा सकता है, जिससे डाउनलोड का समय कम हो जाता है। जे. ए. आर. फाइल में एक मैनिफेस्ट फाइल हो सकती है, जो एम. ई. टी. ए.-आई. एन. एफ./एम. ए. एन. आई. एफ. ई. एस. टी. एम. एफ. पर स्थित है। मैनिफेस्ट फाइल में प्रविष्टियाँ वर्णन करती हैं कि जे. ए. आर. फाइल का उपयोग कैसे किया जाए। उदाहरण के लिए, क्लासपाथ प्रविष्टि का उपयोग जे. ए. आर. के साथ लोड करने के लिए अन्य जे. ए. आर. फ़ाइलों को निर्दिष्ट करने के लिए किया जा सकता है। एक फ़ाइल की सामग्री को किसी भी संग्रह निष्कर्षण सॉफ़्टवेयर का उपयोग करके निकाला जा सकता है जो ज़िप प्रारूप का समर्थन करता है, या जावा विकास किट द्वारा प्रदान की गई जार कमांड लाइन उपयोगिता। सुरक्षा विकासकर्ता जे. ए. आर. फाइलों पर डिजिटल रूप से हस्ताक्षर कर सकते हैं। उस स्थिति में, हस्ताक्षर की जानकारी एम्बेडेड मैनिफेस्ट फ़ाइल का हिस्सा बन जाती है। जे. ए. आर. स्वयं हस्ताक्षरित नहीं है, लेकिन इसके बजाय संग्रह के अंदर हर फ़ाइल को इसके चेकसम के साथ सूचीबद्ध किया गया है; ये चेकसम हैं जिन पर हस्ताक्षर किए गए हैं। कई इकाइयाँ जे. ए. आर. फ़ाइल पर हस्ताक्षर कर सकती हैं, प्रत्येक हस्ताक्षर के साथ जे. ए. आर. फ़ाइल को ही बदल सकती हैं, हालाँकि हस्ताक्षरित फाइलें स्वयं मान्य रहती हैं। जब जावा रनटाइम हस्ताक्षरित जेएआर फ़ाइलों को लोड करता है, तो यह हस्ताक्षरों को मान्य कर सकता है और उन वर्गों को लोड करने से इनकार कर सकता है जो हस्ताक्षर से मेल नहीं खाते हैं। यह 'सीलबंद' पैकेजों का भी समर्थन कर सकता है, जिसमें क्लासलोडर केवल जावा वर्गों को एक ही पैकेज में लोड करने की अनुमति देगा यदि वे सभी एक ही संस्था द्वारा हस्ताक्षरित हैं। यह दुर्भावनापूर्ण कोड को मौजूदा पैकेज में डालने से रोकता है, और इसलिए पैकेज-दायरे वाले वर्गों और डेटा तक पहुंच प्राप्त करता है। रिवर्स इंजीनियरिंग को और अधिक कठिन बनाने के लिए जे. ए. आर. फाइलों की सामग्री को अस्पष्ट किया जा सकता है। निष्पादन योग्य जे. ए. आर. फाइल एक निष्पादन योग्य जावा प्रोग्राम को जे. ए. आर. फाइल में पैक किया जा सकता है, साथ ही प्रोग्राम द्वारा उपयोग किए जाने वाले किसी भी पुस्तकालय के साथ। निष्पादन योग्य जे. ए. आर. फाइलों में मुख्य-वर्ग के साथ प्रवेश बिंदु वर्ग को निर्दिष्ट करने वाला मैनिफेस्ट होता हैः myPrograms.MyClass और एक स्पष्ट वर्ग-पथ (और-सी. पी. तर्क को नजरअंदाज कर दिया जाता है)। क्लिक करने पर कुछ ऑपरेटिंग सिस्टम इन्हें सीधे चला सकते हैं। विशिष्ट आह्वान एक कमांड लाइन से जावा-जार foo.jar है। देशी प्रक्षेपक अधिकांश प्लेटफार्मों पर बनाए जा सकते हैं। उदाहरण के लिए, माइक्रोसॉफ्ट विंडोज उपयोगकर्ता जो विंडोज एक्सई फ़ाइलों को रखना पसंद करते हैं, वे एकल जेएआर फ़ाइलों को निष्पादन योग्य में लपेटने के लिए जेएसमूथ, लॉन्च4जे, विनरन4जे या नलसॉफ्ट स्क्रिप्टेबल इंस्टॉल सिस्टम जैसे उपकरणों का उपयोग कर सकते हैं। मैनिफेस्ट एक मैनिफेस्ट फ़ाइल जे. ए. आर. के भीतर निहित एक मेटाडेटा फ़ाइल है। यह विस्तार और पैकेज से संबंधित डेटा को परिभाषित करता है। इसमें खंडों में व्यवस्थित नाम-मूल्य जोड़े होते हैं। यदि एक जे. ए. आर. फ़ाइल को निष्पादन योग्य फ़ाइल के रूप में उपयोग करने का इरादा है, तो मैनिफेस्ट फ़ाइल अनुप्रयोग के मुख्य वर्ग को निर्दिष्ट करती है। मैनिफेस्ट फाइल का नाम MANIFEST.MF है। मैनिफेस्ट निर्देशिका संपीड़ित संग्रह की पहली प्रविष्टि होनी चाहिए। विनिर्देश मैनिफेस्ट विहित स्थान META-INF/MANIFEST. MF पर दिखाई देता है। एक संग्रह में केवल एक मैनिफेस्ट फ़ाइल हो सकती है और यह उस स्थान पर होनी चाहिए। जावा विकास किट के संस्करण 1 के साथ बनाई गई जे. ए. आर. फ़ाइल में मैनिफेस्ट फ़ाइल की सामग्री निम्नलिखित है। मैनिफेस्ट-संस्करणः 1. नाम को बृहदान्त्र द्वारा इसके मूल्य से अलग किया जाता है। डिफ़ॉल्ट मैनिफेस्ट से पता चलता है कि यह मैनिफेस्ट विनिर्देश के संस्करण 1 के अनुरूप है। मैनिफेस्ट में संग्रह में पैक की गई अन्य फाइलों के बारे में जानकारी हो सकती है। मैनिफेस्ट सामग्री जे. ए. आर. फ़ाइल के लिए इच्छित उपयोग पर निर्भर करती है। डिफ़ॉल्ट मैनिफेस्ट फ़ाइल इस बारे में कोई धारणा नहीं बनाती है कि उसे अन्य फ़ाइलों के बारे में कौन सी जानकारी दर्ज करनी चाहिए, इसलिए इसकी एकल पंक्ति में केवल अपने बारे में डेटा होता है। इसे यू. टी. एफ-8 में कूटबद्ध किया जाना चाहिए। केवल संग्रहित करने के उद्देश्य से बनाई गई स्पेशल-पर्पस मैनिफेस्ट हेडर जे. ए. आर. फाइलें MANIFEST.MF फ़ाइल का उपयोग नहीं करती हैं। जे. ए. आर. फाइलों के अधिकांश उपयोग सरल संग्रह और संपीड़न से परे हैं और मैनिफेस्ट फाइल में विशेष जानकारी की आवश्यकता होती है। विशेषताएं मैनिफेस्ट डेवलपर्स को अपने जार के लिए कई उपयोगी विशेषताओं को परिभाषित करने की अनुमति देता है। गुणों को कुंजी-मूल्य जोड़े में निर्दिष्ट किया जाता है। अनुप्रयोग यदि कोई अनुप्रयोग जे. ए. आर. फाइल में निहित है, तो जावा वर्चुअल मशीन को अनुप्रयोग के प्रवेश बिंदु को जानने की आवश्यकता होती है। एक प्रवेश बिंदु सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] आर्ग) विधि वाला कोई भी वर्ग है। यह जानकारी मैनिफेस्ट मेन-क्लास हेडर में प्रदान की गई है, जिसका सामान्य रूप हैः मेन-क्लासः com.example.MyClassName इस उदाहरण में com.example.MyClassName. मैन () एप्लिकेशन लॉन्च के समय निष्पादित होता है। पैकेज सीलिंग वैकल्पिक रूप से, जे. ए. आर. फाइल के भीतर एक पैकेज को सील किया जा सकता है, जिसका अर्थ है कि उस पैकेज में परिभाषित सभी वर्गों को एक ही जे. ए. आर. फाइल में संग्रहीत किया जाता है। सॉफ्टवेयर में वर्गों के बीच संस्करण स्थिरता सुनिश्चित करने के लिए या सुरक्षा उपाय के रूप में एक पैकेज को सील किया जा सकता है। पैकेज को सील करने के लिए, एक नाम प्रविष्टि दिखाई देने की आवश्यकता होती है, उसके बाद एक सील्ड हेडर, जैसे किः नाम-माय कंपनी/माय पैकेज/सील्डः सही नाम हेडर का मान पैकेज का सापेक्ष पथनाम है। ध्यान दें कि यह एक फ़ाइल नाम से अलग करने के लिए '/' के साथ समाप्त होता है। नेम हेडर के बाद आने वाला कोई भी हेडर, बिना किसी खाली रेखा के, नेम हेडर में निर्दिष्ट फ़ाइल या पैकेज पर लागू होता है। उपरोक्त उदाहरण में, क्योंकि सील्ड हेडर नेमः मायकंपनी/मायपैकेज हेडर के बाद आता है, जिसमें कोई मध्यवर्ती खाली रेखा नहीं होती है, सील्ड हेडर पैकेज मायकंपनी/मायपैकेज पर (केवल) लागू होता है। सीलबंद पैकेजों की विशेषता जावा 9 में शुरू किए गए जावा प्लेटफ़ॉर्म मॉड्यूल सिस्टम द्वारा पुरानी है, जिसमें मॉड्यूल पैकेजों को विभाजित नहीं कर सकते हैं। पैकेज संस्करण कई मैनिफेस्ट शीर्षकों में संस्करण की जानकारी होती है। प्रत्येक पैकेज के लिए शीर्षकों का एक समूह निर्धारित किया जा सकता है। संस्करण शीर्षलेख पैकेज के लिए सीधे नाम शीर्षलेख के नीचे दिखाई देते हैं। यह उदाहरण सभी संस्करण शीर्षकों को दिखाता हैः नाम जावा/उपयोग/विनिर्देशन-शीर्षकः "जावा उपयोगिता वर्ग" विनिर्देशन-संस्करणः "1.2" विनिर्देशन-विक्रेताः "सन माइक्रोसिस्टम्स, इंक"। कार्यान्वयन-शीर्षकः "java.util" कार्यान्वयन-संस्करणः "बिल्ड57" कार्यान्वयन-विक्रेताः "सन माइक्रोसिस्टम्स, इंक". बहु-रिलीज़ ए जार को वैकल्पिक रूप से बहु-रिलीज़ जार के रूप में चिह्नित किया जा सकता है। मल्टी-रिलीज फीचर का उपयोग करने से लाइब्रेरी डेवलपर्स को जावा रनटाइम के संस्करण के आधार पर अलग-अलग कोड लोड करने की अनुमति मिलती है। यह बदले में डेवलपर्स को संगतता का त्याग किए बिना नई सुविधाओं का लाभ उठाने की अनुमति देता है। मैनिफेस्ट में निम्नलिखित घोषणा का उपयोग करके एक बहु-रिलीज जार सक्षम किया जाता हैः बहु-रिलीजः वास्तविक निर्भरता MANIFEST.MF फ़ाइल का उपयोग उन सभी वर्गों को निर्दिष्ट करने के लिए किया जा सकता है जिन्हें एक अनुप्रयोग को चलाने में सक्षम होने के लिए लोड किया जाना चाहिए। ध्यान दें कि वर्ग-पथ प्रविष्टियों को रिक्त स्थान के साथ सीमांकित किया जाता है, न कि प्रणाली पथ परिसीमन के साथः वर्ग-पथः। pkg1.jar पथ/से/pkg2. جار अपाचे एंट जिप/जेएआर समर्थन अपाचे एंट बिल्ड टूल के पास ज़िप और जेएआर अभिलेखागार को पढ़ने और लिखने के लिए अपना पैकेज है, जिसमें यूनिक्स फ़ाइल सिस्टम एक्सटेंशन के लिए समर्थन भी शामिल है। org.apache.tools.zip पैकेज अपाचे सॉफ्टवेयर फाउंडेशन लाइसेंस के तहत जारी किया गया है और इसे चींटी के बाहर उपयोग करने योग्य बनाया गया है। संबंधित प्रारूप कई संबंधित फ़ाइल प्रारूप जे. ए. आर. प्रारूप पर निर्मित होते हैंः डब्ल्यू. ए. आर. (वेब अनुप्रयोग संग्रह) फ़ाइलें, जावा अभिलेखागार, एक्स. एम. एल. फ़ाइलों को संग्रहीत करना, जावा वर्ग, जावा सर्वर पृष्ठ और वेब अनुप्रयोगों के लिए अन्य वस्तुएँ। आर. ए. आर. (रिसोर्स एडाप्टर आर्काइव) फाइल (आर. ए. आर. फाइल प्रारूप के साथ भ्रमित नहीं होना चाहिए), जावा अभिलेखागार, जे2ईई कनेक्टर आर्किटेक्चर (जे. सी. ए.) अनुप्रयोगों के लिए एक्स. एम. एल. फाइलों, जावा वर्गों और अन्य वस्तुओं को संग्रहीत करते हैं। ई. ए. आर. (उद्यम संग्रह) फाइलें समग्र जावा अभिलेखागार प्रदान करती हैं जो एक्स. एम. एल. फ़ाइलों, जावा वर्गों और उद्यम अनुप्रयोगों के लिए जे. ए. आर., डब्ल्यू. ए. आर. और आर. ए. आर. जावा संग्रह फ़ाइलों सहित अन्य वस्तुओं को जोड़ती हैं। एस. ए. आर. (सेवा संग्रह) ई. ए. आर. के समान है। यह एक service.xml फाइल और साथ में जे. ए. आर. फाइल प्रदान करता है। एपीके (एंड्रॉइड एप्लिकेशन पैकेज), जावा संग्रह प्रारूप का एक संस्करण, एंड्रॉइड अनुप्रयोगों के लिए उपयोग किया जाता है। एएआर (एंड्रॉइड आर्काइव) का उपयोग एंड्रॉइड पुस्तकालयों के वितरण के लिए किया जाता है, आमतौर पर मावेन के माध्यम से। पी. ए. आर. (योजना संग्रह)-एक्लिप्स कन्या ओएसजीआई अनुप्रयोग सर्वर द्वारा समर्थित, एकल संग्रह के रूप में बहु-बंडल ओएसजीआई अनुप्रयोगों की तैनाती की अनुमति देता है और उसी सर्वर में तैनात अन्य पी. ए. आर.-आधारित अनुप्रयोगों से अलगाव प्रदान करता है। के. ए. आर. (कराफ संग्रह)-अपाचे कराफ ओ. एस. जी. आई. अनुप्रयोग सर्वर द्वारा समर्थित, बहु-बंडल, बहु-विशेषता ओ. एस. जी. आई. अनुप्रयोगों की तैनाती की अनुमति देता है। जे. ए. आर. हेल जावा प्लेटफ़ॉर्म मॉड्यूल सिस्टम ओपन पैकेजिंग कन्वेंशन जे. ए. डी. (फ़ाइल प्रारूप) जी. आई. एफ. ए. आर. हमला. एक स्थिर पुस्तकालय संदर्भ बाहरी लिंक जे. ए. आर. फ़ाइल विनिर्देश जे. ए. आर. फ़ाइल अवलोकन संग्रह प्रारूप जावा प्लेटफ़ॉर्म देखें।