OpenJDK का रखरखाव कैसे व्यवहार में काम करता है?


9

विशेष रूप से, मैं बग फिक्स और अन्य पैच के संदर्भ में ओरेकल के JDK और OpenJDK के बीच के अंतर को समझना चाहूंगा।

किस शाखा को पहले फ़िक्सेस मिलता है और ओरेकल को पैचेज बनाने की आदत है जो इसे ओपनजेडके से कभी नहीं बनाता है?

जवाबों:


6

यह OpenJDK पेज पर अधिक विवरण में बताया गया है: JDK 7 अपडेट प्रोजेक्ट प्रस्ताव Q & A

क्या यह प्रोजेक्ट Oracle JDK 7 अपडेट रिलीज़ के आधार के रूप में काम करेगा?

हाँ।

OpenJDK 6 पर जो डार्सी के FOSDEM ब्लॉग पोस्ट से उद्धृत करने के लिए :

विशेष रूप से, OpenJDK 7 कोड बेस और 7 अपडेट कोड बेस के बीच समान डाइकोटॉमी नहीं होगी क्योंकि OpenJDK 6 और 6 अपडेट ट्रेन के बीच ...

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

सुरक्षा पैच के लिए, चित्र विपरीत प्रतीत होता है, यानी मैं उनसे अपेक्षा करता हूं कि वे ओरेकल रिलीज से पहले जाएं और फिर (फिर से, जितना संभव हो उतना कम देरी के साथ) ओपनजेडके के लिए:

क्या 7 अपडेट प्रोजेक्ट को ओरेकल से सुरक्षा सुधार प्राप्त होंगे?

हाँ।

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

यह परियोजना ओरेकल से सुरक्षा सुधार कब प्राप्त करेगी?

ओरेकल जावा एसई क्रिटिकल पैच अपडेट का शेड्यूल सार्वजनिक रूप से उपलब्ध है

इस प्रोजेक्ट के स्रोत कोड के लिए सुरक्षा फ़िक्सेस को JDK 7 अपडेट प्रोजेक्ट में उसी समय के आसपास उपलब्ध कराया जाएगा जब वे उत्पादों से रिलीज़ होते हैं ...


ओरेकल और ओपेन जेडडीके को सिंक में रखने के लिए किए गए प्रयासों को समझने के कारणों को बेहतर ढंग से समझने के लिए, यह पूर्ववर्ती परियोजना पर ओरेकल के फैसले पर एक नज़र डालने के लिए समझ में आता है: ओपेन जेडडीके को आधिकारिक जावा एसई 7 संदर्भ कार्यान्वयन के रूप में स्थानांतरित करना :

... ओरेकल और जावा एसई 7 एक्सपर्ट ग्रुप के अन्य सदस्य जावा एसई 7 स्पेसिफिकेशन ( जेएसआर 336 ) को फिनिशिंग टच दे रहे हैं । विनिर्देशन के रूप में इसकी भूमिका में, Oracle जावा एसई 7 संदर्भ कार्यान्वयन को वितरित करने के लिए जिम्मेदार है ... हम एक संदर्भ कार्यान्वयन प्रदान करने जा रहे हैं जो पूरी तरह से OpenJDK खुले स्रोत कोड पर आधारित है और इसे GPL खुले स्रोत लाइसेंस के तहत उपलब्ध कराता है ।

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

ऐतिहासिक रूप से, सूर्य ने हमेशा सूर्य JDK का उपयोग RI के रूप में किया और इसे बाइनरी कोड लाइसेंस (BCL) के तहत उपलब्ध कराया। यह सूर्य के लिए बहुत सुविधाजनक था क्योंकि इसका मतलब था कि इसका उत्पाद कार्यान्वयन परिभाषा के अनुकूल था। हालाँकि, यह भी भ्रामक था क्योंकि सन जेडडीके में काफी कुछ विशेषताएं थीं जो मानक का हिस्सा नहीं थीं, जैसे कि जावा प्लगिन। इसके अलावा, इस अभ्यास को जारी रखने से खुले स्रोत के कार्यान्वयनकर्ताओं के लिए चीजें मुश्किल हो जाएंगी क्योंकि वे आधिकारिक आरआई स्रोत कोड का अध्ययन और मूल्यांकन नहीं कर पाएंगे। (Oracle JDK के लिए सोर्स कोड OpenJDK से थोड़ा अलग है - कुछ जिसे हम आगे बढ़ते हुए संबोधित करेंगे)।

उस के साथ दिमाग में, Oracle होगा:

  • केवल OpenJDK कोड के आधार पर RI बायनेरिज़ बनाएँ।
  • वाणिज्यिक कार्यान्वयनकर्ताओं के लिए BCL (सामान्य जावा लाइसेंस) और खुले स्रोत कार्यान्वयनकर्ताओं के लिए GPLv2 (Classpath अपवाद के साथ) के तहत RI बायनेरिज़ उपलब्ध कराएँ।
  • वाणिज्यिक लाइसेंसधारियों को TCK प्रदान करना जारी रखें, लेकिन OCTLA लाइसेंस को भी अपडेट करें ताकि यह Java SE 7 को कवर करे। बाद वाला ओपन सोर्स कार्यान्वयनकर्ताओं को अपने कार्यान्वयन को सत्यापित करने के लिए TCK तक पहुंच प्रदान करता है ...

