OpenJDK और Adoptium / AdoptOpenJDK के बीच अंतर


183

हाल ही में ओरेकल जावा एसई सपोर्ट रोडमैप नीति अपडेट (विशेष रूप से मार्च 2019 के बाद ओरेकल से $ मुक्त रिलीज अपडेट का अंत) के कारण, मैं ओरेकल जावा के विकल्प की खोज कर रहा हूं। मैंने पाया है कि OpenJDK एक ओपन-सोर्स विकल्प है। और मैंने AdoptOpenJDK पाया है , जिसे अब Adoptium के रूप में जाना जाता है, जो कि एक प्रीबिल्ट बाइनरी है । यह पहेली है।

OpenJDK और Adoptium / AdoptOpenJDK में क्या अंतर है?


अपडेट: AdoptOpenJDK ने अपना नाम बदलकर एडॉप्टियम कर लिया है , जो ग्रहण फाउंडेशन के लिए कदम है
बेसिल बोर्क

जवाबों:


272

संक्षेप में:

  • OpenJDK के कई अर्थ हैं और यह उल्लेख कर सकता है:
    • जावा प्लेटफ़ॉर्म, मानक संस्करण (जावा एसई) का मुफ़्त और खुला स्रोत कार्यान्वयन
    • खुला स्रोत भंडार - जावा सोर्स कोड उर्फ ​​ओपनजेडके प्रोजेक्ट
    • ओरेकल द्वारा बनाए गए OpenJDK बायनेरिज़ को पहले से बनाया गया है
    • OpenJDK समुदाय द्वारा बनाए गए OpenJDK बायनेरिज़ का निर्माण किया
  • AdoptOpenJDK - समुदाय द्वारा अनुरक्षित OpenJDK बायनेरिज़ का निर्माण ( खुला स्रोत लाइसेंस प्राप्त )

स्पष्टीकरण:

Prebuilt OpenJDK (या वितरण) - बायनेरिज़, http://hg.openjdk.java.net/ से निर्मित , एक संग्रह या इंस्टॉलर के रूप में प्रदान किया जाता है, जो विभिन्न प्लेटफार्मों के लिए संभव समर्थन अनुबंध के साथ पेश किया जाता है।

OpenJDK, स्रोत रिपॉजिटरी (जिसे OpenJDK प्रोजेक्ट भी कहा जाता है ) - एक Mercurial -based ओपन सोर्स रिपॉजिटरी है, जिसे http://hg.openjdk.java.net पर होस्ट किया जाता है । जावा स्रोत कोड। जावा सुविधाओं का विशाल बहुमत (वीएम और कोर लाइब्रेरी से कंपाइलर तक) पूरी तरह से इस स्रोत भंडार पर आधारित है। ऑरेकल के पास इसका एक वैकल्पिक कांटा है।

OpenJDK, वितरण (नीचे दी गई प्रदाताओं की सूची देखें) - बीयर की तरह मुफ्त है और भाषण में तरह तरह की मुफ्त है , लेकिन, अगर आपको इसके साथ समस्या है, तो आपको ओरेकल को कॉल करने के लिए नहीं मिलता है। कोई समर्थन अनुबंध नहीं है। इसके अलावा, ओरेकल केवल किसी भी OpenJDK (वितरण) संस्करण के लिए अपडेट जारी करेगा, यदि वह रिलीज़ LTS (दीर्घकालिक समर्थन) रिलीज़ सहित सबसे हालिया जावा रिलीज़ है। ओरेकल OpenJDK (वितरण) संस्करण 12.0 को जारी करता है, भले ही OpenJDK (वितरण) 11.0 संस्करण के साथ कोई सुरक्षा समस्या हो, Oracle 11.0 के लिए एक अद्यतन जारी नहीं करेगा। ओरेकल द्वारा पूरी तरह से बनाए रखा।

कुछ OpenJDK परियोजनाएं - जैसे OpenJDK 8 और OpenJDK 11 - OpenJDK समुदाय द्वारा बनाए रखी जाती हैं और कुछ प्लेटफार्मों के लिए OpenJDK संस्करणों के लिए रिलीज़ प्रदान करती हैं। समुदाय सदस्यों ने इन OpenJDK संस्करणों में सुरक्षा कमजोरियों के लिए फ़िक्सेस जारी करने की ज़िम्मेदारी ली है।

