JDK और JRE में क्या अंतर है?


925

JDK और JRE में क्या अंतर है?

उनकी भूमिकाएं क्या हैं और मुझे एक या दूसरे का उपयोग कब करना चाहिए?


12
इस सवाल का अच्छा और संक्षिप्त उत्तर यहां पाया जा सकता है: java.com/en/download/faq/techinfo.xml
अक्षय लोकुर


5
@kenorb टाइमस्टैम्प के आधार पर, जुड़ा हुआ प्रश्न इस एक की नकल लगता है।
अनगेहुआर

जवाबों:


1222

JRE है जावा रनटाइम एनवायरनमेंट । यह एक संकलित जावा प्रोग्राम को चलाने के लिए आवश्यक सभी चीजों का एक पैकेज है, जिसमें जावा वर्चुअल मशीन (जेवीएम), जावा क्लास लाइब्रेरी, javaकमांड और अन्य बुनियादी ढाँचे शामिल हैं। हालाँकि, इसका उपयोग नए प्रोग्राम बनाने के लिए नहीं किया जा सकता है।

JDK है जावा डेवलपमेंट किट , जावा के लिए पूर्ण विशेषताओं एसडीके। इसमें JRE के पास सब कुछ है, लेकिन संकलक ( javac) और उपकरण (जैसे javadocऔर jdb) भी हैं। यह प्रोग्राम बनाने और संकलित करने में सक्षम है।

आमतौर पर, यदि आप केवल कंप्यूटर पर जावा प्रोग्राम चलाने के बारे में परवाह करते हैं तो आप केवल JRE इंस्टॉल करेंगे। यह आप सभी की जरूरत है दूसरी ओर, यदि आप कुछ जावा प्रोग्रामिंग करने की योजना बना रहे हैं, तो आपको इसके बजाय जेडीके स्थापित करने की आवश्यकता है।

कभी-कभी, भले ही आप कंप्यूटर पर कोई जावा विकास करने की योजना नहीं बना रहे हों, फिर भी आपको जेडीके स्थापित करने की आवश्यकता है। उदाहरण के लिए, यदि आप JSP के साथ एक वेब एप्लिकेशन को तैनात कर रहे हैं, तो आप तकनीकी रूप से एप्लिकेशन सर्वर के अंदर जावा प्रोग्राम चला रहे हैं। फिर आपको जेडीके की आवश्यकता क्यों होगी? क्योंकि एप्लिकेशन सर्वर JSP को जावा सर्वलेट्स में बदल देगा और सर्वलेट्स को संकलित करने के लिए JDK का उपयोग करने की आवश्यकता है। मुझे यकीन है कि और भी उदाहरण हैं।


4
फिर जब हम बाहरी जार का उपयोग कर रहे हैं, हम उन जार को jre / lib / ext / .. में तैनात कर रहे हैं, तो क्यों ??
iijija

2
जावा के एक्सटेंशन के रूप में विशेष रूप से इच्छित कुछ जार हैं; उन लोगों को लिब / एक्स में रखा जा सकता है। लेकिन किसी भी पुराने एप्लिकेशन जार को रखना इस निर्देशिका के लिए अभिप्रेत नहीं है; यह विस्तार तंत्र का दुरुपयोग है और आगे चलकर समस्या पैदा कर सकता है।
कार्ल स्मोत्रिकज

मैंने JExcel API पर काम किया है और मैंने क्लासपैथ को सही ढंग से सेट किया है और अभी भी समस्या मौजूद है। इसलिए मैंने इसे tlib / ext फ़ोल्डर के अंदर परिनियोजित किया, जो उसके बाद ठीक woks ?? तो क्या कारण होगा ??
i2ijeya

3
मेरे पास पूरी तरह से सुनिश्चित होने के लिए जानकारी नहीं है, लेकिन मेरा अनुमान यह होगा कि या तो आपने वास्तव में क्लासपैथ को सही तरीके से सेट नहीं किया था, या आपने अपने कोड का उपयोग करके समाप्त होने वाले क्लासरूम के लिए अलग क्लास लोडर सेट किया था। क्लासपैथ एक्सटेंशन से जो काम करता है, वह लिबर / एक्सट्रा अलग होता है, लिब / एक्सट किसी भी जावा ऐप को प्रभावित करेगा जो उस विशेष JRE का उपयोग करता है - यह क्लासपैथ सेट करने की तुलना में अधिक मूर्खतापूर्ण है।
कार्ल स्मोत्रिकज