आधिकारिक तौर पर सत्यापित, परीक्षण, लाइसेंस और अनुपालन कोड जारी करने के लिए, ऊपर के फैसले का मतलब ओपन जेडीके कोड में डालने का बहुत प्रयास है। यदि आप जोड़ते हैं कि यह सहमत सार्वजनिक कार्यक्रम के बाद जारी किया जाना है, तो यह स्पष्ट हो जाता है कि इस तरह का प्रयास उसी तरह होगा जैसा पहले "पारंपरिक" सन / ओरेकल जावा रिलीज में किया गया था।

यह केवल ओपन और ओरेकल JDK कोड बेस को यथासंभव बंद रखने के लिए उचित बनाता है: अन्यथा, विकास के दोहराव और टीसीके के साथ दोनों परियोजनाओं के अनुपालन के लिए प्रतिबंधात्मक रूप से चुनौतीपूर्ण हो सकता है।

यह ओपन JDK का उपयोग करने के निर्णय की तरह लगता है एक संदर्भ कार्यान्वयन ने इसे Oracle के सबसे अच्छे हित में बनाया है, जो JDK 7 की रिलीज़ तक - ओपन JDK के साथ सिंक में यथासंभव अपने JDK को बंद रखने के लिए है।

यह समझने के लिए कि ओरेकल को उल्लेखित सिंक को आगे रखने के लिए क्या प्रेरित कर सकता है, JDK 7 अपडेट रिलीज़ के साथ, कोई भी ओपन JDK 8 प्रोजेक्ट पर एक नज़र रखेगा , जिसका उद्देश्य ओपन JDK 7 के समान ही बहुत कुछ बताया गया है:

इस परियोजना का लक्ष्य जावा एसई 8 प्लेटफॉर्म के एक ओपन-सोर्स संदर्भ कार्यान्वयन का उत्पादन करना है, जिसे जावा समुदाय प्रक्रिया में जेएसआर 337 द्वारा परिभाषित किया जाना है ।

जैसा कि JDK 7 के संदर्भ कार्यान्वयन के बारे में ऊपर बताया गया था, उसी तर्क के लिए, यह फिर से, Oracle के सर्वोत्तम हित में दोनों JDK के अपडेट को यथासंभव सिंक में रखने के लिए है।

टीसीडी के अनुपालन में अपनी खुद की रिहाई लाने के लिए आवश्यक प्रयासों के दोहराव के कारण, इन जेडीके के बीच अब और अधिक अंतर होगा, ओरेकल के लिए जावा एसई 8 को रिलीज करना कठिन होगा। विपरीत भी सही है, यानी दोनों परियोजनाएं अब करीब हो रही हैं, दोनों जावा 8 कार्यान्वयन को जारी करने के लिए कम प्रयास की आवश्यकता होगी।


क्या कभी ऐसा हुआ कि आप एक ही सॉफ्टवेयर के दो अलग-अलग संस्करणों में, अलग-अलग क्लाइंट्स पर लक्षित हो? यदि हाँ, तो आप संभवतः उन दोनों को यथासंभव पास रखने की इच्छा को याद करते हैं, और जब आप सिंक से बाहर थे, तो आपको जो असुविधाएँ हुई थीं। ओपन और ओरेकल JDKs के साथ, यह बहुत ज्यादा है, केवल एक बड़े पैमाने पर।


क्या मार्च 2015 के बाद JDK 7 अपडेट परियोजना को Oracle से पैच प्राप्त होगा, अर्थात Oracle से Java 7 के लिए मुफ्त अपडेट समाप्त होने के बाद?
मोनिका को पुनः स्थापित करें - एम। श्रोडर

@ मार्टिनश्रॉड को ओरेकल के दिमाग को पढ़े बिना बताना मुश्किल है। यह शायद बहुत कुछ इस बात पर निर्भर करता है कि जावा 8 तब तक आधिकारिक / समर्थित संस्करण होगा
gnat

4

लगभग सभी बग फिक्स सीधे OpenJDK प्रोजेक्ट के माध्यम से और फिर डाउनस्ट्रीम JVM विक्रेताओं (Oracle, अज़ुल, रेडहेड आदि) में जाते हैं।

एक अपवाद यह है कि कुछ सुरक्षा पैच डाउनस्ट्रीम संस्करणों में (विशेष रूप से ओरेकल में) तय किए जाते हैं, इससे पहले कि चुपचाप इसे OpenJDK में वापस भेज दिया जाए। यह खुले स्रोत परियोजना में भेद्यता को सार्वजनिक करने से पहले विक्रेताओं को सुरक्षा फिक्स के साथ दुनिया के अधिकांश हिस्सों को अपग्रेड करने की अनुमति देता है।

कुछ विक्रेताओं ने भी अपने परिवर्तनों को OpenJDK में वापस धकेलने के लिए नहीं चुना है। उदाहरण के लिए Google और Twitter दोनों ने OpenJDK संस्करणों को संशोधित किया है जो वे बग फिक्स और फीचर्स के साथ आंतरिक रूप से उपयोग करते हैं जो मुख्य OpenJDK प्रोजेक्ट में वापस नहीं गए हैं।

HTH

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