Oracle JDK और OpenJDK के बीच अंतर


700

नोट: यह प्रश्न 2014 से है। जावा 11 के रूप में OpenJDK और Oracle JDK अभिसरण कर रहे हैं।

Oracle और OpenJDK के बीच कोई महत्वपूर्ण अंतर हैं?

उदाहरण के लिए, कचरा संग्रहण और अन्य जेवीएम पैरामीटर समान हैं?

क्या जीसी दोनों के बीच अलग-अलग काम करता है?


3
यह भी प्रासंगिक हो सकता है यदि आप Oracle से OpenJDK पर जाने की योजना बना रहे हैं क्योंकि Oracle अब मुक्त नहीं है। Developers.redhat.com/blog/2018/11/05/…
लियो उफिमेत्सेव

जवाबों:


338

OpenJDK और Oracle JDK दोनों ही वर्तमान में Oracle द्वारा ही बनाए और बनाए गए हैं।

OpenJDK और Oracle JDK एक ही जावा विनिर्देशन के कार्यान्वयन हैं जो TCK (जावा प्रौद्योगिकी प्रमाणन किट) से गुजरे हैं।

JDK के अधिकांश विक्रेताओं को OpenJDK के शीर्ष पर लिखा जाता है, जिसमें कुछ ट्वीक किए जाते हैं [ज्यादातर लाइसेंस प्राप्त मालिकाना भागों को बदलने के लिए / अधिक उच्च-प्रदर्शन वस्तुओं के साथ प्रतिस्थापित करने के लिए जो केवल विशिष्ट OS पर काम करते हैं] TCK संगतता को तोड़ने के बिना घटक।

कई विक्रेताओं ने जावा विनिर्देश लागू किया और टीसीके पास किया। उदाहरण के लिए, IBM J9, Azul Zulu, Azul Zing, और Oracle JDK।

लगभग हर मौजूदा JDK OpenJDK से लिया गया है।

जैसा कि कई ने सुझाव दिया है, लाइसेंसिंग जेडीके के बीच एक बदलाव है।

JDK 11 के साथ शुरू करने से Oracle JDK / Java SE को लंबे समय तक सपोर्ट करने के लिए अब कमर्शियल लाइसेंस की आवश्यकता होगी। अब आपको ध्यान देना चाहिए कि जिस JDK को आप Oracle JDK के रूप में स्थापित कर रहे हैं, बिना सदस्यता के काम करना बंद कर सकता है। स्रोत

Ref: जावा आभासी मशीनों की सूची


13
तो आपका कहना है कि Openjdk अन्य सभी jdks के लिए आधारभूत है कि वे इसे कॉपी करते हैं और फिर इसे अपने स्वयं के विनिर्देशों के बाद ट्विक करते हैं?
कार्ल मॉरिसन

24
मुझे पार्टी के लिए देर हो रही है, लेकिन मैं वैसे भी पूछूंगा। क्या jdk उस मेज पर लाता है जो Openjdk नहीं करता है? इन सभी उत्तरों से ओपजंक ध्वनि उत्पन्न होती है जैसे कि यह हर तरह से या इसके बराबर है, लेकिन यदि ऐसा है तो ओरेकल भी jkk को बनाए रखने से परेशान क्यों है?
केफ्का

@ कार्ल मॉरिसन जहाँ तक मुझे पता है, .. हर कोई जेवीएम कल्पना को लागू करने के लिए उस तरह से ही कर रहा है .. लेकिन कोई स्पष्ट नियम नहीं है कि किसी को उस तरह से पालन करना होगा ...
वेंकटेश्वर राव

13
@ Mella OpenJDK <= OracleJDK उदाहरण के लिए, Oracle JDK में कुछ विश्वसनीय कुंजियाँ हैं, जो OpenJDK में नहीं थीं (अब एक दिन लोग इस अंतर को भरने के लिए उन्हें आयात कर रहे हैं) Oracle JDK के पास बहुत से लाइब्रेरियाँ हैं जो प्रतिपादन को गति देने के लिए स्वामित्व हैं। .. (जो कभी सर्वर ऐप कर रहे हैं, उनके लिए अप्रासंगिक हो सकता है) Oracle JDK में एप्लेट प्लगइन (कार्य के ऊपर एक ही कारण) Oracle JDK बगफिक्स / हॉटफिक्स को वितरित किया जाएगा और Oracle द्वारा ठीक से हैंडल किया जाएगा जहां OpenJDK के रूप में यह सुनिश्चित करने के लिए बहुत कम तकनीकी है पैच लगाए जाते हैं और उनका क्या संघर्ष होता है
वेंकटेश्वर राव