कुछ हफ़्ते पहले मैंने एक काफी बड़े पैमाने पर विफलता का अनुभव किया था जो कि JDK के बजाय JRE को संदर्भित करने के लिए मेरे JAVA_HOME और Path वातावरण चर को बदलकर ठीक किया गया था। किस मामले में JRE का उपयोग करके एक ऐप कार्य करेगा और JDK के साथ विफल होगा? मुझे लगता है कि मुझे एक नया प्रश्न खोलना चाहिए। एक दिलचस्प बात यह है कि संस्करण 1.6 से शुरू होकर JRE JDK इंस्टॉलेशन के साथ शामिल है लेकिन JDK फ़ोल्डर के समान स्तर पर अनपैक जबकि संस्करण 1.5 और JRE फ़ोल्डर से पहले JDK फ़ोल्डर में है। BTW: अच्छा जवाब!
जेसी आइवी

143

ऊपर (पाब्लो द्वारा) उत्तर बहुत सही है। यह सिर्फ अतिरिक्त जानकारी है।

JRE , जैसा कि नाम का तात्पर्य एक है पर्यावरण । यह मूल रूप से जावा-संबंधित फ़ाइलों के साथ निर्देशिकाओं का एक गुच्छा है, बुद्धि के लिए:

  • bin/जावा के निष्पादन योग्य कार्यक्रम शामिल हैं। सबसे महत्वपूर्ण है java(और विंडोज के लिए, javawसाथ ही), जो जेवीएम लॉन्च करता है। यहाँ कुछ अन्य उपयोगिताएँ भी हैं, जैसे कि keytoolऔर policytool
  • conf/ जावा विशेषज्ञों के साथ खेलने के लिए उपयोगकर्ता-संपादन योग्य कॉन्फ़िगरेशन फ़ाइलें रखता है।
  • lib/बड़ी संख्या में सहायक फाइलें हैं: कुछ .jarएस, कॉन्फ़िगरेशन फाइलें, संपत्ति फाइलें, फोंट, अनुवाद, समारोह, आदि - जावा के सभी "ट्रिमिंग्स"। सबसे महत्वपूर्ण है modules, एक फ़ाइल जिसमें .classजावा मानक पुस्तकालय की फाइलें हैं।
  • एक निश्चित स्तर पर, जावा मानक लाइब्रेरी को मूल कोड में कॉल करने की आवश्यकता होती है। इस प्रयोजन के लिए JRE कुछ होता है .dll(Windows) या .dylib(MacOS) या .so(लिनक्स) के तहत दायर bin/या lib/समर्थन, प्रणाली विशेष देशी बाइनरी कोड के साथ।

JDK भी निर्देशिका का एक सेट है। यह कुछ अतिरिक्त के साथ JRE का सुपरसेट है:

  • bin/विकास उपकरण के साथ बढ़े हुए है। उनमें से सबसे महत्वपूर्ण है javac; दूसरों में शामिल हैं jar, javadocऔर jshell
  • jmods/, जो मानक पुस्तकालय के लिए JMOD फाइलें रखता है, को जोड़ा गया है। ये फाइलें मानक पुस्तकालय के साथ उपयोग करने की अनुमति देती हैं jlink

1
क्या इसका मतलब है कि मैं अपना पथ चर JDK पर सेट कर सकता हूं और यह है?
ब्रैडी

3
@ ब्रैडी: हां, मुझे ऐसा लगता है। यह मेरे लिए ठीक काम करता है, कम से कम। एक डेवलपर के रूप में, मैं अनिवार्य रूप से JRE को अनदेखा करता हूं। यदि विशेष मामले हैं जहां आप विशेष रूप से जेआरई चाहते हैं, तो मुझे उनके बारे में पता नहीं है।
कार्ल स्मोत्रिकज़

JRE केवल संकलित जावा कोड के साथ काम कर सकता है, है ना?
सेक्सीबीस्ट

2
@Cupidvogel, क्योंकि JRE में कोई कंपाइलर नहीं है, इसलिए मुझे लगता है कि आप ऐसा कह सकते हैं। JRE जावा कोड चलाने (संकलित) के लिए है, जबकि JDK आपको इसे विकसित करने के लिए उपकरण भी देता है।
बजे कार्ल स्मोत्रिकज़

