من أحد المترجمين: قرار ترجمة هذه المقالة لم يأت بنفسه - بل إنه إجراء ضروري :). نحن ، بصفتنا بائعين لإطار CUBA ، نتعامل مع هذه المشكلة بانتظام منتظم. بالطبع ، هذا موضوع مهم للغاية بالنسبة لنا ، واستجابة لآخر التغييرات ، قمنا برفع مقاعد الاختبار على كل من Oracle JDK و OpenJDK - يحمي هذا الإجراء حاليًا مستخدمينا من مصاريف الترخيص غير المتوقعة. ومع ذلك ، فإن هذا الموضوع لم يغلق بعد ، ونحن مستمرون في مراقبة تطور الأحداث عن كثب ، ومن يدري ، ربما يتعين علينا إضافة مواقف لبعض مجموعات JDK الأخرى العام المقبل ...
يأسر المقال تحت القطة بحقيقة أنه يصف بإيجاز المشاكل و JDKs الأكثر شعبية مع ميزاتها.
أعلنت شركة أوراكل مؤخرًا أن تطور جافا سيتغير بشكل كبير بفضل التحول إلى "Release Train" - طريقة جديدة لتطبيق الإصدارات. استتبع هذا التغيير أيضًا تغييرات من حيث دعم الإصدار ، والتي سيتم تنفيذها الآن ليس للجميع ، ولكن فقط لإصدارات LTS . أوضح مجتمع Java Champions الابتكارات التي يتم تقديمها ، وتتوفر وثيقة مفصلة على الإنترنت .
حتى مع هذا الخبر ، تبقى الأسئلة: ما هي إصدارات JDK المتوفرة حاليًا؟ هل ستكون حرة أم تجارية؟ قبل الإجابة على هذا السؤال ، من المهم فهم متطلبات JDK كمنتج. في الواقع ، هناك شفرة مصدر JDK واحدة فقط. هو هنا . يمكن لأي شخص استخدام التعليمات البرمجية المصدر لبناء التجميع الخاصة بهم ووضعها في مكان ما على الشبكة. ومع ذلك ، يوجد إجراء منفصل لإصدار الشهادات يجب إكماله حتى يتم اعتبار تجميع JDK صالحًا. يتم توفير الشهادة من خلال Java Community Process (JCP) ، التي توفر مجموعة توافق التكنولوجيا (TCK). إذا أنشأت مؤسسة مجموعة OpenJDK جديدة تلبي TCK ، فسيتم اعتبارها "Java SE متوافقة."
ضع في اعتبارك أنه لا يمكن تسمية التجميع "Java SE" إلا إذا حصلت شركة التجميع على ترخيص تجاري من Oracle. على سبيل المثال ، بناءات AdoptOpenJDK التي تتجاوز TCK ليست "Java SE" ، ولكنها "Java SE متوافقة." يجب أن يؤخذ أيضًا في الاعتبار أن الشهادة تعتمد الآن على "الإفراج المشروط" - لا يتم إرسال النتائج إلى JCP / Oracle للتحقق منها وتصنيفها. باختصار ، كل بائع يأخذ كود مصدر OpenJDK ويبني الإصدار يولد بنية JDK منفصلة أخرى.

