JDK 12 Release Candidate: Shenandoah، G1، JMH، Arm64. البق في سوينغ ضرب الظهر

لقد مر 240 يومًا منذ إصدار JEP 3: JDK Release Process ، ولا ترغب الآلة الجهنمية لإنتاج إصدارات جديدة في التوقف. لذلك ، لقد حان الوقت لمرشح الإصدار التالي . هذه هي الفترة التي يتم فيها حرق جميع الجسور ، والأخطاء ذات أولويات P2-P5 لا تعني شيئًا بالفعل ، والأيام حتى ترقيم الإصدار.



البق


ليست كل الأخطاء ذات الأولوية P1 مغلقة. يمكنك رؤية القائمة الكاملة للمشاكل في bugtracker . وهنا أغرب شيء ينتظرنا: كلهم ​​يشيرون بصرامة إلى Swing عند استخدام GTKLookAndFeel.



وقال بالفعل عقليا: "ولكن ما هو الخطأ في هؤلاء الرجال في سوينغ؟" هذه المرة ليسوا "مسؤولين". إذا لم يكن أحد يعرف ذلك ، فإن Gtk عبارة عن مجموعة أدوات مجانية لتطوير واجهات رسومية ، خاصة على نظام التشغيل GNU / Linux لنظامي X11 و Wayland.


بدءًا من Gtk 3.20 ، تغيرت طريقة عملها مع العديد من الأنماط والحاجيات. بدلاً من فئات الأنماط وأسماء الأنواع ، يتم الآن استخدام أسماء العناصر. تم إصدار Gtk 3.20 في 21 مارس 2016 ، وكان إصدارًا واسع النطاق للغاية - 28933 يرتكبها و Wayland افتراضيًا. بشكل عام ، بدأت جنوم كلها تبدو مختلفة بعض الشيء.



لا عجب في أن سوينغ قد ينسى شيئًا وليس اختباره. تم تحويل جزء من الأخطاء في الأولوية إلى P2 وتم نقله إلى JDK 13. على سبيل المثال ، هذا الخطأ عن حقيقة أن Motif على MacOS ، كما كان ، لوضعها بشكل معتدل ، لم يعد مثل هذه البيئة الرسومية ذات الصلة:



سيكون مضحكا إذا كان شخص ما لا يزال يستخدم Motif و AWT على Habré. آمل ألا يتم إلغاء JDK الثاني عشر بسبب هذا ، وإلا سيكون الملف الأكثر ملحمية في Java في جميع الإصدارات الجديدة من الإصدارات الشبابية.


الميزات


لن يتم سرد JEPs في هذه القائمة حسب الأهمية ، ولكن حصريًا حسب الرقم التسلسلي. هذا حتى لا تعتقد فجأة أن Shenanda و JMH نهضا بسبب التعاطف الشخصي.


189: شيناندواه: جامع للقمامة في وقت منخفض (تجريبي)


سيكون من الرائع لو حدث ذلك قبل عام ، وشناندا دخلت LTS. حسنا ، انتظر - شكرا على ذلك. Shenandoah هو جامع منخفض الحفر يحقق حفرة منخفضة بسبب مرحلة الإخلاء متعددة الخيوط. علاوة على ذلك ، لا تعتمد الإيقاف المؤقت على حجم الورك ، لذلك يمكنك تشغيل أكوام التيرابايت بأمان على المنتج.


230: جناح Microbenchmark


تتم إضافة مجموعة اختبار تستند إلى JMH إلى JDK ، و JMH نفسها أيضًا. يكمن في jdk/jdk/test/micro/org/openjdk/bench . JMH هو إطار عمل لإنشاء وتجميع وإطلاق وتحليل العلامات الصغيرة لجافا ولغات JVM الأخرى ، التي كتبها شخص تفهمه . JMH هو الآن المعيار الفعلي للمعايير الدقيقة ، وظهور مثل هذه JEPs مسألة وقت.


325: تبديل التعبيرات (معاينة)


بدلاً من ألف وصف:


 int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }; 

334: JVM Constants API


الهدف هو توفير مجموعة من الأنواع للنمذجة الرسمية لوصف الفئات والأساليب والكيانات الأخرى في وقت التشغيل و classfile وسحبها إلى الفئات الرئيسية مثل String أو Class . انهم يعيشون في حزم مثل java.lang.invoke.constant ولا تسأل عن ذلك ، ولكن يمكنك إلقاء نظرة على التصحيح هنا .