1
इसलिए मूल रूप से JDK में कोड संकलित करने के लिए एक संकलक (जैसे Javac) शामिल है, संकलित कोड को निष्पादित करने के लिए एक JRE (रन-टाइम सिस्टम), और अन्य उपकरण का मतलब सिर्फ प्रोग्रामर के जीवन को आसान, सही तरीके से विकसित करना है? तो AFAIU, केवल Javac और JRE ही यहाँ वास्तव में आवश्यक उपकरण हैं। तब क्यों, कई बार, सॉफ्टवेयर इंस्टॉलेशन, अपग्रेड एक JDK पर उपस्थित होने के लिए जोर देते हैं?
सेक्सीबीस्ट

130

यहां छवि विवरण दर्ज करें

JDK JRE का एक सुपरसेट है, और इसमें JRE में मौजूद हर चीज सम्‍मिलित है, साथ ही टूल और डीबगर्स जैसे टूल एप्लेट्स और एप्लिकेशन विकसित करने के लिए आवश्यक हैं। JRE पुस्तकालयों, जावा वर्चुअल मशीन (JVM), और जावा प्रोग्रामिंग भाषा में लिखे एप्लेट और एप्लिकेशन को चलाने के लिए अन्य घटक प्रदान करता है।


3
शांत आरेख! मैं थोड़ा भ्रमित हूँ कि जावा कमांड JRE के बाहर चित्रित है जो सही नहीं है। मुझे समझ नहीं आता कि JDK के लिए अलग-अलग फाइलें क्यों होती हैं जब JDK स्थापित होता है जो कम से कम आकार में समान होता है। किस मामले में JRE का उपयोग करके एक ऐप कार्य करेगा और JDK के साथ विफल होगा? इसे हाल ही में अनुभव किया गया है और शायद इसे वापस ट्रैक करना चाहिए और इसकी तह तक जाना चाहिए ...
जेसी आइवी

104

आम आदमी के शब्दों में: JDK दादा JRE पिता है और JVM उनका बेटा है। [अर्थात JDK> JRE> JVM]

JDK = JRE + विकास / डिबगिंग टूल

JRE = JVM + Java संकुल कक्षाएं (जैसे उपयोग, गणित, लैंग, awt, स्विंग आदि) + रनटाइम लाइब्रेरी।

JVM = क्लास लोडर सिस्टम + रनटाइम डेटा क्षेत्र + निष्पादन इंजन।

दूसरे शब्दों में, यदि आप एक जावा प्रोग्रामर हैं, तो आपको अपने सिस्टम में JDK की आवश्यकता होगी और इस पैकेज में JRE और JVM भी शामिल होंगे, लेकिन यदि आप सामान्य उपयोगकर्ता हैं जो ऑनलाइन गेम खेलना पसंद करते हैं, तो आपको केवल JRE की आवश्यकता होगी और यह पैकेज नहीं होगा इसमें JDK।

JVM:

जावा वर्चुअल मशीन (JVM) आभासी मशीन है कि जावा bytecodes चलाया जाता है। JVM जावा स्रोत कोड को नहीं समझता है, इसीलिए आप अपनी .java फ़ाइलों को * .class फ़ाइलों को प्राप्त करने के लिए संकलित करते हैं, जिनमें JVM द्वारा समझने योग्य बाईटेकोड होते हैं। यह वह इकाई भी है जो जावा को "पोर्टेबल भाषा" (एक बार लिखने, कहीं भी चलाने) की अनुमति देता है। वास्तव में विभिन्न प्रणालियों (विंडोज, लिनक्स, मैकओएस, विकिपीडिया सूची देखें ..) के लिए जेवीएम के विशिष्ट कार्यान्वयन हैं, उद्देश्य यह है कि एक ही बाईटकोड के साथ वे सभी एक ही परिणाम देते हैं।

JDK और JRE

जेडीके और जेआरई के बीच अंतर को समझाने के लिए, ओरेकल प्रलेखन को पढ़ना और आरेख से परामर्श करना सबसे अच्छा है:

जावा रनटाइम पर्यावरण (JRE)

