जवाबों:
जावा वर्चुअल मशीन (JVM) आभासी मशीन है कि जावा bytecodes चलाता है। JVM जावा स्रोत कोड को नहीं समझता है; यही कारण है कि आपको उन *.java
फ़ाइलों को प्राप्त करने के लिए अपनी फ़ाइलों को संकलित करने की आवश्यकता *.class
होती है जिनमें JVM द्वारा समझे गए बायटेकॉड्स होते हैं। यह वह इकाई भी है जो जावा को "पोर्टेबल भाषा" ( एक बार लिखने, कहीं भी चलाने ) की अनुमति देता है। दरअसल, विभिन्न प्रणालियों (विंडोज, लिनक्स, मैकओएस, विकिपीडिया सूची देखें ) के लिए जेवीएम के विशिष्ट कार्यान्वयन हैं , उद्देश्य यह है कि एक ही बायोटेक के साथ वे सभी एक ही परिणाम देते हैं।
JDK और JRE के बीच अंतर को समझाने के लिए, ओरेकल प्रलेखन को पढ़ने और आरेख से परामर्श करने के लिए सबसे अच्छा है :
जावा रनटाइम पर्यावरण (JRE)
जावा रनटाइम एनवायरनमेंट (JRE) पुस्तकालयों, जावा वर्चुअल मशीन और अन्य घटकों को जावा प्रोग्रामिंग भाषा में लिखे एप्लेट और एप्लिकेशन चलाने के लिए प्रदान करता है। इसके अलावा, दो प्रमुख परिनियोजन प्रौद्योगिकियां JRE का हिस्सा हैं: जावा प्लग-इन, जो एप्लेट्स को लोकप्रिय ब्राउज़रों में चलाने में सक्षम बनाता है; और जावा वेब स्टार्ट, जो एक नेटवर्क पर स्टैंडअलोन अनुप्रयोगों को तैनात करता है। यह उद्यम सॉफ्टवेयर विकास और तैनाती के लिए जावा 2 प्लेटफॉर्म, एंटरप्राइज एडिशन (J2EE) में प्रौद्योगिकियों की नींव भी है। JRE में एप्लेट और एप्लिकेशन विकसित करने के लिए कंपाइलर या डीबगर्स जैसे टूल और यूटिलिटीज़ शामिल नहीं हैं।
जावा डेवलपमेंट किट (JDK)
JDK JRE का एक सुपरसेट है, और इसमें वह सब कुछ है जो JRE में है, प्लस टूल और डिबगर जैसे टूल जो एप्लेट और एप्लिकेशन विकसित करने के लिए आवश्यक हैं।
ध्यान दें कि Oracle JDKs प्रदान करने वाला एकमात्र नहीं है।
OpenJDK , JDK का एक ओपन सोर्स कार्यान्वयन है और Oracle JDK के लिए आधार है। Oracle JDK और OpenJDK में लगभग कोई अंतर नहीं है।
इस ब्लॉग में अंतर बताया गया है :
प्रश्न: OpenJDK रिपॉजिटरी में पाए जाने वाले सोर्स कोड और ओरेकल जेडडीके बनाने के लिए आपके द्वारा उपयोग किए जाने वाले कोड में क्या अंतर है?
A: यह बहुत करीब है - ओरेकल JDK रिलीज़ के लिए हमारी बिल्ड प्रक्रिया OpenJDK 7 पर बनाता है, सिर्फ एक दो टुकड़े जोड़कर, परिनियोजन कोड की तरह, जिसमें ओरेकल का जावा प्लगिन और जावा वेबस्टार्ट का कार्यान्वयन शामिल है, साथ ही कुछ बंद स्रोत तीसरा भी है। ग्राफिक्स रेस्टराइज़र की तरह पार्टी घटक, कुछ खुले स्रोत तीसरे पक्ष के घटक, जैसे राइनो, और कुछ बिट और टुकड़े यहाँ और वहाँ, जैसे अतिरिक्त दस्तावेज़ या तीसरे पक्ष के फोंट। आगे बढ़ते हुए, हमारा इरादा Oracle JDK के सभी टुकड़ों को खोलने का है, सिवाय इसके कि हम व्यावसायिक सुविधाओं जैसे JRockit Mission Control (अभी तक Oracle JDK में उपलब्ध नहीं हैं) पर विचार करें, और नज़दीकी थर्ड पार्टी घटकों की जगह ओपन सोर्स विकल्प के साथ निकट समता प्राप्त करने के लिए करें। कोड आधारों के बीच।
JDK 11 के लिए अपडेट - डोनाल्ड स्मिथ का एक लेख Oracle JDK और Oracle के OpenJDK के बीच अंतर को अलग करने की कोशिश करता है: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- और बादमें
JVM जावा वर्चुअल मशीन है - यह वास्तव में जावा बाइटकोड को चलाता है।
जेआरई जावा रनटाइम एनवायरनमेंट है - इसमें अन्य चीजों के अलावा एक जेवीएम भी शामिल है और आपको जावा प्रोग्राम चलाने की आवश्यकता है।
JDK जावा डेवलपमेंट किट है - यह JRE है, लेकिन javac (जिसे आपको जावा सोर्स कोड को संकलित करने की आवश्यकता है) और अन्य प्रोग्रामिंग टूल जोड़े गए हैं।
OpenJDK एक विशिष्ट JDK कार्यान्वयन है।
other things
एक जेवीएम में निहित का उल्लेख नहीं किया । वे क्या हैं ? क्या यह लेख पूरी तरह से उस प्रश्न का उत्तर देता है - javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
JDK (जावा डेवलपमेंट किट)
जावा डेवलपर किट में जावा प्रोग्राम को विकसित करने के लिए आवश्यक उपकरण और प्रोग्राम चलाने के लिए JRE होता है। उपकरण में कंपाइलर (javac.exe), जावा एप्लिकेशन लॉन्चर (java.exe), एप्लेटव्यूअर, आदि शामिल हैं ...
कंपाइलर जावा कोड को बाइट कोड में परिवर्तित करता है। जावा एप्लिकेशन लॉन्चर एक जेआरई खोलता है, कक्षा को लोड करता है, और इसकी मुख्य विधि को लागू करता है।
आपको जेडीके की आवश्यकता है, यदि आप अपने स्वयं के कार्यक्रमों को लिखना चाहते हैं, और उन्हें संकलित करना चाहते हैं। जावा प्रोग्राम चलाने के लिए, JRE पर्याप्त है।
JRE को जावा फ़ाइलों के निष्पादन के लिए लक्षित किया जाता है
यानी JRE = JVM + Java संकुल कक्षाएं (जैसे उपयोग, गणित, लैंग, awt, स्विंग आदि) + रनटाइम लाइब्रेरी।
JDK मुख्य रूप से जावा विकास के लिए लक्षित है। यानी आप एक जावा फ़ाइल (जावा पैकेज की मदद से) बना सकते हैं, एक जावा फ़ाइल संकलित कर सकते हैं और एक जावा फ़ाइल चला सकते हैं।
JRE (जावा रनटाइम पर्यावरण)
जावा रनटाइम एनवायरनमेंट में जेवीएम, क्लास लाइब्रेरी और अन्य सहायक फाइलें शामिल हैं। इसमें कंपाइलर, डीबगर, आदि जैसे कोई भी विकास उपकरण शामिल नहीं हैं। वास्तव में जेवीएम प्रोग्राम चलाता है, और यह जेआरई में प्रदान की जाने वाली क्लास लाइब्रेरी और अन्य सहायक फ़ाइलों का उपयोग करता है। यदि आप कोई जावा प्रोग्राम चलाना चाहते हैं, तो आपको सिस्टम में JRE इंस्टॉल करना होगा
जावा वर्चुअल मशीन कोड को निष्पादित करने का एक प्लेटफ़ॉर्म-स्वतंत्र तरीका प्रदान करता है; इसका मतलब है कि किसी भी मशीन में एक बार संकलन करें और इसे किसी भी जगह (किसी भी मशीन) पर चलाएं।
JVM (जावा वर्चुअल मशीन)
जैसा कि हम सभी जानते हैं कि जब हम एक जावा फ़ाइल संकलित करते हैं, तो आउटपुट एक 'exe' नहीं होता है, लेकिन यह एक '.class' फ़ाइल होती है। '.class' फ़ाइल में जावा बाइट कोड होते हैं जो JVM द्वारा समझा जा सकता है। जावा वर्चुअल मशीन अंतर्निहित ऑपरेटिंग सिस्टम और हार्डवेयर संयोजन के आधार पर मशीन कोड में बाइट कोड की व्याख्या करता है। यह कचरा संग्रह, सरणी सीमा जाँच आदि जैसी सभी चीजों के लिए जिम्मेदार है। JVM प्लेटफ़ॉर्म पर निर्भर है।
JVM को "वर्चुअल" कहा जाता है क्योंकि यह एक मशीन इंटरफ़ेस प्रदान करता है जो अंतर्निहित ऑपरेटिंग सिस्टम और मशीन हार्डवेयर आर्किटेक्चर पर निर्भर नहीं करता है। हार्डवेयर और ऑपरेटिंग सिस्टम से यह स्वतंत्रता जावा प्रोग्रामों के राइट-रन रन-ए-वैल्यू की आधारशिला है।
वहाँ अलग JVM कार्यान्वयन कर रहे हैं। ये प्रदर्शन, विश्वसनीयता, गति, आदि जैसी चीजों में भिन्न हो सकते हैं। ये कार्यान्वयन उन क्षेत्रों में भिन्न होंगे जहां जावा विनिर्देश सुविधाओं को लागू करने का उल्लेख नहीं करता है, जैसे कचरा संग्रहण प्रक्रिया कैसे काम करती है, जेवीएम निर्भर है, जावा कल्पना नहीं है इसे करने के लिए किसी भी विशिष्ट तरीके को परिभाषित करें।
एक जावा आभासी मशीन (JVM) एक आभासी मशीन है कि जावा बाईटकोड पर अमल कर सकते हैं। यह जावा सॉफ्टवेयर प्लेटफॉर्म का कोड निष्पादन घटक है।
जावा डेवलपमेंट किट (JDK) एक Oracle कार्पोरेशन जावा डेवलपर्स के उद्देश्य से उत्पाद है। जावा की शुरुआत के बाद से, यह अब तक का सबसे व्यापक रूप से उपयोग किया जाने वाला जावा सॉफ्टवेयर डेवलपमेंट किट (एसडीके) है।
जावा रनटाइम पर्यावरण को जावा रनटाइम, रनटाइम पर्यावरण के रूप में भी जाना जाता है
OpenJDK (ओपन जावा डेवलपमेंट किट) जावा प्रोग्रामिंग भाषा का एक स्वतंत्र और खुला स्रोत कार्यान्वयन है। यह 2006 में शुरू हुए सन माइक्रोसिस्टम्स के प्रयास का नतीजा है। इसे जीएनयू जनरल पब्लिक लाइसेंस (जीपीएल) के तहत लिंकिंग अपवाद के साथ लागू किया गया है।
JDK (जावा डेवलपमेंट किट):
JRE (जावा रनटाइम पर्यावरण)
जावा रनटाइम एनवायरनमेंट में जेवीएम, क्लास लाइब्रेरी और अन्य सहायक फाइलें शामिल हैं। जावा फ़ाइलों के निष्पादन के लिए JRE को लक्षित किया गया है।
JVM (जावा वर्चुअल मशीन)
JVM अंतर्निहित ऑपरेटिंग सिस्टम और हार्डवेयर संयोजन के आधार पर मशीन कोड में बाइट कोड की व्याख्या करता है। यह कचरा संग्रह, सरणी सीमा जाँच आदि जैसी सभी चीजों के लिए ज़िम्मेदार है ... जावा वर्चुअल मशीन कोड को निष्पादित करने का एक प्लेटफ़ॉर्म-स्वतंत्र तरीका प्रदान करता है।
JDK - बाईटकोड को संकलन जावा। डिबगर्स, कंपाइलर आदि से युक्त।
javac file.java // Is executed using JDK
JVM - बाइट कोड निष्पादित करता है। JVM वह है जो जावा प्लेटफॉर्म को स्वतंत्र बनाता है। लेकिन जेवीएम प्लेटफार्मों के लिए भिन्न होता है।
JRE - JVM जावा प्रोग्राम चलाने के लिए जावा रनटाइम लाइब्रेरीज़ के साथ।
उल्लेख के लायक एक और पहलू:
JDK (जावा विकास किट)
आपको विकास के उद्देश्यों के लिए इसकी आवश्यकता होगी जैसे कि नाम से पता चलता है।
उदाहरण के लिए: एक सॉफ्टवेयर कंपनी के पास अपने कंप्यूटर में JDK इंस्टॉल होगा क्योंकि उन्हें नए सॉफ्टवेयर विकसित करने की आवश्यकता होगी जिसमें उनके जावा प्रोग्रामों को भी संकलित करना और चलाना शामिल है।
तो हम कह सकते हैं कि JDK = JRE + JVM।
JRE (जावा रन-टाइम वातावरण)
जावा प्रोग्राम चलाने के लिए यह आवश्यक है। आप इसके साथ जावा प्रोग्राम संकलित नहीं कर सकते।
उदाहरण के लिए: एक नियमित कंप्यूटर उपयोगकर्ता जो कुछ ऑनलाइन गेम चलाना चाहता है, उसे जावा प्रोग्राम चलाने के लिए अपने सिस्टम में JRE की आवश्यकता होगी।
JVM (जावा वर्चुअल मशीन)
जैसा कि आप जानते हैं कि यह बाइटकोड चलाएगा। यह जावा प्लेटफ़ॉर्म को स्वतंत्र बनाता है क्योंकि यह उस .class
फ़ाइल को निष्पादित करता है जो आपको जावा प्रोग्राम को संकलित करने के बाद मिलती है चाहे आप इसे विंडोज, मैक या लिनक्स पर संकलित करें।
JDK खोलें
खैर, जैसा मैंने ऊपर कहा। अब JDK अलग-अलग कंपनी द्वारा बनाया गया है, उनमें से एक जो एक खुला स्रोत है और सार्वजनिक उपयोग के लिए मुफ़्त है OpenJDK, जबकि कुछ अन्य ओरेकल कॉर्पोरेशन के JRockit JDK या IBM JDK हैं।
हालाँकि, वे सभी सामान्य उपयोगकर्ता के समान दिखाई दे सकते हैं।
निष्कर्ष
यदि आप एक जावा प्रोग्रामर हैं, तो आपको अपने सिस्टम में JDK की आवश्यकता होगी और इस पैकेज में JRE और JVM भी शामिल होंगे लेकिन यदि आप सामान्य उपयोगकर्ता हैं जो ऑनलाइन गेम खेलना पसंद करते हैं तो आपको केवल JRE की आवश्यकता होगी और इस पैकेज में JDK नहीं होगा ।
दूसरे शब्दों में जेडीके दादा जेआरई पिता है और जेवीएम उनका बेटा है।
जावा भाषा है और इसमें एक सख्त और दृढ़ता से टाइप किया गया सिंटैक्स शामिल है जिसके साथ आपको अब तक बहुत परिचित होना चाहिए।
जावा 2 प्लेटफ़ॉर्म, स्टैंडर्ड एडिशन, जिसे J2SE के रूप में भी जाना जाता है, को प्लेटफ़ॉर्म पर संदर्भित किया गया और java.lang और java.io संकुल में कक्षाएं शामिल की गईं। यह बिल्डिंग ब्लॉक था जिसे जावा एप्लिकेशन बनाया गया था।
जावा वर्चुअल मशीन, या जेवीएम, एक सॉफ्टवेयर वर्चुअल मशीन है जो संकलित जावा कोड चलाती है। क्योंकि संकलित जावा कोड केवल बायटेकोड है, जेवीएम को चलाने से पहले मशीन कोड को उस बायटेकोड को संकलित करने के लिए जिम्मेदार है। (इसे अक्सर जस्ट इन टाइम कंपाइलर या JIT कंपाइलर कहा जाता है।) JVM मेमोरी मैनेजमेंट का भी ध्यान रखता है, ताकि एप्लिकेशन कोड न हो।
जावा डेवलपमेंट किट, या JDK, जावा एप्लिकेशन बनाने के लिए जावा डेवलपर्स सॉफ्टवेयर के टुकड़े का उपयोग करता था। इसमें जावा भाषा कंपाइलर, एक डॉक्यूमेंटेशन जेनरेटर, देशी कोड के साथ काम करने के लिए टूल और (आमतौर पर) प्लेटफॉर्म के लिए जावा सोर्स कोड को डिबगिंग प्लेटफॉर्म क्लासेस इनेबल किया जाता है।
जावा रनटाइम पर्यावरण, या JRE, संकलित जावा अनुप्रयोगों को चलाने के लिए सॉफ्टवेयर एंड यूजर्स डाउनलोड का टुकड़ा था। इसमें एक JVM शामिल है लेकिन JDK में बंडल किए गए किसी भी विकास उपकरण में नहीं है। हालांकि, JDK में एक JRE होता है।
JVM: एक विनिर्देश जो जावा प्रोग्राम को चलाने के तरीके / संसाधनों का वर्णन करता है। दरअसल बाइट कोड निष्पादित करता है और जावा प्लेटफॉर्म को स्वतंत्र बनाता है। ऐसा करने में, यह विभिन्न प्लेटफ़ॉर्म के लिए अलग है। खिड़कियों के लिए JVM UNIX के लिए JVM के रूप में काम नहीं कर सकता है।
JRE: JVM का कार्यान्वयन। (जेवीएम + रन टाइम लाइब्रेरी)
JDK: JRE + java कंपाइलर और अन्य आवश्यक उपकरण खरोंच से जावा प्रोग्राम बनाने के लिए
JVM : यह वास्तव में बाइट कोड दुभाषिया का अर्थ है। यह प्लेटफॉर्म पर निर्भर है। उदाहरण के लिए: Windows प्लेटफ़ॉर्म में ' java.exe ' या ' javaw.exe ' की पूर्ववर्ती jvm प्रक्रिया है।
JDK : एक टूलकिट है जिसमें जावा प्रोग्राम / एप्लिकेशन को विकसित करने और निष्पादित करने के लिए आवश्यक लाइब्रेरी और उपयोगिताओं हैं
JRE : एक java application.ie के लिए निष्पादन का माहौल है, यह केवल संकलित कार्यक्रम के लिए jvm सहित रनटाइम निर्भरता का समर्थन करता है। यदि हम एक जावा प्रोग्राम संकलित करना चाहते हैं तो हमें jdk की आवश्यकता है।
JVM: जावा की वर्चुअल मशीन। मशीन को बताता है कि जावा कोड का क्या करना है। आप जेवीएम को डाउनलोड नहीं कर सकते हैं। यह किसी अन्य घटक में पैक किया हुआ आता है।
JRE: उपरोक्त के रूप में संदर्भित कुछ अन्य घटक JRE है। यह JVM + अन्य जार है जो रनटाइम इनसाइट्स बना सकता है
JDK: इसमें JRE होता है (जिसमें बदले में JVM होता है)। एक बार जब आप JDK प्राप्त कर लेते हैं तो आपको JRE और JVM को अलग से स्थापित करने की आवश्यकता नहीं होती है। इसमें संकलक होता है जो आपकी .java फाइलों को .class फाइलों में संकलित करता है
JVM
जेवीएम (जावा वर्चुअल मशीन) एक अमूर्त मशीन है। यह एक विनिर्देश है जो रनटाइम वातावरण प्रदान करता है जिसमें जावा बाइटकोड को निष्पादित किया जा सकता है। जेवीएम कई हार्डवेयर और सॉफ्टवेयर प्लेटफार्मों के लिए उपलब्ध हैं।
JRE
JRE जावा रनटाइम एनवायरनमेंट के लिए एक संक्षिप्त रूप है। इसका उपयोग रनटाइम वातावरण प्रदान करने के लिए किया जाता है। यह JVM का कार्यान्वयन है। यह भौतिक रूप से मौजूद है। इसमें लाइब्रेरीज़ / अन्य फ़ाइलों का सेट शामिल है, जो JVM रनटाइम पर उपयोग करता है।
JDK
JDK जावा विकास किट के लिए एक संक्षिप्त नाम है। यह शारीरिक रूप से मौजूद है। इसमें JRE + विकास उपकरण शामिल हैं।
लिंक: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
संक्षेप में:
यदि आप जावा में विकास करना चाहते हैं, तो आपको JDK की आवश्यकता है, लेकिन यदि आप केवल जावा चलाना चाहते हैं, तो आपको JRE की आवश्यकता है।
जेवीएम जावा वर्चुअल मशीन, वास्तव में जावा बायटेकोड को निष्पादित करता है। यह जेएवीए प्लेटफॉर्म पर निष्पादन ब्लॉक है। यह बाईटेकोड को मशीन कोड में परिवर्तित करता है।
JRE जावा रनटाइम एनवायरनमेंट, जावा एप्लिकेशन को निष्पादित करने के लिए न्यूनतम आवश्यकताएं प्रदान करता है; इसमें जावा वर्चुअल मशीन (JVM), कोर कक्षाएं और सहायक फाइलें शामिल हैं।
JDK जावा डेवलपमेंट किट, इसमें आपके एप्लिकेशन सॉफ़्टवेयर को विकसित करने के लिए सभी उपकरण हैं। यह JRE + JVM के रूप में है
ओपन JDK जावा प्लेटफ़ॉर्म का एक स्वतंत्र और खुला स्रोत कार्यान्वयन है।
आम शब्दों में: - JDK = JRE + विकास / डिबगिंग टूल , जहाँ JDK जावा को चलाने से लेकर इसे चलाने तक के संकलन के साथ काम करने के लिए हमारा पूरा पैकेज है। दूसरी तरफ JRE कोड (बाइट कोड) के चलने का ही है।
नोट: - चाहे हम JDK या JRE स्थापित कर रहे हों, JVM दोनों पैकेज के साथ बंडल हो जाएगा और JVM वह भाग है जहाँ JIT कंपाइलर बाइट कोड को मशीन के विशिष्ट कोड में परिवर्तित करता है।
सिर्फ JDK, JRE, JVM और JIT पर लेख पढ़ें
JDK : पूरा पैकेज जिसे आपको जावा कोड लिखने और चलाने की जरूरत है
OpenJDK : इसे और बेहतर बनाने के लिए JDK का एक स्वतंत्र कार्यान्वयन
JVM : जावा कोड को बायटेकोड में परिवर्तित करता है और विशिष्टताओं को प्रदान करता है जो बताता है कि कैसे जावा कोड को त्रुटियों के लिए संकलित, लोड, सत्यापित, जांचा और निष्पादित किया जाना चाहिए।
JRE : JVM का कार्यान्वयन जिसके साथ कुछ जावा लाइब्रेरी का उपयोग प्रोग्राम को चलाने के लिए किया जाता है
JVM जावा वर्चुअल मशीन के रूप में संक्षिप्त है , JVM जावा आर्किटेक्चर का मुख्य घटक है। JVM C प्रोग्रामिंग लैंग्वेज में लिखा गया है। जावा कंपाइलर JVM के लिए बाइट कोड का उत्पादन करता है। जेवीएम बाइट कोड को पढ़कर बाइट कोड को सत्यापित करता है और कोड को ऑर्डर्स से जोड़ता है।
JRE को जावा रनटाइम पर्यावरण के रूप में संक्षिप्त किया गया है । यह रनटाइम पर पर्यावरण प्रदान करता है। यह शारीरिक रूप से मौजूद है। इसमें JVM + पुस्तकालयों का सेट (जार) + अन्य फाइलें हैं।
JDK को जावा डेवलपमेंट किट के रूप में संक्षिप्त किया गया है । यह जावा अनुप्रयोगों को विकसित कर रहा है। और जावा अनुप्रयोगों को डीबग करना और निगरानी करना भी। JDK में JRE + विकास उपकरण (javac, java) होते हैं
OpenJDK OpenJDK सूर्य JDK का एक खुला स्रोत संस्करण है। ओरेकल JDK सूर्य की आधिकारिक JDK है।