जावा के लिए नए रिलीज मॉडल के साथ ध्यान दें, ओरेकल की योजना दोनों जेडीके के बीच के अंतर को कम करने की है। क्या ओरेकल डेवलपर्स के अलावा jdk को खोलने के लिए अन्य ओपन सोर्स योगदानकर्ता हैं? यह समझना है कि क्या पिछले संस्करण के नवीनतम संस्करण से फिक्स को सपोर्ट करने के लिए पर्याप्त समर्थन होगा। कोई विचार?
एंडी डफ्रेसने

329

के लिए जावा 7 , महत्वपूर्ण कुछ भी नहीं है। OpenJDK परियोजना ज्यादातर सन द्वारा दान किए गए हॉटस्पॉट स्रोत कोड पर आधारित है।

इसके अलावा, OpenJDK को जावा 7 के लिए संदर्भ कार्यान्वयन के लिए चुना गया था और इसे ओरेकल इंजीनियरों द्वारा बनाए रखा गया है।

JVM, JDK, JRE और OpenJDK के बीच अंतर पर 2012 से अधिक विस्तृत उत्तर है , जो एक Oracle ब्लॉग पोस्ट से लिंक है :

प्रश्न : OpenJDK रिपॉजिटरी में पाए जाने वाले सोर्स कोड और ओरेकल जेडडीके बनाने के लिए आपके द्वारा उपयोग किए जाने वाले कोड में क्या अंतर है?

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


42
इसके अलावा लाइसेंस के अंतर हैं।
mcoolive

9
धन्यवाद मुझे बेहतर उत्तर मिला। stackoverflow.com/questions/17360011/…
astroanu

9
एआरएम पर कम से कम उन दोनों को प्रदर्शन में काफी अलग लगता है। ऐसा क्यों हो रहा है, इस पर मुझे कुछ रूपरेखा तैयार करनी होगी, लेकिन व्यक्तिपरक अंतर "ओरेकल जेडडीके ठीक है" और "ओपनजेडके पूरी तरह से अनुपयोगी है"।
12

1
@dualed फिर भी android 7 से शुरू होने वाले Openjdk पर जा रहा है। लगता है कि वे महत्वपूर्ण सुधारों की तैयारी कर रहे हैं। वेंचरबीट.कॉम २०१५/२०१२
जॉनी डो

1
@JohnnyDoe चलो आशा करते हैं कि अगर Google OpenJDK पर जा रहा है, तो वे प्रदर्शन पैच के साथ अपस्ट्रीम प्रदान करेंगे ताकि यह एंड्रॉइड के बाहर एआरएम पर भी अच्छी तरह से चल सके!
दोहरी

95

आगे बढ़ने वाला एक महत्वपूर्ण अंतर रिलीज शेड्यूल और समर्थन नीति है।

OpenJDK

OpenJDK में हर 6 महीने में एक फीचर रिलीज़ होगा जो केवल अगले फीचर रिलीज़ होने तक समर्थित है। यह अनिवार्य रूप से डेवलपर्स को लक्षित रिलीज की एक सतत स्ट्रीम है।

ओरेकल JDK

ओरेकल JDK एक उद्यम दर्शकों की ओर अधिक लक्षित होता है जो स्थिरता को महत्व देता है। यह OpenJDK रिलीज़ में से एक पर आधारित है लेकिन फिर इसे दीर्घकालिक समर्थन (LTS) दिया जाता है। ओरेकल JDK ने हर 3 साल में योजना बनाई है।

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

स्रोत: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events


3
जावा रिलीज के 6 महीने बाद अपडेट पाने के लिए लॉन्ग टर्म रिलीज की जरूरत होती है। शॉर्ट टर्म रिलीज की तुलना में लंबी अवधि के रिलीज का क्या महत्व है? क्या JDK 9/10 की तरह अल्पकालिक रिलीज के लिए ओरेकल से वाणिज्यिक समर्थन नहीं है?
एंडी डफ्रेसने