जावा रनटाइम एनवायरनमेंट (JRE) एप्लेट और अनुप्रयोगों जावा प्रोग्रामिंग भाषा में लिखा चलाने के लिए पुस्तकालयों, जावा वर्चुअल मशीन, और अन्य घटकों प्रदान करता है। इसके अलावा, दो प्रमुख परिनियोजन प्रौद्योगिकियाँ JRE का हिस्सा हैं: जावा प्लग-इन, जो एप्लेट्स को लोकप्रिय ब्राउज़रों में चलाने में सक्षम बनाता है; और जावा वेब स्टार्ट, जो एक नेटवर्क पर स्टैंडअलोन अनुप्रयोगों को तैनात करता है। यह उद्यम सॉफ्टवेयर विकास और तैनाती के लिए जावा 2 प्लेटफॉर्म, एंटरप्राइज एडिशन (जे 2 ईई) में प्रौद्योगिकियों की नींव भी है। JRE में एप्लेट और एप्लिकेशन विकसित करने के लिए कंपाइलर या डीबगर्स जैसे टूल और यूटिलिटीज शामिल नहीं हैं।

जावा डेवलपमेंट किट (JDK)

JDK JRE का एक सुपरसेट है, और इसमें वह सब कुछ है जो JRE में है, प्लस टूल और डिबगर जैसे टूल जो एप्लेट और एप्लिकेशन विकसित करने के लिए आवश्यक हैं।

ध्यान दें कि Oracle JDK प्रदान करने वाला एकमात्र नहीं है।

JIT संकलन प्रक्रिया (सौजन्य: Oracle प्रलेखन)

JDK> JRE> JVM


जब आप "संकलित" या "संकलक" कहते हैं, तो यह इस संदर्भ में अत्यंत भ्रामक है कि आप किसका उल्लेख कर रहे हैं: जावा स्रोत कोड को जावा बाइट कोड में बदलना, या जावा बाइट कोड को मशीन कोड में बदलना।
ऑरेंजशेरबेट

अच्छा! मुझे दादा, पिता और पुत्र सादृश्य पसंद हैं। : डी
इमेजर

हाँ धन्यवाद, यह समझना बहुत आसान है कि इन शर्तों से कौन परिचित नहीं है।
जैमिन पटेल

25

आधिकारिक जावा वेबसाइट से ...

JRE (जावा रनटाइम वातावरण):

  • यह जावा वर्चुअल मशीन * का कार्यान्वयन है जो वास्तव में जावा कार्यक्रमों को निष्पादित करता है।
  • जावा रनटाइम पर्यावरण जावा प्रोग्राम चलाने के लिए प्लग-इन आवश्यक है।
  • JRE JDK से छोटा है इसलिए इसे डिस्क स्थान कम चाहिए।
  • JRE को https://www.java.com से स्वतंत्र रूप से डाउनलोड / समर्थित किया जा सकता है
  • इसमें JVM, कोर लाइब्रेरी और जावा में लिखे एप्लिकेशन और एप्लेट को चलाने के लिए अन्य अतिरिक्त घटक शामिल हैं।

JDK (जावा डेवलपमेंट किट)

  • यह सॉफ्टवेयर का एक बंडल है जिसका उपयोग आप जावा आधारित अनुप्रयोगों को विकसित करने के लिए कर सकते हैं।
  • जावा एप्लिकेशन को विकसित करने के लिए जावा डेवलपमेंट किट की आवश्यकता है।
  • JDK को अधिक डिस्क स्थान की आवश्यकता है क्योंकि इसमें JRE के साथ-साथ विभिन्न विकास उपकरण शामिल हैं।
  • JDK को https://www.oracle.com/technetwork/java/javase/downloads/ से स्वतंत्र रूप से डाउनलोड / समर्थित किया जा सकता है
  • इसमें JRE, एपीआई कक्षाएं, जावा कंपाइलर, वेबस्टार्ट और जावा एप्लेट और एप्लिकेशन लिखने के लिए आवश्यक अतिरिक्त फाइलें शामिल हैं।

23

डिबगिंग परिप्रेक्ष्य से एक अंतर:

स्ट्रिंग और ArrayList जैसे जावा सिस्टम कक्षाओं में डीबग करने के लिए, आपको JRE के एक विशेष संस्करण की आवश्यकता होती है जिसे "डिबग सूचना" के साथ संकलित किया जाता है। JDK के अंदर शामिल JRE यह जानकारी प्रदान करता है, लेकिन नियमित JRE नहीं करता है। बेहतर प्रदर्शन सुनिश्चित करने के लिए नियमित JRE में इस जानकारी को शामिल नहीं किया गया है।

डिबगिंग जानकारी क्या है? इस ब्लॉग पोस्ट से ली गई एक त्वरित व्याख्या इस प्रकार है :

