2010-09-15 17 views
12

मैं नेट से परिचित हूं और कौन सी असेंबली हैं - लेकिन दुख की बात है कि मेरा जावा ज्ञान उतना मजबूत नहीं है।क्या जावा जेएआर फ़ाइल नेट नेट असेंबली के समान है?

मुझे जावा पता है और नेट अलग-अलग "दुनिया" हैं (संभवतः नाशपाती के साथ सेब की तुलना करना) लेकिन जार और नेट समेकन लगभग समानतावादी अवधारणाएं हैं?

संपादित करें:

  • दोनों संसाधनों और मेटाडाटा हो सकते हैं: प्रारंभिक प्रतिक्रिया

    तरह से मैं व्याख्या यह है कि वे समानताएं हैं हां में है पर अद्यतन आधार।

लेकिन वहाँ कुछ प्रमुख मतभेद:

  • एक नेट विधानसभा संकलित किया गया है एक जार नहीं है।
  • जावा एप्लिकेशन बनाने के लिए JAR फ़ाइलों की आवश्यकता नहीं है; .NET अनुप्रयोगों के लिए .NET असेंबली की आवश्यकता होती है।

[यह एक धार्मिक युद्ध के लिए समय नहीं है - मुझे पता है कि अगर/नेट विधानसभाओं की मेरी समझ से मुझे कितना जावा के आसपास मेरे सिर प्राप्त करने के लिए आवेदन कर सकते हैं करना चाहते हैं (और शायद यह जावा लोगों को दूसरी तरफ जाने में भी मदद करेगा)।]

+1

यह भी देखें: http://stackoverflow.com/questions/3629291/is-a-java-package-the-equivalent-of-a-net-assembly – ColinD

+0

यह एक उचित नज़दीकी अनुमान है। हालांकि मतभेद के बहुत सारे। (उदाहरण के लिए, असेंबली। गेट टाइप्स में जावा में कोई एनालॉग नहीं है) –

+0

@ कोलिन्डे - लिंक के लिए धन्यवाद। –

उत्तर

5

मैं नहीं कहूंगा, वे एक ही अवधारणा नहीं हैं, यह देखते हुए कि एक JAR एक असेंबली का उपयोग किया जा सकता है। यदि आप वास्तव में एक जेएआर फाइल के आसपास अपना सिर लेना चाहते हैं, तो बस इसे ज़िप फ़ाइल के रूप में सोचें। यह सब वास्तव में है।

अक्सर, उस संग्रह में संकलित क्लास फाइलें होती हैं। और अक्सर, उन वर्ग फ़ाइलों को कक्षा के पैकेज के अनुरूप एक पदानुक्रमित फैशन में व्यवस्थित किया जाता है।

लेकिन जेएआर फाइलों में अक्सर अन्य सामान होते हैं, जैसे संदेश बंडल, छवियां, और यहां तक ​​कि स्रोत फ़ाइलों। मैं आपको अपनी पसंद के अनजिप क्लाइंट के साथ एक खुले दरार करने के लिए प्रोत्साहित करता हूं और अंदर एक नज़र डालता हूं।

हालांकि जेएआर प्रारूप जावा लाइब्रेरी या एप्लिकेशन के लिए वितरित पैकेजिंग का सबसे आम तरीका है, इसलिए इस तरह वे बहुत समान हैं।

एक भाषा की दृष्टि से, जार फ़ाइलों लेकिन दोनों मानक पुस्तकालय कोई रास्ता नहीं एक जावा अनुप्रयोग या लायब्रेरी बनाने के लिए आवश्यक होती है, और न ही मैं कहूंगा कि वे जावा के लिए स्वाभाविक हैं, और JDK जार फ़ाइलों से निपटने के लिए समर्थन हासिल है।

+0

"अक्सर, उस संग्रह में संकलित क्लास फाइलें होती हैं।" - क्या इसका मतलब यह हमेशा नहीं है? –

+1

@ एड्रियन के: ठीक है, इसे नहीं करना है। उदाहरण के लिए, संकलित फाइलें, दस्तावेज़ फ़ाइलों और लाइब्रेरी के लिए स्रोत फ़ाइलों को अक्सर 3 अलग-अलग जार फ़ाइलों में वितरित किया जाएगा, हालांकि वास्तव में स्रोतों और दस्तावेज़ों के लिए सादे .zip की बजाय जार में होने की कोई विशिष्ट आवश्यकता नहीं है। – ColinD

8

तकनीकी मतभेदों का एक गुच्छा है, लेकिन वे ज्यादातर समय के बहुत कम परिणाम हैं, इसलिए मूल रूप से, हाँ, वे एक ही अवधारणा हैं।

+0

धन्यवाद; मैं देख सकता हूं कि आपने क्यों कहा है कि वे एक ही अवधारणा हैं। –

4

एक स्तर पर, वे अवधारणात्मक रूप से समान हैं (पैकेज में बाइट कोड का हिस्सा)। हालांकि, उनका कार्यान्वयन बहुत अलग है।

एक जेएआर फ़ाइल वास्तव में एक ज़िप फ़ाइल है जिसमें कुछ मेटाडेटा है, और सभी जावा। क्लास फाइलें हैं (हाँ आप इसे वास्तव में ज़िप फ़ाइल के रूप में खोल सकते हैं और अंदर देख सकते हैं), और जो कुछ भी इसमें पैक किया गया था (संसाधन , आदि)।

एक .NET असेंबली वास्तव में एक वैध Win32 पीई फ़ाइल है, और इसे कुछ हद तक माना जा सकता है। एक जाल ।exe फ़ाइल वास्तव में मूल कोड के रूप में निष्पादित करना शुरू करता है जो ढांचे को लोड करता है, जो तब बाइटकोड लोड करता है। एक JAR फ़ाइल को "निष्पादित करने" के लिए जावा रनटाइम को .bat फ़ाइल, या फ़ाइल एसोसिएशन के माध्यम से लॉन्च करने की आवश्यकता होती है, जो तब जेएआर फ़ाइल को अलग से लोड करता है।