بعد ستة أشهر من التطوير، أصدرت أوراكل Java SE 27 (منصة جافا، الإصدار القياسي 27)، والتي تستخدم مشروع OpenJDK مفتوح المصدر كتطبيق مرجعي. باستثناء إزالة بعض الميزات القديمة، تحافظ Java SE 27 على التوافق مع الإصدارات السابقة من منصة جافا - ستعمل معظم مشاريع جافا المكتوبة سابقًا دون تغيير عند تشغيلها تحت الإصدار الجديد. تتوفر إصدارات جاهزة للتثبيت من Java SE 27 (JDK وJRE وServer JRE) لـ Linux (x86_64، AArch64)، Windows (x86_64) و macOS (x86_64، AArch64). تم تطوير تطبيق Java SE 27 المرجعي بواسطة مشروع OpenJDK، وهو مفتوح المصدر بالكامل بموجب ترخيص GPLv2 مع استثناء GNU ClassPath، مما يسمح بالربط الديناميكي مع المنتجات التجارية.
يُصنّف Java SE 27 كإصدار ذي دعم عادي، حيث تُصدر التحديثات حتى الإصدار التالي. أما فرع الدعم طويل الأمد (LTS) فيُفترض أن يكون Java SE 25 أو Java SE 21 أو Java SE 17، مع إصدار التحديثات حتى عام 2033 و2031 و2029 على التوالي (متوفرة عمومًا حتى سبتمبر 2030 و2028 و2026). سيستمر الدعم الموسّع لفرع Java SE 8 LTS حتى عام 2030، ولـ Java SE 11 حتى عام 2032.
تشمل التغييرات في Java SE 27 (1، 2، 3، 4) ما يلي:
- تستخدم جميع البيئات افتراضيًا جامع البيانات المهملة G1 (الأولوية للنفايات)، الذي كان يُستخدم سابقًا لأنظمة الخوادم. تم تحسين G1 للاستخدام على أنظمة المعالجات المتعددة ذات سعات الذاكرة الكبيرة، ولتحقيق التوازن بين زمن الاستجابة المتوقع والإنتاجية العالية. أثناء التشغيل، يقسم G1 الذاكرة إلى مناطق صغيرة متعددة، ويُعطي الأولوية لتلك المناطق التي تحتوي على عدد أكبر من الكائنات غير المستخدمة وبيانات أقل استخدامًا.
- تستخدم آلة جافا الافتراضية HotSpot رؤوس كائنات مضغوطة افتراضيًا. في الأنظمة ذات 64 بت، تم تقليص حجم الرأس من 96 إلى 64 بت، مما يقلل استهلاك الذاكرة ويزيد احتمالية وصول البيانات إلى ذاكرة التخزين المؤقت للمعالج. في اختبارات SPECjbb2015، انخفض استهلاك الذاكرة بنسبة 22%، وانخفض حمل وحدة المعالجة المركزية بنسبة 8%، وانخفض عدد عمليات جمع البيانات المهملة بنسبة 15%. كما انخفضت أوقات تشغيل اختبار محلل JSON بنسبة 10%.
- يُضيف تطبيق TLS 1.3 دعمًا لأنظمة تبادل المفاتيح الهجينة التي تجمع بين خوارزمية ML-KEM المقاومة للحوسبة الكمومية (CRYSTALS-Kyber) وخوارزميات منحنى ECDHE الإهليلجي الكلاسيكية: X25519MLKEM768 (ECDHE مع منحنى X25519 + ML-KEM-768)، وSecP256r1MLKEM76 (ECDHE مع منحنى secp256r1 + ML-KEM-768)، وSecP384r1MLKEM1024 (ECDHE مع منحنى secp384r1 + ML-KEM-1024). متوفر في واجهة برمجة تطبيقات javax.net.SSL يتم تفعيل هذه المخططات بشكل افتراضي ولا تتطلب أي تغييرات في التطبيق لاستخدامها.
- يدعم الآن برنامج JDK Flight Recorder (JFR)، وهو أداة تُستخدم لمراقبة الأداء وتحليله وتشخيصه، إمكانية تنظيف وسائط سطر الأوامر والقيم الأولية لمتغيرات البيئة وخصائص النظام في معلومات التشخيص المحفوظة. يمنع هذا التغيير تسريب البيانات الحساسة التي تعالجها العملية التي يتم تحليلها، مثل رموز التفويض ومفاتيح الوصول إلى واجهة برمجة التطبيقات (API) التي يتم تمريرها عبر متغيرات البيئة.
- تم تطبيق المعاينة الثالثة لواجهة برمجة تطبيقات الثوابت الكسولة (Lazy Constants API) للتعامل مع الكائنات التي تحتوي على بيانات غير قابلة للتغيير وتُعامل كثوابت في JVM. تُطبق تحسينات الأداء المشابهة لتلك المُطبقة على الحقول التي تحتوي على الكلمة المفتاحية "final" على هذه الكائنات. على عكس "final"، تفصل واجهة برمجة التطبيقات الجديدة إنشاء القيم الثابتة عن تهيئتها، وتضمن إمكانية تهيئة القيمة مرة واحدة فقط، وتقلل وقت بدء تشغيل البرنامج، وتُمكّن من استخدام تحسينات طي الثوابت، التي كانت تُستخدم سابقًا فقط في التعليمات البرمجية الداخلية لـ JDK، في التعليمات البرمجية للمستخدم. class Application { // سابقًا: // static final UserService USERS = new UserService(); // الآن: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
- يُقدّم مُحرك مُطابقة الأنماط الإصدار الخامس من إمكانية استخدام الأنواع الأولية (int، byte، char، وغيرها من الأنواع الأساسية غير الكائنية) في جميع أنواع الأنماط، وفي عامل instanceof، وفي كتل switch. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
- تم إصدار المسودة السابعة من واجهة برمجة تطبيقات التزامن المهيكل، والتي تعمل على تبسيط تطوير التطبيقات متعددة الخيوط من خلال التعامل مع المهام المتعددة التي تعمل على خيوط مختلفة كوحدة واحدة، للاختبار.
- تم تنفيذ الإصدار التجريبي الثاني عشر من واجهة برمجة تطبيقات المتجهات (Vector API). توفر هذه الواجهة وظائف لحسابات المتجهات باستخدام تعليمات المتجهات لمعالجات x86_64 و AArch64، وتتيح إجراء عمليات متزامنة على قيم متعددة (SIMD). على عكس خاصية التحويل التلقائي للمتجهات في مُصرّف HotSpot JIT للعمليات العددية، تتيح واجهة برمجة التطبيقات الجديدة تحكمًا صريحًا في عملية التحويل للمتجهات لمعالجة البيانات المتوازية.
- يتوفر الآن إصدار ثالث من واجهة برمجة التطبيقات (API) لترميز وفك ترميز الكائنات التي تحتوي على مفاتيح التشفير والشهادات وقوائم إبطال الشهادات باستخدام تنسيق PEM (البريد المحسن للخصوصية).
بالإضافة إلى ذلك، يسرّنا الإعلان عن إصدار تحديث لمنصة JavaFX 27 لإنشاء تطبيقات واجهة المستخدم الرسومية. ومن المتوقع أيضًا خلال الساعات القادمة إصدار آلة GraalVM 27 الافتراضية الشاملة، التي تدعم تشغيل التطبيقات بلغات JavaScript (Node.js) وPython وRuby وR وأي لغة JVM (Java وScala وClojure وKotlin) واللغات التي يمكن توليد رمز LLVM الثنائي لها (C وC++ وRust).
المصدر: opennet.ru