आधुनिक संकलक आपके उच्च-स्तरीय कोड को परिवर्तित करने के लिए एक बहुत अच्छा काम करते हैं, इसकी अच्छी तरह से इंडेंटेड और नेस्टेड कंट्रोल स्ट्रक्चर्स और मनमाने ढंग से टाइप किए गए चरों को मशीन कोड (या जावा के मामले में बाईटेकोड) नामक बिट्स के एक बड़े ढेर में टाइप किया जाता है, जिसका एकमात्र उद्देश्य है लक्ष्य सीपीयू (आपके जेवीएम का आभासी सीपीयू) पर जितनी जल्दी हो सके चलाने के लिए। जावा कोड कई मशीन कोड निर्देशों में परिवर्तित हो जाता है। चर को पूरे स्थान पर भेज दिया जाता है - ढेर में, रजिस्टरों में, या पूरी तरह से दूर अनुकूलित। परिणामी कोड में संरचनाएं और वस्तुएं भी मौजूद नहीं हैं - वे केवल एक अमूर्त है जो हार्ड-कोडेड ऑफसेट्स में छोटे किशोरों में अनुवादित हो जाता है।

तो एक डिबगर को कैसे पता चलता है कि किसी समारोह में प्रवेश के समय उसे तोड़ने के लिए कहां रोकना है? जब आप इसे किसी वैरिएबल के मूल्य के लिए पूछेंगे तो यह कैसे पता चलेगा कि आपको क्या दिखाना है? उत्तर है - डिबगिंग जानकारी।

डिबगिंग जानकारी कंपाइलर द्वारा मशीन कोड के साथ मिलकर उत्पन्न की जाती है। यह निष्पादन योग्य कार्यक्रम और मूल स्रोत कोड के बीच संबंधों का प्रतिनिधित्व है। यह जानकारी पूर्व-निर्धारित प्रारूप में एन्कोड की गई है और मशीन कोड के साथ संग्रहीत है। विभिन्न प्लेटफार्मों और निष्पादन योग्य फ़ाइलों के लिए कई ऐसे स्वरूपों का आविष्कार वर्षों में किया गया था।


9

JVM, JRE, JDK - ये सभी जावा भाषा की रीढ़ हैं। प्रत्येक घटक अलग से काम करते हैं। जेडीके और जेआरई शारीरिक रूप से मौजूद हैं लेकिन जेवीएम एक अमूर्त मशीन है जिसका अर्थ है कि यह भौतिक रूप से मौजूद नहीं है।

JVM JDK और JRE का सबसिस्टम है जिसका उपयोग मध्यवर्ती कोड "बायटेकोड" के रूप में जाना जाता है। यह पहले जावा कंपाइलर (जेवैक) द्वारा उत्पन्न "क्लास फाइल" (.c एक्सटेंशन) को उनके उपयोग के अनुसार जेवीएम सबसिस्टम क्लास लोडर और वर्गीकृत मेमोरी लोकेशन (क्लास एरिया, स्टैक, हीप और पीसी रजिस्टरों) पर लोड करता है। तब यह सुनिश्चित करने के लिए सभी बाइटकोड की जांच करता है कि यह जावा में वापस आ गया है और नेटवर्क द्वारा सभी मेमोरी एक्सेसिबिलिटी एक्सेस है। दुभाषिया का काम उसके बाद शुरू होता है जहां वह लाइन द्वारा पूरे प्रोग्राम लाइन की जांच करता है। परिणाम अंततः JRE (जावा रनटाइम एनवायरनमेंट) के माध्यम से कंसोल / ब्राउज़र / एप्लिकेशन में दिखाए जाते हैं जो रनटाइम की सुविधा देते हैं।

JRE JDK का एक सबसिस्टम भी है जो JVM, कक्षाएं, निष्पादन योग्य फाइलें जैसे .jar फ़ाइल, आदि जैसी रनटाइम सुविधाएं प्रदान करता है।

JDK का मतलब जावा डेवलपमेंट किट है। इसमें जावा प्रोग्रामिंग में उपयोग किए जाने वाले सभी आवश्यक घटक शामिल हैं जैसे कि क्लास, मेथड, स्विंग, AWT, पैकेज, जावा (इंटरप्रेटर), जेवैक (कंपाइलर), एप्लेटव्यूअर (एप्लेट एप्लिकेशन व्यूअर), आदि। निष्कर्ष के लिए, इसमें हर वो डिवेलपमेंट की आवश्यकता होती है। अनुप्रयोग, चाहे स्टैंडअलोन हो या वेब-आधारित।