AdoptOpenJDK, वितरण Oracle के OpenJDK वितरण के समान है (इसमें यह मुफ़्त है, और यह OpenJDK स्रोत भंडार से स्रोतों को संकलित करके निर्मित एक निर्माण है)। AdoptOpenJDK एक इकाई के रूप में पैच का बैकपोर्टिंग नहीं होगा, अर्थात इसमें AdoptOpenJDK 'कांटा / संस्करण' नहीं होगा जो भौतिक रूप से अपस्ट्रीम से अलग है (केवल Win32 समर्थन के लिए कुछ बिल्ड स्क्रिप्ट पैच को छोड़कर)। मतलब, अगर समुदाय के सदस्य (ओरेकल या अन्य, लेकिन एक इकाई के रूप में AdoptOpenJDK नहीं) OpenJDK LTS संस्करणों के अपडेट के लिए बैकपोर्ट सुरक्षा को ठीक करता है, तो AdoptOpenJDK उन लोगों के लिए बिल्ड प्रदान करेगा। OpenJDK समुदाय द्वारा बनाए रखा।

OracleJDK - अभी तक एक और वितरण है। JDK12 से शुरू होकर OracleJDK का कोई मुफ्त संस्करण नहीं होगा। ओरेकल की JDK वितरण पेशकश वाणिज्यिक समर्थन के लिए है। आप इसके लिए भुगतान करते हैं, लेकिन फिर आपको समर्थन के लिए ओरेकल पर भरोसा करना पड़ता है। Oracle के OpenJDK की पेशकश के विपरीत, OracleJDK LTS संस्करणों के लिए अधिक समर्थन के साथ आता है। एक डेवलपर के रूप में आप केवल इस विशेष JDK के व्यक्तिगत / विकास उपयोग के लिए एक मुफ्त लाइसेंस प्राप्त कर सकते हैं, लेकिन यह ज्यादातर एक लाल हेरिंग है, क्योंकि 'सिर्फ बाइनरी' मूल रूप से OpenJDK बाइनरी के समान है। मुझे लगता है कि इसका मतलब है कि आप Oracle की वेबसाइटों से LTS JDKs के सिक्योरिटी-पैचेड वर्जन डाउनलोड कर सकते हैं जब तक कि आप उन्हें व्यावसायिक रूप से उपयोग न करने का वादा करते हैं।

ध्यान दें । ओरेकल द्वारा निर्मित "ओरेकल ओपनजेडके बिल्ड" को कॉल करना सबसे अच्छा हो सकता है।

ओरेकल में जावा उत्पाद प्रबंधक डोनाल्ड स्मिथ लिखते हैं :

आदर्श रूप से, हम आपकी स्थिति के आधार पर, सभी ओरेकल JDK को "Oracle JDK" कहते हैं, या तो GPL या वाणिज्यिक लाइसेंस के तहत। हालाँकि, ऐतिहासिक कारणों से, जबकि शेष छोटे अंतर मौजूद हैं, हम उन्हें अलग से संदर्भित करेंगे क्योंकि Oracle का OpenJDK बनाता है और Oracle JDK।


OpenJDK प्रदाता और तुलना

-------------------------------------------------- --------------------------------------
| प्रदाता | मुफ्त का निर्माण | फ्री बाइनरी | विस्तारित | वाणिज्यिक | अनुमित |
| | स्रोत से | वितरण | अपडेट | समर्थन | लाइसेंस |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | हाँ | हाँ | हाँ | नहीं | हाँ |
| अमेज़ॅन - Corretto | हाँ | हाँ | हाँ | नहीं | हाँ |
| अज़ुल ज़ुलु | नहीं | हाँ | हाँ | हाँ | हाँ |
| बेल्सॉफ्ट लिबरिका | नहीं | हाँ | हाँ | हाँ | हाँ |
| आईबीएम | नहीं | नहीं | हाँ | हाँ | हाँ |
| jClarity | नहीं | नहीं | हाँ | हाँ | हाँ |
| OpenJDK | हाँ | हाँ | हाँ | नहीं | हाँ |
| ओरेकल JDK | नहीं | हाँ | नहीं ** | हाँ | नहीं |
| Oracle OpenJDK | हाँ | हाँ | नहीं | नहीं | हाँ |
| ojdkbuild | हाँ | हाँ | नहीं | नहीं | हाँ |
| रेडहैट | हाँ | हाँ | हाँ | हाँ | हाँ |
| SapMachine | हाँ | हाँ | हाँ | हाँ | हाँ |
-------------------------------------------------- --------------------------------------