@AndyDufresne आपको क्यों लगता है कि आपको केवल 6 महीने बाद समर्थन के लिए भुगतान करना होगा? मेरी समझ यह है कि समयरेखा TBD है। 6 महीने का समय कम लगता है, हालांकि ... मुझे संदेह है कि हम 5 साल के लिए सार्वजनिक अपडेट की उम्मीद कर सकते हैं, जैसे कि जावा 8 मिल रहा है, लेकिन मुझे आश्चर्य नहीं होगा अगर 2 या 3 साल के लिए सार्वजनिक अपडेट थे। संदर्भ - यह प्रति: oracle.com/technetwork/java/eol-135779.html है
गिल्बर्ट एरेनास डैगर

1
ओरेकल लिंक का उल्लेख है "उदाहरण के लिए, ओरेकल जेडडीके 11 (18.9 एलटीएस) के लिए एलटीएस रिलीज कम से कम 5 वर्षों के लिए समर्थित होगी जैसा कि ओरेकल लाइफटाइम सपोर्ट पॉलिसी में वर्णित है"। नीति के समर्थन के 3 स्तर हैं उनमें से कोई भी मुक्त नहीं दिखता है। इसके अलावा, मैं यहाँ azul सीटीओ की टिप्पणी को देखने के बाद इसका उल्लेख करता हूं - blog.takipi.com/java-11-will-include-more-than-just-features/… । इस नई रिलीज रणनीति का मुख्य लक्ष्य पुरानी रिलीज को बनाए रखने में समय खर्च नहीं करना है। यदि समर्थन मुफ्त होता तो मॉडल वैसा ही होता जैसा कि अब तक है।
एंडी डफ्रेसने

38

के लिए जावा 8 , ओरेकल JDK बनाम OpenJDK महत्वपूर्ण अंतर लेने के लिए अपनी:

  • OpenJDK ओरेकल और खुले जावा समुदाय के योगदान के साथ जावा मानक संस्करण मंच का एक खुला स्रोत कार्यान्वयन है।

  • OpenJDK को लाइसेंस GPL v2 के तहत जारी किया गया है, जिसमें Oracle JDK को Oracle बाइनरी कोड लाइसेंस समझौते के तहत लाइसेंस दिया गया है।

  • दरअसल, Oracle JDK की निर्माण प्रक्रिया OpenJDK स्रोत कोड से बनती है। इसलिए Oracle JDK और OpenJDK के बीच कोई बड़ा तकनीकी अंतर नहीं है। बेस कोड के अलावा, ओरेकल जेडडीके में ओरेकल के जावा प्लगइन और जावा वेबस्टार्ट के कार्यान्वयन शामिल हैं। इसमें क्रमशः थर्ड-पार्टी क्लोज्ड सोर्स और ओपन सोर्स कंपोनेंट्स जैसे ग्राफिक्स रेस्टराइज़र और राइनो भी शामिल हैं। OpenJDK फ़ॉन्ट रेंडरर और Oracle JDK फ़्लाइट रिकॉर्डर Oracle JDK और OpenJDK के बीच ध्यान देने योग्य प्रमुख अंतर हैं।

  • रॉकिट ओरेकल की JVM थी और Java SE 7 से, हॉटस्पॉट और JRockit एक सिंगल JVM में विलीन हो गए। इसलिए अब हमारे पास केवल विलय किए गए हॉटस्पॉट जेवीएम उपलब्ध हैं।
  • ऐसे उदाहरण हैं जहां लोग दावा करते हैं कि ओपेन जेडडीके चलाते समय उनके पास मुद्दे थे और ओरेकल जेडडीके पर स्विच किए जाने पर वे हल हो गए।
  • ट्विटर की अपनी जेडीके है।
  • Minecraft जैसे सॉफ्टवेयर से उम्मीद है कि Oracle JDK का इस्तेमाल किया जाएगा। वास्तव में, चेतावनी देता है।

मतभेदों की पूरी सूची के लिए कृपया स्रोत लेख देखें: Oracle JDK बनाम OpenJDK और Java JDK विकास प्रक्रिया


4
Android Studio के लिए, यह अब सत्य नहीं है: नवीनतम OpenJDK की एक प्रति Android Studio 2.2 और उच्चतर के साथ बंडल में आती है, और यह JDK संस्करण है जो हम आपको अपने Android प्रोजेक्ट्स के लिए उपयोग करने की सलाह देते हैं। स्रोत: developer.android.com/studio/intro/studio-config#jdk
MKesper

“Minecraft की तरह सॉफ्टवेयर Oracle JDK इस्तेमाल करने की उम्मीद है। वास्तव में, चेतावनी देता है। ” दरअसल, उबंटू में, Mojang का आधिकारिक .deb इंस्टॉलर लॉन्चर को इंस्टॉल करते समय OpenJDK में खींचता है।
मोइलदोइर