8

JRE

JRE जावा रनटाइम एनवायरनमेंट के लिए एक संक्षिप्त रूप है। इसका उपयोग रनटाइम वातावरण प्रदान करने के लिए किया जाता है। यह JVM का कार्यान्वयन है। यह शारीरिक रूप से मौजूद है। इसमें लाइब्रेरीज़ / अन्य फ़ाइलों का सेट शामिल है, जो JVM रनटाइम पर उपयोग करता है।

JDK

JDK जावा विकास किट के लिए एक संक्षिप्त नाम है। यह शारीरिक रूप से मौजूद है। इसमें JRE + विकास उपकरण शामिल हैं।

लिंक: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

आमतौर पर, जब आप केवल अपने ब्राउज़र या कंप्यूटर पर जावा प्रोग्राम चलाने की परवाह करते हैं तो आप केवल JRE इंस्टॉल करेंगे। यह आप सभी की जरूरत है दूसरी ओर, यदि आप कुछ जावा प्रोग्रामिंग करने की योजना बना रहे हैं, तो आपको जेडीके की भी आवश्यकता होगी।


8

JVM, JRE और JDK प्लेटफ़ॉर्म डिपेंडेंट हैं क्योंकि प्रत्येक OS का कॉन्फ़िगरेशन अलग-अलग होता है। लेकिन, जावा प्लेटफॉर्म स्वतंत्र है।

जावा वर्चुअल मशीन (JVM) एक रन-टाइम सिस्टम है जो जावा बायटेकोड को निष्पादित करता है।

JRE जावा अनुप्रयोगों को चलाने के लिए आवश्यक पर्यावरण (मानक पुस्तकालय और JVM) है।

JDK में JRE प्लस कमांड-लाइन डेवलपमेंट टूल जैसे कंपाइलर और डीबगर्स शामिल हैं जो एप्लेट्स और एप्लिकेशन विकसित करने के लिए आवश्यक या उपयोगी हैं।


7

यहाँ पर Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/ से सीधे साधा जवाब दिया गया है

जावा एसई रनटाइम पर्यावरण (JRE)

JRE पुस्तकालयों, जावा वर्चुअल मशीन, और अन्य घटकों को जावा प्रोग्रामिंग भाषा में लिखे गए एप्लेट और एप्लिकेशन चलाने के लिए आवश्यक प्रदान करता है। यह रनटाइम वातावरण उन्हें मुक्त करने के लिए अनुप्रयोगों के साथ पुनर्वितरित किया जा सकता है।

जावा एसई विकास किट (JDK)

JDK में JRE प्लस कमांड-लाइन डेवलपमेंट टूल जैसे कंपाइलर और डीबगर्स शामिल हैं जो एप्लेट्स और एप्लिकेशन विकसित करने के लिए आवश्यक या उपयोगी हैं।


7

यदि आप जावा प्रोग्राम चलाना चाहते हैं, लेकिन उन्हें विकसित नहीं करते हैं, तो जावा रन-टाइम एनवायरनमेंट, या जेआरई डाउनलोड करें। यदि आप उन्हें विकसित करना चाहते हैं, तो जावा डेवलपमेंट किट, या जेडीके डाउनलोड करें

JDK

चलो कहा जाता है कि JDK एक किट है, जिसमें शामिल हैं कि वे कौन सी चीजें हैं जो जावा एप्लिकेशन को विकसित और चलाने के लिए आवश्यक हैं।

JDK को अनुप्रयोगों, घटक एस और एप्लेट के निर्माण के लिए विकास के वातावरण के रूप में दिया जाता है।

JRE

इसमें वह सब कुछ है जो आपको संकलित रूप में जावा अनुप्रयोगों को चलाने की आवश्यकता है। आप किसी भी पुस्तकालयों और अन्य सामान की जरूरत नहीं है। आपकी जरूरत की सभी चीजें संकलित हैं।

JRE का उपयोग विकास के लिए नहीं किया जाता है, केवल अनुप्रयोगों को चलाने के लिए उपयोग किया जाता है।


6

जेवीएम (जावा वर्चुअल मशीन) एक अमूर्त मशीन है। यह एक विनिर्देश है जो रनटाइम वातावरण प्रदान करता है जिसमें जावा बाइटकोड को निष्पादित किया जा सकता है।