स्रोत से नि: शुल्क बनाता है - वितरण स्रोत कोड सार्वजनिक रूप से उपलब्ध है और एक अपने स्वयं के निर्माण को इकट्ठा कर सकता है

मुफ्त बाइनरी वितरण - वितरण बायनेरिज़ सार्वजनिक रूप से डाउनलोड और उपयोग के लिए उपलब्ध हैं

विस्तारित अपडेट - उर्फ ​​एलटीएस (दीर्घकालिक समर्थन) - 6 महीने के रिलीज जीवनचक्र से परे सार्वजनिक अपडेट

वाणिज्यिक सहायता - कुछ प्रदाता ग्राहकों को भुगतान करने के लिए विस्तारित अपडेट और ग्राहक सहायता प्रदान करते हैं, उदाहरण के लिए Oracle JDK ( समर्थन विवरण )

अनुमेय लाइसेंस - वितरण लाइसेंस गैर-सुरक्षात्मक है, जैसे Apache 2.0


मुझे किस जावा वितरण का उपयोग करना चाहिए?

सन / ओरेकल के दिनों में, यह आमतौर पर सन / ओरेकल था जो ओपेन जेडीके स्रोतों के आधार पर मालिकाना डाउनस्ट्रीम जेडीके वितरण का उत्पादन करता था। हाल ही में, ओरेकल ने अपने स्वयं के मालिकाना निर्माण को केवल वाणिज्यिक समर्थन के साथ करने का फैसला किया था। वे खुले तौर पर OpenJDK बिल्ड को अपनी https://jdk.java.net/ साइट पर प्रकाशित करते हैं ।

JDK 11 की शुरुआत क्या हो रही है, यह एकल-विक्रेता (Oracle) मानसिकता से हटकर उस मानसिकता की ओर जाता है जहाँ आप एक प्रदाता का चयन करते हैं जो आपको उत्पाद के लिए वितरण प्रदान करता है, जैसी शर्तों के तहत: आपके द्वारा बनाए गए प्लेटफ़ॉर्म, फ़्रीक्वेंसी और रिलीज़ की तेज़ी , कैसे समर्थन संरचित है, आदि। यदि आप किसी मौजूदा विक्रेता पर भरोसा नहीं करते हैं, तो आप खुद भी OpenJDK का निर्माण कर सकते हैं।

OpenJDK का प्रत्येक निर्माण आमतौर पर एक ही मूल अपस्ट्रीम सोर्स रिपॉजिटरी (OpenJDK "प्रोजेक्ट") से किया जाता है। हालांकि प्रत्येक बिल्ड काफी अनोखा है - $ मुफ्त या वाणिज्यिक, ब्रांडेड या अनब्रांडेड, शुद्ध या बंडल (जैसे, बेल्सॉफ्ट लिबरिका जेडीके बंडल किए गए जावाएफएक्स प्रदान करता है, जिसे ओआरडी बिल्ड से जेडडीके 11 शुरू किया गया था)।

यदि कोई वातावरण (जैसे, लिनक्स) और / या लाइसेंस की आवश्यकता विशिष्ट वितरण को परिभाषित करती है और यदि आप सबसे मानक JDK बिल्ड चाहते हैं, तो संभवतः Oracle या AdoptOpenJDK द्वारा OpenJDK का उपयोग करना सबसे अच्छा विकल्प है।


अतिरिक्त जानकारी

स्टीफन कोलबोर्न द्वारा ओरेकल की JDK से परे देखने का समय

जावा चैंपियंस समुदाय द्वारा जावा इज़ स्टिल फ्री (17 सितंबर, 2018 को प्रकाशित)

जावा चैंपियंस समुदाय द्वारा जावा अभी भी मुफ्त 2.0.0 (3 मार्च, 2019 को प्रकाशित)

ओप्सियन द्वारा JDK अपडेट साक्षात्कार के बारे में अलेक्सी शिपिलेव (27 जून, 2019 को प्रकाशित)


