2014-11-07 5 views
15

हम जानते हैं कि jar एक संपीड़ित संग्रह फ़ाइल प्रारूप है जो संकलित जावा कक्षाओं और conf फ़ाइलों के लिए एक कंटेनर के रूप में कार्य करता है। जहां तक ​​मुझे पता है, संपीड़ित कंटेनर फ़ाइल से किसी भी सामग्री को पढ़ने के लिए, पहले उन्हें कहीं निकालने की आवश्यकता है।एक जार फ़ाइल कैसे निष्पादित की जाती है? कक्षाएं कहीं निकाली जाती हैं?

तो जेवीएम जार के अंदर कक्षाओं को कैसे निष्पादित करता है? क्या यह जार की सामग्री को एक अस्थायी स्थान पर निकालता है और फिर कक्षाओं को निष्पादित करता है?

+0

संबंधित: http://stackoverflow.com/questions/13927217/what-happens-when-java-program-starts –

+0

पैक किए गए डेटा को सीधे निकाला जाता है स्मृति और अस्थायी रूप से डिस्क पर संग्रहीत नहीं है। –

उत्तर

18

जेवीएम जार फ़ाइल से कक्षाओं को फ़ाइलों को लोड करने में सक्षम है, बिना जार फ़ाइलों को जार निकालने के।

यह कार्यक्षमता मानक पुस्तकालय में आपके लिए भी उपलब्ध है, अधिक जानकारी के लिए JarFile देखें।

तो नहीं, जेवीएम अस्थायी फ़ाइलों, कक्षाओं (और संसाधनों) के लिए एक जार निकालने के लिए मांग पर लोड नहीं होता है।

एक जार फ़ाइल मूल रूप से एक पूर्वनिर्धारित प्रविष्टि "META-INF/MANIFEST.MF" के साथ एक ज़िप फ़ाइल है (यह निष्पादन योग्य जार के मामले में केवल अनिवार्य है)। यह MANIFEST.MF प्रविष्टि (फ़ाइल) में JVM द्वारा कुछ जानकारी पढ़ी गई है। प्रकट फाइलों पर अधिक:

Working with Manifest Files: The Basics

एक निष्पादन योग्य जार के मामले में मालसूची फ़ाइल भी मुख्य वर्ग है कि लोड किया जाना चाहिए और जिसका public static void main(String[]) विधि क्रम आवेदन शुरू करने के लिए कहा जा शामिल हैं। Main-Class प्रकट प्रविष्टि मुख्य वर्ग निर्दिष्ट करता है:

Main-Class: classname 
1

नहीं JVM स्मृति करने के लिए और फ़ाइल के लिए नहीं जार फ़ाइल निकालता है। यह मेटा-आईएनएफ के अंदर MANIFEST.MF पढ़ता है जिसमें मुख्य वर्ग के लिए प्रवेश होता है। जेवीएम इस मुख्य वर्ग के अंदर सार्वजनिक स्थैतिक शून्य मुख्य वर्ग की तलाश में है। इस प्रकार जेवीएम मुख्य वर्ग पाता है और निष्पादन योग्य जार फ़ाइलों को निष्पादित करता है

+2

वास्तव में सही नहीं है। जेएआर सामग्री * * अतिरिक्त है, लेकिन स्मृति के लिए, फ़ाइल नहीं है। एक जेवीएम शायद ज़िप-पैक बाइटकोड को सीधे निष्पादित कर सकता है, है ना? – DevSolar

संबंधित मुद्दे