JRE जावा रनटाइम एनवायरनमेंट के लिए एक संक्षिप्त रूप है। इसका उपयोग रनटाइम वातावरण प्रदान करने के लिए किया जाता है। यह JVM का कार्यान्वयन है। यह शारीरिक रूप से मौजूद है। इसमें लाइब्रेरीज़ + अन्य फ़ाइलों का सेट शामिल है, जो JVM रनटाइम पर उपयोग करता है।

JDK जावा विकास किट के लिए एक संक्षिप्त नाम है। यह शारीरिक रूप से मौजूद है। इसमें JRE + विकास उपकरण शामिल हैं


6

यदि आप एक जावा प्रोग्रामर हैं तो आपको अपने सिस्टम में JDK की आवश्यकता होगी और इस पैकेज में JRE और JVM भी शामिल होंगे लेकिन यदि आप सामान्य उपयोगकर्ता हैं जो ऑनलाइन गेम खेलना पसंद करते हैं तो आपको केवल JRE की आवश्यकता होगी और इस पैकेज में JDK नहीं होगा ।

JVM

जेवीएम (जावा वर्चुअल मशीन) एक अमूर्त मशीन है। यह एक विनिर्देश है जो रनटाइम वातावरण प्रदान करता है जिसमें जावा बाइटकोड को निष्पादित किया जा सकता है।

जेवीएम कई हार्डवेयर और सॉफ्टवेयर प्लेटफार्मों के लिए उपलब्ध हैं। JVM, JRE और JDK प्लेटफ़ॉर्म डिपेंडेंट हैं क्योंकि प्रत्येक OS का कॉन्फ़िगरेशन अलग-अलग होता है। लेकिन, जावा प्लेटफॉर्म स्वतंत्र है।

JRE

इसमें वह सब कुछ है जो आपको संकलित रूप में जावा अनुप्रयोगों को चलाने की आवश्यकता है। आप किसी भी पुस्तकालयों और अन्य सामान की जरूरत नहीं है। आपकी जरूरत की सभी चीजें संकलित हैं।

JRE का उपयोग विकास के लिए नहीं किया जाता है, केवल अनुप्रयोगों को चलाने के लिए उपयोग किया जाता है।

जावा एसई विकास किट (JDK)

JDK में JRE प्लस कमांड-लाइन डेवलपमेंट टूल जैसे कंपाइलर और डीबगर्स शामिल हैं जो एप्लेट्स और एप्लिकेशन विकसित करने के लिए आवश्यक या उपयोगी हैं।

(स्रोत: GeeksForGeeks क्यू एंड ए , जावा प्लेटफॉर्म अवलोकन )


कई साइटों (JVM और JDK वर्गों के लिए) से साहित्यिक चोरी थी। अगली बार, कृपया अपने स्रोतों का हवाला दें - यह आपका मूल काम नहीं है।
जोनाथन लाम

6

इन शर्तों (JVM, JDK, JRE) की स्पष्ट समझ उनके उपयोग और अंतर को समझने के लिए आवश्यक है।

जेवीएम जावा वर्चुअल मशीन (जेवीएम) एक रन-टाइम सिस्टम है जो जावा बाइटकोड को निष्पादित करता है। JVM एक आभासी कंप्यूटर की तरह है जो संकलित निर्देशों के एक सेट को निष्पादित कर सकता है और मेमोरी स्थानों में हेरफेर कर सकता है। जब एक जावा कंपाइलर स्रोत कोड संकलित करता है, तो यह एक .class फ़ाइल में bytecode नामक निर्देशों का एक अत्यधिक अनुकूलित सेट उत्पन्न करता है। JVM इन बाइटकोड निर्देशों की व्याख्या करता है और उन्हें निष्पादन के लिए मशीन-विशिष्ट कोड में परिवर्तित करता है।

JDK जावा डेवलपमेंट किट (JDK) एक सॉफ्टवेयर डेवलपमेंट वातावरण है जिसका उपयोग आप जावा अनुप्रयोगों को विकसित और निष्पादित करने के लिए कर सकते हैं। इसमें JRE और प्रोग्रामिंग उपकरण का एक सेट शामिल है, जैसे कि जावा कंपाइलर, दुभाषिया, एप्लेटव्यूअर, और दस्तावेज़ दर्शक। जेडीके जावा एसई, जावा ईई या जावा एमई प्लेटफार्मों के माध्यम से कार्यान्वित किया जाता है।