8
आप एक उल्लेख जोड़ सकते हैं कि अन्य विक्रेता OpenJDK पर आधारित जावा कार्यान्वयन प्रदान करते हैं जैसे कि अज़ुल सिस्टम से ज़ुलु और ज़िंग उत्पाद । एक और ग्रहण OpenJ9 परियोजना है।
बेसिल बॉर्क

2
@DmitriyPopov यह अनुज्ञेय है - github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE
मिखाइल

1
@MikhailKholodkov अपाचे लाइसेंस के बारे में गलत। अपाचे लाइसेंस 2.0 का उपयोग करके AdoptOpenJDK के लिए आपका लिंक केवल उन बिल्ड स्क्रिप्ट पर लागू होता है जो उन्होंने अपने बायनेरिज़ बनाने में मदद करने के लिए लिखे थे। बायनेरिज़ को OpenJDK प्रोजेक्ट से प्राप्त स्रोत कोड से बनाया गया है जो अपवाद लाइसेंस को लिंक करने के साथ GPL का उपयोग कर रहा है।
तुलसी बोर्के

2
@GarrettWilson AdoptOpenJDK केवल 2 चीजें करता है: (क) स्रोत कोड का उपयोग करके बायनेरिज़ और इंस्टालर बनाएँ OpenJDK द्वारा प्रदान करता है, और (b) उन बायनेरिज़ पर परीक्षण चलाएं। AdoptOpenJDK जावा प्लेटफ़ॉर्म को लागू करने के लिए स्रोत कोड का भंडार नहीं रखता है। तो: OpenJDK केवल स्रोत कोड है, AdoptOpenJDK केवल बायनेरिज़ + इंस्टॉलर है। AdoptOpenJDK लेखक केवल अपने बिल्डिंग टूल्स और टेस्ट सूट के लिए कोड करते हैं। AdoptOpenJDK के अलावा, कई अन्य कंपनियां भी OpenJDK परियोजना द्वारा प्रदान किए गए स्रोत कोड के आधार पर बिल्ड प्रदान करती हैं: Azul सिस्टम्स, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP, और बहुत कुछ।
तुलसी बोर्के

1
@GarretWilson मुझे जोड़ना चाहिए कि AdoptOpenJDK एक तीसरी बात करता है: (ग) मेरी पिछली टिप्पणी में उल्लिखित भवन और परीक्षण का समर्थन करने के लिए टूलिंग बनाता है और बनाए रखता है
तुलसी Bourque

63

अपडेट: AdoptOpenJDK ने अपना नाम बदलकर एडॉप्टियम कर लिया है , जो ग्रहण फाउंडेशन के लिए कदम है


OpenJDK code स्रोत कोड
Adoptium / AdoptOpenJDK ➙ बनाता है

OpenJDK और AdoptOpenJDK के बीच अंतर

पहला सोर्स-कोड प्रदान करता है , दूसरा उस सोर्स-कोड का निर्माण करता है

जावा और ओपनजेडके के कई विक्रेता

ग्रहण फाउंडेशन का एडॉप्टियम , जिसे पहले एडॉप्टऑनजेडके के रूप में जाना जाता है , जावा प्लेटफॉर्म के कार्यान्वयन को वितरित करने वाले कई विक्रेताओं में से केवल एक है। इसमें शामिल है:

  • ग्रहण फाउंडेशन (Adoptium / AdoptOpenJDK)
  • अज़ुल सिस्टम
  • आकाशवाणी
  • Red Hat / IBM
  • BellSoft
  • एसएपी
  • अमेज़न AWS
  • … और अधिक

जावा प्लेटफ़ॉर्म के कार्यान्वयन के लिए एक विक्रेता को चुनने में आपकी सहायता करने के लिए मेरा यह फ़्लोचार्ट देखें। ज़ूम करने के लिए / टैप करें क्लिक करें।

फ्लोचार्ट जावा 11 कार्यान्वयन के लिए एक विक्रेता को चुनने में आपका मार्गदर्शन करता है

एक अन्य संसाधन: अज़ुल सिस्टम द्वारा यह तुलना मैट्रिक्स उपयोगी है, और मेरे दिमाग में सच और उचित लगता है।

विक्रेता और कार्यान्वयन को चुनने पर विचार करने के लिए विचार और प्रेरणा की एक सूची यहां दी गई है।

जावा के लिए एक विक्रेता को चुनने में प्रेरणा

कुछ विक्रेता आपको JIT तकनीकों का विकल्प प्रदान करते हैं ।