لذلك ، دون مزيد من اللغط ، نوصيك بأن تتعرف على JDKs الجاهزة للاستخدام التالية:
أوراكل JDK
هذا هو المزود الرئيسي لـ Java 11 (الإصدار بالفعل). هذه هي النسخة التجارية مع الدعم المدفوع. يمكن تنزيله مجانًا واستخدامه فقط للتطوير. لا يمكنك استخدامه في الإنتاج دون دفع Oracle (لذا فإن هذا فخ بالنسبة للكثيرين غير المهتمين بالترخيص). تخطط Oracle لتوفير الدعم المدفوع حتى عام 2026 وما بعده. على عكس ما كان عليه من قبل ، فإن مجموعة Oracle JDK ليست "بأي حال من الأحوال" أفضل من OpenJDK (طالما أن كلاهما في نفس مستوى تصحيح الأمان).
أوراكل OpenJDK بناء
هناك إصدارات مجانية لا تحمل علامات تجارية من OpenJDK موزعة تحت رخصة GPL مع ملحق Classpath (مناسب للاستخدام التجاري). تتوفر إصدارات الإصدار هذه فقط لمدة 6 أشهر بعد الإصدار. من المتوقع أن تصدر Java 11 إصدار Java 11.0.0 وتصحيحي أمان ، 11.0.1 و 11.0.2. لمتابعة استخدام إصدار OpenJDK وتصحيحاته من Oracle ، يجب الترقية إلى Java 12 في موعد لا يتجاوز شهرًا بعد الإطلاق. يرجى ملاحظة أن الإجراء الخاص بتوفير تصحيحات الأمان يختلف عن الإجراء الخاص بتوفير الدعم ، والذي يتضمن الدفع مقابل معالجة تقارير الأخطاء.
AdoptOpenJDK
هذه أيضًا إصدارات OpenJDK مجانية وغير ذات علامات تجارية موزعة تحت GPL مع Classpath Extension ، على عكس بُنى أوراكل OpenJDK فقط ، ستدوم إصدارات البناء هذه لفترة أطول للإصدارات الرئيسية مثل Java 11. سيتم إصدار إصدارات Java 11 لمدة 4 سنوات ، سنة واحدة بعد الإصدار الرئيسي التالي. AdoptOpenJDK هو الموجهة نحو المجتمع. بينما تقوم الفرق الأخرى بإنشاء ونشر إصلاحات الأمان لمستودع OpenJDK الأصلي ، فإنها ستصدر تصميمات. أشار كل من IBM و Red Hat إلى أنهما يعتزمان إصدار مثل هذه التصحيحات.
AdoptOpenJDK OpenJ9
بالإضافة إلى تصميمات OpenJDK القياسية ، ستوفر AdoptOpenJDK أيضًا إصدارات مع OpenJ9 بدلاً من HotSpot. OpenJ9 كان في الأصل IBM JVM ، لكن OpenJ9 أصبح مفتوح المصدر الآن. وبالمناسبة ، هذا الخيار هو الأكثر جدارة بالدراسة.
ريد هات OpenJDK
يوفر Red Hat إصدارات بناء OpenJDK على Red Hat Enterprise Linux (RHEL) ، وهو منتج تجاري مع دعم مدفوع. يقوم Red Hat بعمل إصلاحات أمنية جيدة في OpenJDK. في الماضي ، كان Red Hat مسؤولاً عن تحديثات أمان Java 6 و 7. تم دمج Red Hat build مع نظام التشغيل ، لذلك لا يمكن تسميته بناء OpenJDK نموذجي (لا يوجد JDK للمستخدم النهائي).
ازول الزولو
Zulu هي نسخة تحمل علامة OpenJDK بدعم تجاري مدفوع. بالإضافة إلى ذلك ، على الرغم من أن Azul توفر بعض عناصر الزولو مجانًا من خلال مجتمع الزولو ، إلا أنها لا تتحمل أي التزام خاص بتوفير هذه التجميعات. لدى Azul خطة دعم Zulu كبيرة إلى حد ما ، بما في ذلك دعم Java 9 و 13 و 15 ، على عكس البائعين الآخرين.
الأمازون corretto
هذا هو أحدث الخيارات الموضحة. Corretto هي نسخة مجانية من تصميم OpenJDK مع دعم طويل الأجل يمر عبر TCK. يتم توزيعه بموجب شروط الترخيص القياسية لجميع إصدارات OpenJDK: GPL + CE. ستقوم أمازون بإنشاء تصحيحات خاصة بها وإطلاق Corretto على AWS ، لذلك سيتم استخدامها بنشاط كبير (وإضافتها بالفعل إلى بعض المنتجات). يتم دعم دعم Java 8 على الأقل حتى يونيو 2023.
في عملية تحويل OpenJDK الأصلي إلى إصدارات مختلفة من التجميع ، يمكن للشركة المصنعة إضافة العديد من الأدوات المساعدة أو العلامة التجارية للمنتج إذا كان هذا لا يحول دون إصدار الشهادات (TCK). على سبيل المثال ، لا يمكنك إضافة طريقة عامة جديدة إلى واجهة برمجة التطبيقات أو موارد لغة جديدة.
هناك تطبيقات JDK أخرى مثل IBM و SAPMachine. ومع ذلك ، لا يتم استخدام هذه الإصدارات من التجميع في كثير من الأحيان ، لذلك لم يتم ذكرها في هذه المقالة. مزيد من المعلومات يمكن العثور عليها هنا وهنا .
الخاتمة
شخصيا ، لا أرى مشكلة معينة في العديد من إصدارات JDK ، حيث يجب أن تكون جميعها معتمدة (TCK). ما يستحق القلق حقًا هو استخدام أحد إصدارات JDK المسجلة الملكية وإصدارًا مجانيًا من التجميع من Oracle لتجنب الصداع في المستقبل. إذا كنت تستخدم الوظائف الأساسية فقط (على سبيل المثال ، عملك لا يعتمد بشكل خاص على تحديثات الأمان) ، فإن إصدارات OpenJDK من Oracle (وليس OracleJDK) هي الأنسب لك ، لأن يتم تحديثها باستمرار (في غضون 6 أشهر بعد الإصدار) ، ويمكنك استخدام JDK في الإنتاج دون أي مشاكل. إذا كان عملك يستخدم الخدمات السحابية (أو مع AWS) ، فإن AWS Corretto ، والذي يمكن استخدامه بالفعل على Amazon Linux و Docker ، يعد اختيارًا جيدًا.