29

Oracle और OpenJDK JVM समान हैं और इनमें GC सुविधाएँ (नवीनतम संस्करण 10+ के समान) हैं। ओरेकल को ओपनजेडकेवी जेवीएम का प्रबंधन करने से पहले ठोस मतभेद थे जिन्होंने उस पुराने ओपनजेक जेवीएम को कई वातावरणों में लगभग अनुपयोगी बना दिया था। जेवीएम अब वही हैं।

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

diff --brief -r openjdk oraclejdk

महत्वपूर्ण रूप से निम्नलिखित फाइलें लिनक्स JDK पर दूसरों के एक समूह के अलावा गायब हैं (इसलिए यदि आपने 'दावा' किया कि कोड OpenJDK पर काम नहीं करता है और OracleJDK पर ऐसा किया है जब आप javafx का उपयोग कर रहे थे तब आप सही थे):

Only in jdk-10.0.1/bin: javapackager
Only in jdk-10.0.1/bin: javaws
Only in jdk-10.0.1/bin: jcontrol
Only in jdk-10.0.1/bin: jmc
Only in jdk-10.0.1/bin: jweblauncher
Only in jdk-10.0.1/lib: ant-javafx.jar
Only in jdk-10.0.1/lib: deploy
Only in jdk-10.0.1/lib: deploy.jar
Only in jdk-10.0.1/lib: desktop
Only in jdk-10.0.1/lib: fontconfig.bfc
Only in jdk-10.0.1/lib: fontconfig.properties.src
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
Only in jdk-10.0.1/lib: fonts
Only in jdk-10.0.1/lib: javafx.properties
Only in jdk-10.0.1/lib: javafx-swt.jar
Only in jdk-10.0.1/lib: java.jnlp.jar
Only in jdk-10.0.1/lib: javaws.jar
Only in jdk-10.0.1/lib: jdk.deploy.jar
Only in jdk-10.0.1/lib: jdk.javaws.jar
Only in jdk-10.0.1/lib: jdk.plugin.jar
Only in jdk-10.0.1/lib: jfr
Only in jdk-10.0.1/lib: libavplugin-53.so
Only in jdk-10.0.1/lib: libavplugin-54.so
Only in jdk-10.0.1/lib: libavplugin-55.so
Only in jdk-10.0.1/lib: libavplugin-56.so
Only in jdk-10.0.1/lib: libavplugin-57.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
Only in jdk-10.0.1/lib: libbci.so
Only in jdk-10.0.1/lib: libcmm.so
Only in jdk-10.0.1/lib: libdecora_sse.so
Only in jdk-10.0.1/lib: libdeploy.so
Only in jdk-10.0.1/lib: libfxplugins.so
Only in jdk-10.0.1/lib: libglassgtk2.so
Only in jdk-10.0.1/lib: libglassgtk3.so
Only in jdk-10.0.1/lib: libglass.so
Only in jdk-10.0.1/lib: libgstreamer-lite.so
Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
Only in jdk-10.0.1/lib: libjavafx_font_pango.so
Only in jdk-10.0.1/lib: libjavafx_font.so
Only in jdk-10.0.1/lib: libjavafx_iio.so
Only in jdk-10.0.1/lib: libjfxmedia.so
Only in jdk-10.0.1/lib: libjfxwebkit.so
Only in jdk-10.0.1/lib: libnpjp2.so
Only in jdk-10.0.1/lib: libprism_common.so
Only in jdk-10.0.1/lib: libprism_es2.so
Only in jdk-10.0.1/lib: libprism_sw.so
Only in jdk-10.0.1/lib: librm.so
Only in jdk-10.0.1/lib: libt2k.so
Only in jdk-10.0.1/lib: locale
Only in jdk-10.0.1/lib: missioncontrol
Only in jdk-10.0.1/lib: oblique-fonts
Only in jdk-10.0.1/lib: plugin.jar
Only in jdk-10.0.1/lib: plugin-legacy.jar
Only in jdk-10.0.1/lib/security: blacklist
Only in jdk-10.0.1/lib/security: public_suffix_list.dat
Only in jdk-10.0.1/lib/security: trusted.libraries
Only in openjdk-10.0.1: man`

5
वास्तविक अंतरों को इंगित करने के लिए धन्यवाद : कोड नहीं चलना एक वास्तविक जीवन का मामला है। आपने अपना आधार कहां से बनाया diff?
मैथ्यू

19

ओरेकल ब्लॉग के अनुसार, Oracle JDK जावा 11 और बाद के लिए जारी करता है

जावा 11 से शुरू होकर, ओरेकल जेडपीके रिलीज़ को ओपन सोर्स जीएनयू जनरल पब्लिक लाइसेंस v2 के तहत प्रदान करेगा , क्लासपैथ अपवाद (GPLv2 + CPE) के साथ , और Oracle उत्पाद या सेवा के हिस्से के रूप में Oracle JDK का उपयोग करने वालों के लिए एक वाणिज्यिक लाइसेंस के तहत, या जो ओपन सोर्स सॉफ्टवेयर का उपयोग नहीं करना चाहते हैं। एक ओपन सोर्स लाइसेंस और एक वाणिज्यिक लाइसेंस का उपयोग करने का यह संयोजन ऐतिहासिक " बीसीएल " लाइसेंस की जगह लेता है , जिसमें मुफ्त और भुगतान किए गए वाणिज्यिक शब्द थे।

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

BCL से GPL तक

ओरेकल जावा SE प्रौद्योगिकियों ( "बीसीएल") के लिए बाइनरी कोड लाइसेंस एक अच्छी तरह से अधिक एक दशक के लिए Oracle जावा SE प्रौद्योगिकियों के लिए प्राथमिक लाइसेंस दिया गया है। बीसीएल परमिट कुछ शर्तों के तहत लाइसेंस फीस के बिना उपयोग करता है। आगे बढ़ने वाली चीजों को सरल बनाने के लिए, ओरेकल ने एक ही लाइसेंस मॉडल का उपयोग करते हुए Java 9 के रूप में OpenJDK लाइसेंस प्राप्त ओपन सोर्स लाइसेंस प्रदान करना शुरू कर दिया । यदि आपको ओरेकल जावा एसई बायनेरी मुफ्त में प्राप्त करने के लिए उपयोग किया जाता है, तो आप बस ओरेकल के ओपनजेडके बिल्ड के साथ jdk.java.net पर उपलब्ध कर सकते हैं । यदि आपको ओरेकल जावा एसई बायनेरी को एक वाणिज्यिक उत्पाद या सेवा से ओरेकल के हिस्से के रूप में प्राप्त करने के लिए उपयोग किया जाता है, तो आप माई ओरेकल सपोर्ट (एमओएस), और अन्य स्थानों के माध्यम से ओरेकल जेडडीके रिलीज प्राप्त करना जारी रख सकते हैं ।

कार्यात्मक रूप से समान और विनिमेय ...

ओरेकल के बीसीएल-लाइसेंस वाले जेडीके में ऐतिहासिक रूप से "वाणिज्यिक विशेषताएं" शामिल थीं जो ओपनजेडके बिल्ड में उपलब्ध नहीं थीं। जैसा कि वादा किया गया था , हालांकि, पिछले एक साल में ओरेकल ने ओपनजेडकेके समुदाय में इन सुविधाओं का योगदान दिया है, जिनमें शामिल हैं:

जावा 11 से आगे, इसलिए, Oracle JDK बिल्ड और OpenJDK बिल्ड अनिवार्य रूप से समान होंगे।

... अभी तक कुछ कॉस्मेटिक और पैकेजिंग अंतर के साथ

मतभेद, कुछ जानबूझकर और कॉस्मेटिक, और कुछ बस इसलिए रहते हैं क्योंकि OpenJDK योगदानकर्ताओं के साथ चर्चा करने के लिए अधिक समय चेतावनी दी जाती है।

  • Oracle JDK 11 एक चेतावनी का उपयोग करते समय -XX का उपयोग करता है: + अनलॉक कॉमर्शियल फीचर्स विकल्प, जबकि OpenJDK में इस विकल्प के परिणामस्वरूप त्रुटि उत्पन्न होती है। यह विकल्प कभी भी OpenJDK का हिस्सा नहीं था और अब इसे जोड़ने का कोई मतलब नहीं होगा, क्योंकि OpenJDK में कोई वाणिज्यिक विशेषताएं नहीं हैं। यह अंतर Oracle JDK 10 के उपयोगकर्ताओं और इससे पहले रिलीज़ होने वाले Oracle JDK 11 और बाद के उपयोगकर्ताओं के लिए आसान बनाने के लिए बना हुआ है।
  • Oracle JDK 11 को “ एडवांस मैनेजमेंट कंसोल ” टूल में उपयोग लॉग डेटा प्रदान करने के लिए कॉन्फ़िगर किया जा सकता है , जो एक अलग वाणिज्यिक ओरेकल उत्पाद है। हम अन्य OpenJDK योगदानकर्ताओं के साथ चर्चा करेंगे कि भविष्य में रिलीज़ में OpenJDK में ऐसे उपयोग डेटा कैसे उपयोगी हो सकते हैं। यह अंतर मुख्य रूप से ओरेकल ग्राहकों को लगातार अनुभव प्रदान करने के लिए रहता है जब तक कि ऐसे निर्णय नहीं किए जाते हैं।
  • जावेद -रेलिस कमांड जावा 9 और जावा 10 लक्ष्यों के लिए अलग तरह से व्यवहार करता है, क्योंकि उन रिलीज में ओरेकल जेडडीके में कुछ अतिरिक्त मॉड्यूल शामिल थे जो कि ओपनजेडकेके रिलीज के अनुरूप नहीं थे:
    • javafx.base
    • javafx.controls
    • javafx.fxml
    • javafx.graphics
    • javafx.media
    • javafx.web
    • java.jnlp
    • jdk.jfr
    • jdk.management.cmm
    • jdk.management.jfr
    • jdk.management.resource
    • jdk.packager.services
    • jdk.snmp

विशिष्ट प्रकार की विरासत के उपयोग के लिए एक सुसंगत अनुभव प्रदान करने के लिए यह अंतर बना रहता है। ये मॉड्यूल या तो अब OpenJFX के हिस्से के रूप में अलग-अलग उपलब्ध हैं, अब OpenJDK और Oracle JDK दोनों में हैं क्योंकि वे व्यावसायिक विशेषताएं थीं, जो Oracle ने OpenJDK (जैसे, फ्लाइट रिकॉर्डर) में योगदान दिया था, या Oracle JDK 11 (जैसे, JNLP) से हटा दिया गया था ।

  • Java --version और java -fullversion कमांड्स का आउटपुट Oracle JDK को OpenJDK बिल्ड्स से अलग करेगा, ताकि सपोर्ट टीम मौजूद किसी भी समस्या का निदान कर सके। विशेष रूप से, एक Oracle JDK 11 के साथ जावा --version का निर्माण निम्न में होता है:

जावा ११ २०१ 201-०९ -२५

जावा (TM) एसई रनटाइम एनवायरनमेंट 18.9 (बिल्ड 11 + 28)

जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम 18.9 (बिल्ड 11 + 28, मिश्रित मोड)

और एक OpenJDK 11 बिल्ड के लिए:

Openjdk संस्करण "11" 2018-09-25

ओपनजेडके रनटाइम एनवायरनमेंट 18.9 (बिल्ड 11 + 28)

OpenJDK 64-बिट सर्वर VM 18.9 (बिल्ड 11 + 28, मिश्रित मोड)

  • ऑरेकल जेडडीके को हमेशा ज्ञात प्रमाण पत्र पर हस्ताक्षर करने के लिए तीसरे पक्ष के क्रिप्टोग्राफिक प्रदाताओं की आवश्यकता होती है। OpenJDK में क्रिप्टोग्राफ़ी ढांचे में एक खुला क्रिप्टोग्राफ़िक इंटरफ़ेस है, जिसका अर्थ है कि यह प्रतिबंधित नहीं है कि कौन से प्रदाता का उपयोग किया जा सकता है। Oracle JDK 11 की आवश्यकता जारी रहेगी एक वैध हस्ताक्षर की बनी , और Oracle OpenJDK बिल्ड किसी वैध हस्ताक्षर या अहस्ताक्षरित तृतीय पक्ष क्रिप्टो प्रदाता के उपयोग की अनुमति देता रहेगा।
  • ओरेकल JDK 11 विरासत डेस्कटॉप उपयोगों के अनुरूप अनुभव के लिए इंस्टॉलर, ब्रांडिंग और JRE पैकेजिंग को शामिल करना जारी रखेगा। Oracle OpenJDK बिल्ड वर्तमान में zip और tar.gz फ़ाइलों के रूप में उपलब्ध है, जबकि वैकल्पिक वितरण स्वरूपों पर विचार किया जा रहा है।

10

Oracle JDK 11 और OpenJDK 11 के बीच कुछ शेष कॉस्मेटिक और पैकेजिंग अंतर की एक सूची इस ब्लॉग पोस्ट में पाई जा सकती है:

https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

संक्षेप में:

  • Oracle JDK 11 एक चेतावनी का उपयोग करते समय -XX का उपयोग करता है: + अनलॉक वाणिज्यिक विज्ञापन विकल्प,
  • इसे "उन्नत प्रबंधन कंसोल" टूल में उपयोग लॉग डेटा प्रदान करने के लिए कॉन्फ़िगर किया जा सकता है,
  • यह हमेशा तीसरे पक्ष के क्रिप्टोग्राफिक प्रदाताओं को एक ज्ञात प्रमाण पत्र पर हस्ताक्षर करने की आवश्यकता होती है,
  • यह इंस्टॉलर, ब्रांडिंग और JRE पैकेजिंग को शामिल करना जारी रखेगा,
  • जबकि javac --release कमांड Java 9 और Java 10 टारगेट के लिए थोड़ा अलग तरह से व्यवहार करती है, और
  • java --version और java -fullversion कमांड्स का आउटपुट Oracle JDK को OpenJDD बिल्ड से अलग करेगा।

2
मैंने देखा कि आपके अधिकांश उत्तरों में उनके हस्ताक्षर थे। मैंने उन्हें संपादित किया है। कृपया पढ़ें क्या टैगलाइन और हस्ताक्षर अस्वीकृत हैं? और stackoverflow.com/help/behavior (विशेष रूप से अनुभाग "हस्ताक्षर, टैगलाइन या अभिवादन का उपयोग न करें।")
मार्क रोटेटेवेल

7
  1. ओरेकल हर तीन साल में रिलीज वितरित करेगा, जबकि ओपनजेडके हर छह महीने में जारी किया जाएगा।
  2. ओरेकल अपने रिलीज के लिए दीर्घकालिक समर्थन प्रदान करता है। दूसरी ओर, OpenJDK केवल रिलीज़ के परिवर्तन का समर्थन करता है जब तक कि अगला संस्करण जारी नहीं किया जाता है।
  3. Oracle JDK को Oracle बाइनरी कोड लाइसेंस समझौते के तहत लाइसेंस दिया गया था, जबकि OpenJDK में GNU जनरल पब्लिक लाइसेंस (GNU GPL) संस्करण 2 एक लिंकिंग अपवाद है।
  4. ओरेकल प्रोडक्ट में फ्लाइट रिकॉर्डर, जावा मिशन कंट्रोल और एप्लिकेशन क्लास-डेटा शेयरिंग फीचर हैं, जबकि ओपनजेडके में फॉन्ट रेंडरर फीचर है। इसके अलावा, ओरेकल में अधिक कचरा संग्रह विकल्प और बेहतर रेंडरर्स हैं,
  5. Oracle JDK पूरी तरह से Oracle Corporation द्वारा विकसित किया गया है जबकि OpenJDK Oracle, OpenJDK और जावा समुदाय द्वारा विकसित किया गया है। हालाँकि, Red Hat, Azul Systems, IBM, Apple Inc., SAP AG जैसी शीर्षस्थ कंपनियाँ भी इसके विकास में सक्रिय भाग लेती हैं।

जावा 11 से एक बड़े बदलाव की ओर

ओरेकल एक खुले स्रोत और वाणिज्यिक लाइसेंस के संयोजन के साथ अपने ऐतिहासिक "बीसीएल" लाइसेंस को बदल देगा

  • जावा 11 के लिए ओरेकल की किट -XX का उपयोग करते समय एक चेतावनी का उत्सर्जन करती है: + अनलॉक कॉमर्शियल फीचर्स विकल्प, जबकि ओपनजेडके में, इस विकल्प के परिणामस्वरूप त्रुटि होती है
  • Oracle JDK "उन्नत प्रबंधन कंसोल" टूल को उपयोग लॉग डेटा प्रदान करने के लिए एक कॉन्फ़िगरेशन प्रदान करता है
  • ओरेकल को हमेशा ज्ञात प्रमाण पत्र पर हस्ताक्षर करने के लिए तीसरे पक्ष के क्रिप्टोग्राफ़िक प्रदाताओं की आवश्यकता होती है, जबकि ओपनजेडके में क्रिप्टोग्राफी ढांचे में एक खुला क्रिप्टोग्राफ़िक इंटरफ़ेस है, जिसका अर्थ है कि कोई प्रतिबंध नहीं है जिसके तहत प्रदाताओं का उपयोग किया जा सकता है
  • Oracle JDK 11 में इंस्टालर, ब्रांडिंग और JRE पैकेजिंग शामिल रहेगी, जबकि OpenJDK बिल्ड वर्तमान में zip और tar.gz फ़ाइलों के रूप में उपलब्ध है
  • जावा के रिलीज़ में कुछ अतिरिक्त मॉड्यूल की उपस्थिति के कारण जावा-बैरल कमांड जावा 9 और जावा 10 लक्ष्यों के लिए अलग तरह से व्यवहार करता है।
  • Java -version और java -fullversion कमांड के आउटपुट से OpenJDK बिल्ड में Oracle के अंतर को अलग किया जाएगा


अपडेट: २५-अगस्त -२०१ ९



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

अधिक विवरण के लिए oracle-vs-openjdk



5

स्पष्ट लाइसेंसिंग अंतर के अलावा, OpenJDK और OracleJDK 11 के बीच प्रमुख अंतर स्थिरता और प्रदर्शन अपडेट हैं।

स्रोत: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385

हर 6 महीने में दो कोडबेस सिंक में होंगे। लेकिन 6 महीने की खिड़की के दौरान ओपनजेडके केवल सुरक्षा अपडेट प्राप्त करेगा, जबकि ओरेकलजेडके अतिरिक्त स्थिरता और प्रदर्शन अपडेट प्राप्त करेगा।

यह देखते हुए कि अपडेट रिलीज़ केवल OpenJDK और OracleJDK दोनों के लिए हर 3 महीने में होती है, इसका मतलब है कि आप अगले महीने जारी होने तक अधिकतम 3 महीने के फ़िक्सेस को याद कर रहे हैं। हालांकि, यदि आप एलटीएस रिलीज से चिपके रहना चुनते हैं तो एक वाणिज्यिक लाइसेंस अधिक समझ में आने लगता है।


3

जावा 8 के लिए भी एएमआईएस प्रौद्योगिकी ब्लॉग द्वारा विभिन्न जेवीएम पर होस्ट किए जा रहे प्रतिक्रियाशील (गैर-अवरोधक) स्प्रिंग बूट रीस्ट एप्लिकेशन के लिए एक दिलचस्प प्रदर्शन बेंचमार्क नवंबर 2018 में प्रकाशित किया गया है, जो दिखा रहा है कि अन्य मतभेदों के बीच:

  • OpenJDK में OracleJDK की तुलना में अधिक CPU उपयोग है,
  • OpenJDK में OracleJDK की तुलना में थोड़ा कम प्रतिक्रिया समय है,
  • OpenJDK में OracleJDK से अधिक मेमोरी उपयोग है,

जानकारी के लिए कृपया स्रोत लेख देखें।

बेशक YMMV, यह बेंचमार्क में से एक है।


3

मेरी समझ यह है कि Oracle JDK का उपयोग उत्पादन में नहीं किया जा सकता है, इसलिए मैं अपनी कंपनी के लिए जो वेब एप्लिकेशन बना रहा हूं, उसके लिए मैं कानूनी रूप से (भुगतान किए बिना) इसका उपयोग नहीं कर सकता। मुझे OpenJDK का उपयोग करना है। अगर मैं गलत हूं कृपया मुझे सही! से इस लेख

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

अद्यतन: मैं गलत हूँ। मैं Oracle JDK का मुफ्त में उपयोग कर सकता हूं, लेकिन 6 राज्य के बाद सुरक्षा अपडेट नहीं मिलेगा और हमें जोखिम उठाना पड़ेगा। उपरोक्त लिंक लेख अनुभाग को देखें "नई रिलीज़ ट्रेन का मेरी कंपनी के लिए क्या मतलब है?"।


यह अब जेडीके 13. के रूप में सच नहीं हो सकता है। ओरेकल के अनुसार, ओरेकल जेडडीके के लिए एक नया लाइसेंस है: "नया लाइसेंस कुछ उपयोगों को अनुमति देता है, जैसे कि व्यक्तिगत उपयोग और विकास उपयोग, बिना किसी लागत के - लेकिन अन्य उपयोगों के तहत अधिकृत है पूर्व के Oracle JDK लाइसेंस अब उपलब्ध नहीं हो सकते हैं "। Oracle.com/downloads/licenses/javase-license1.html देखें ।
अल फ्लानगन

बस जानना चाहता था, उत्पादन के उपयोग के लिए oracle jdk8u241 की वर्तमान रिलीज़ मुफ्त है?
नीरव शाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.