हॉटस्पॉट और JRockit विलय, और OpenJ9 दोनों को AdoptOpenJDK में उपलब्ध दिखाने वाला आरेख

इस जावा पारिस्थितिकी तंत्र के बारे में अधिक समझने के लिए, जावा इज़ स्टिल फ्री पढ़ें


1
यदि 'OpenJDK' स्रोत को संदर्भित करता है, तो hub.docker.com/_/openjdk और hub.docker.com/_/adoptopenjdk में क्या अंतर है ?
bcoughlan

1
@bcoughlan आपको उन दो उत्पादों के प्रकाशक से पूछना होगा: डॉकर, इंक। आपके लिंक किए गए वेब पृष्ठों का दावा है कि दूसरा AdoptOpenJDK परियोजना द्वारा बनाए रखा गया है, जबकि पहला "डॉकर समुदाय" द्वारा बनाए रखा गया है। पहला लोगो के उपयोग में भ्रामक है और नामकरण के रूप में इसने आपको यह आभास दिया होगा कि OpenJDK परियोजना ने इसका उत्पादन किया, जो कि ऐसा नहीं है। पहला भी OpenJDK द्वारा दिए गए ट्रेडमार्क नोटिस के आइटम # 2 का उल्लंघन हो सकता है , लेकिन मैं एक वकील नहीं हूं।
बेसिल बोर्के

1
@SanderVerhagen क्या आप OpenJDK साइट पर उस डाउनलोड पृष्ठ का लिंक प्रदान कर सकते हैं? मुझे ऐसा कोई प्रस्ताव नहीं मिला। मुझे Oracle के OpenJDK JDK बायनेरिज़ के लिए Windows, macOS और Linux के लिए एक अन्य वेब साइट पर लिंक मिल गया है: jdk.java.net । उस साइट और उसके बाइनरी डाउनलोड को ओरेकल द्वारा समुदाय के लिए एक शिष्टाचार के रूप में प्रदान किया जाता है, ओपनजेडके परियोजना द्वारा नहीं। जैसा कि होम पेज कहता है: ओरेकल से जावा डेवलपमेंट किट बनाता है । मैं इस उत्पाद को अपने फ्लोचार्ट, ऊपरी-दाएं कोने की नीली बैरल में दूसरे बुलबुले के रूप में दिखाता हूं।
तुलसी बॉर्क

1
@SanderVerhagen आपका लिंक एक अलग वेब साइट पर जाता है , जैसा कि मुझे संदेह था, OpenJDK के बाहर । साइट jdk.java.net/14 है नहीं OpenJDK वेब साइट का हिस्सा है, और न ही यह OpenJDK परियोजना का हिस्सा है। दूसरे शब्दों में, openjdk.java.net नहीं है jdk.java.net । फिर से, मेरे फ्लोचार्ट में नीले बैरल के शीर्ष पर दो बुलबुले देखें। ऊपरी-बाएँ में Oracle उत्पाद उनका व्यावसायिक उत्पाद है। ऊपरी-दाएं ओर Oracle उत्पाद उनका GPL- लाइसेंस मुक्त-लागत निर्माण है - आपका लिंक इस विशेष उत्पाद की ओर जाता है।
बेसिल बॉर्क

1
@SanderVerhagen मुझे संदेह है कि आप उत्पाद के नामकरण में भ्रमित हो रहे हैं। शब्द "जावा" ओरेकल द्वारा ट्रेडमार्क किया गया है, और केवल उनकी अनुमति के साथ उपयोग किया जा सकता है। अधिकांश विक्रेता इसलिए उस ट्रेडमार्क का उपयोग नहीं कर रहे हैं। इसके बजाय अधिकांश विक्रेता "OpenJDK" शब्द का उपयोग "जावा" के बजाय उनके नामकरण के हिस्से के रूप में कर रहे हैं। ये विक्रेता OpenJDK परियोजना से प्राप्त स्रोत कोड से अपना निर्माण कर रहे हैं । OpenJDK परियोजना केवल स्रोत कोड प्रदान करता ,, बनाता है नहीं नहीं संस्थापक। एक बिल्ड / इंस्टॉलर के लिए आपको या तो अपना बनाना होगा या किसी वेंडर से प्राप्त करना होगा। मेरा सुझाव है कि जावा पढ़ना अभी भी मुफ्त है
तुलसी Bourque
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.