340: منفذ AArch64 واحد ، وليس اثنين


يتم طرح منفذ arm64 القديم في البرد ، ولكن يتم نشر ARM 32 بت و aarch64 بنشاط. بفضل RedHat و BellSoft على وجود هذه المنافذ (بالمناسبة ، يقع مكتب BellSoft في سان بطرسبرج ، بجوار مكتب أوراكل السابق). عند إصدار JDK 12 ، سنحاول الحصول على تعليق أكثر تفصيلًا من ممثلي الشركة.


341: افتراضي CDS المحفوظات


كميزة ، كانت CDS متاحة لنا لفترة طويلة ، ولكن لم يكن من الواضح سبب كل مرة تكتب فيها - -Xshare:dump نفسك ، إذا كانت النتيجة الافتراضية لهذا الأمر يمكن التنبؤ بها قليلاً حتى في مرحلة إنشاء توزيع JDK. سيتم تحديد هذه الرقابة المزعجة في JDK 12 ، سيتم إنشاء أرشيف CDS بواسطة منشئي التوزيع ، حتى بالنسبة للبنيات الليلية (بشرط أن تكون 64 بت ووطنية ، وليس للتجميع المتقاطع).


344: المجموعات المختلطة المجهضة لـ G1


هذه الميزة مطلوبة من قِبل الآليات الداخلية لجامع البيانات المهملة G1 ، بحيث تتناسب في أغلب الأحيان مع متطلبات فترة التوقف المؤقت. يحدث ذلك أنه يمكنك تحديد وقت قيام G1 مرارًا وتكرارًا بتقييم تعقيد التجميع بشكل غير صحيح ، خاصة في المناطق القديمة. في هذه المرحلة ، يمكنك أن تشعر بالخوف والبدء في التجميع بشكل تدريجي ، خطوة بخطوة ، وبعد كل خطوة ، تكون قادرًا على مقاطعة التجميع. يقال أن هذا سيسمح بشكل أفضل في وقت التجميع المتوقع.


346: موجه إرجاع الذاكرة غير المستخدمة Committed من G1


الآن G1 يعطي الذاكرة الملزمة لنظام التشغيل إما مع GC الكامل ، أو مع التجمع الموازي. كل من هذا و G1 آخر في كل وسيلة ممكنة يحاول تجنب ، وذلك بفضل له. ولكن هذا يعني أيضًا أن الذاكرة تلتهم كما لو لم تكن في حد ذاتها ، ويمكن إجبار G1 على محو الذاكرة مرة أخرى فقط بطريقة خارجية. هذا أمر محزن بشكل خاص لجميع عمال الإرساء ومحبي الموسيقى الآخرين دون تيرابايت من ذاكرة الوصول العشوائي على الخادم. بدلاً من ذلك ، يُقترح القيام بالطريقة نفسها التي تعرف بها Shenanda أو GenCon من OpenJ9 بالفعل كيفية تحديد الاستخدام غير الكافي للكومبوت ، وبالتالي تقليل استخدامها. في بعض الاختبارات على Tomcat ، سمح ذلك بتقليل استهلاك الذاكرة بمقدار النصف تقريبًا.


ما التالي


كانت هذه مراجعة من أعلى لأسفل ، وسنحاول إجراء تحليل مفصل للميزات أقرب إلى الإصدار في شكل مقالات منفصلة - ترجمات JEPs أو سكرينكاستس ذات علامات مرجعية أو أي شيء آخر. الآن علينا أن ننتظر الإفراج ، المقرر في 19 مارس.


دقيقة من الإعلانات. قريبًا ، من 5 إلى 6 أبريل ، سيتم عقد مؤتمر JPoint ، والذي سيجمع عددًا كبيرًا من الأشخاص الذين يعرفون الكثير عن JDK وجميع أنواع الميزات الجديدة. على سبيل المثال ، سيكون هناك بالتأكيد سايمون ريتر من أزول مع محاضرة عن "JDK 12: مطبات لغير المعتاد" . المكان الأنسب لمناقشة أحدث إصدار! يمكنك معرفة المزيد حول JPoint على الموقع الرسمي .

Source: https://habr.com/ru/post/ar440314/


All Articles