JRE जावा रनटाइम एनवायरनमेंट (JRE) JDK का एक हिस्सा है जिसमें JVM, कोर क्लासेस और कई लाइब्रेरी शामिल हैं जो एप्लिकेशन डेवलपमेंट को सपोर्ट करती हैं। हालांकि JRE JDK के भाग के रूप में उपलब्ध है, आप इसे अलग से डाउनलोड और उपयोग भी कर सकते हैं।

पूरी समझ के लिए आप मेरा ब्लॉग देख सकते हैं: Jdk Jre Jvm और अंतर


5

jdk कोड को संकलित करने और java कोड को बाइट कोड में परिवर्तित करने के लिए आवश्यक है जबकि jre बाइट कोड को निष्पादित करने के लिए आवश्यक है।


5
@ नो: न केवल यह बहुत कम जानकारी है, इसमें कुछ भी नहीं है जिसमें अन्य उत्तर नहीं हैं।
एमोस कारपेंटर

5

JDK में JRE प्लस कमांड-लाइन डेवलपमेंट टूल जैसे कंपाइलर और डीबगर्स शामिल हैं जो ऐपलेट और एप्लिकेशन विकसित करने के लिए आवश्यक या उपयोगी हैं।

JRE मूल रूप से जावा वर्चुअल मशीन है जहाँ आपके जावा प्रोग्राम चलते हैं। इसमें एप्लेट निष्पादन के लिए ब्राउज़र प्लगइन्स भी शामिल हैं।

JDK एक अमूर्त मशीन है। यह एक विनिर्देश है जो रनटाइम वातावरण प्रदान करता है जिसमें जावा बाइटकोड को निष्पादित किया जा सकता है।

इसलिए, @ जैमिन पटेल के अनुसार मूल रूप से JVM <JRE <JDK ने कहा।


5

बस:

JVM वर्चुअल मशीन है जिस पर Java कोड निष्पादित होता है

JRE जावा अनुप्रयोगों को चलाने के लिए आवश्यक पर्यावरण (मानक पुस्तकालय और JVM) है

JDK डेवलपर टूल्स और डॉक्यूमेंटेशन वाला JRE है


4

JDK और JRE के बीच अंतर यह है कि JDK जावा के लिए सॉफ्टवेयर डेवलपमेंट किट है जबकि JRE वह जगह है जहां आप अपने प्रोग्राम चलाते हैं।


4

मान लीजिए, यदि आप एक डेवलपर हैं तो आपकी भूमिका कार्यक्रम को विकसित करने के साथ-साथ कार्यक्रम को निष्पादित करने की भी है। इसलिए आपके पास विकास और निष्पादन के लिए वातावरण होना चाहिए, जो कि JDK द्वारा प्रदान किया गया है।

मान लीजिए, यदि आप एक ग्राहक हैं, तो आपको विकसित होने के बारे में चिंता करने की ज़रूरत नहीं है। बस आपको जरूरत है, प्रोग्राम चलाने और परिणाम प्राप्त करने का वातावरण, जो कि JRE द्वारा प्रदान किया जाता है।

JRE एप्लिकेशन को कार्यान्वित करता है लेकिन JVM निर्देश रेखा को रेखा से पढ़ता है इसलिए यह दुभाषिया है।

JDK = JRE + विकास उपकरण

JRE = JVM + लाइब्रेरी क्लासेस


2

JRE

JRE जावा रनटाइम एनवायरनमेंट के लिए एक परिचित है। इसका उपयोग रनटाइम वातावरण प्रदान करने के लिए किया जाता है। यह JVM का कार्यान्वयन है। यह शारीरिक रूप से मौजूद है। इसमें लायब्रेरी + अन्य फ़ाइलों का सेट है जो JVM रनटाइम में उपयोग करता है।

JVM का कार्यान्वयन Sun Micro Systems के अलावा अन्य कंपनियों द्वारा भी सक्रिय रूप से जारी किया जाता है।

यहां छवि विवरण दर्ज करें

JDK

JDK जावा विकास किट के लिए एक संक्षिप्त नाम है। यह शारीरिक रूप से मौजूद है। इसमें JRE + विकास उपकरण शामिल हैं।

यहां छवि विवरण दर्ज करें


पाठ और ग्राफिक्स दोनों में जानकारी अन्य, पहले के उत्तर में प्रदान की गई है।
कार्ल रिक्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.