إصدار Java SE 15

بعد ستة أشهر من التطوير ، أوراكل صدر منصة جافا SE 15 (Java Platform ، Standard Edition 15) ، والذي يستخدم مشروع OpenJDK مفتوح المصدر كتطبيق مرجعي. يحافظ Java SE 15 على التوافق مع الإصدارات السابقة من نظام Java الأساسي ، وستعمل جميع مشاريع Java المكتوبة مسبقًا بدون تغييرات عند إطلاقها في الإصدار الجديد. جاهز لتثبيت Java SE 15 builds (JDK و JRE و Server JRE) معد لنظام التشغيل Linux (x86_64) وWindows وmacOS. تم تطوير التنفيذ المرجعي بواسطة مشروع OpenJDK جافا 15 مفتوح المصدر بالكامل بموجب ترخيص GPLv2 مع استثناءات GNU ClassPath التي تسمح بالربط الديناميكي بالمنتجات التجارية.

تم تصنيف Java SE 15 كإصدار دعم عام وسيستمر في تلقي التحديثات حتى الإصدار التالي. يجب أن يكون فرع الدعم طويل الأمد (LTS) هو Java SE 11، والذي سيستمر في تلقي التحديثات حتى عام 2026. سيتم دعم فرع LTS السابق لـ Java 8 حتى ديسمبر 2020. من المقرر إصدار إصدار LTS التالي في سبتمبر 2021. أذكرك أنه بدءا من إصدار Java 10، تحول المشروع إلى عملية تطوير جديدة، مما يعني دورة أقصر لتشكيل إصدارات جديدة. يتم الآن تطوير الوظائف الجديدة في فرع رئيسي واحد يتم تحديثه باستمرار، والذي يتضمن تغييرات جاهزة ويتم تفرع منه الفروع كل ستة أشهر لتحقيق استقرار الإصدارات الجديدة.

من الابتكارات جافا 15 يمكن للمرء علامة:

  • مدمج دعم خوارزمية إنشاء التوقيع الرقمي EdDSA (خوارزمية منحنى إدواردز). RFC 8032). لا يعتمد تطبيق EdDSA المقترح على منصات الأجهزة، وهو محمي من هجمات القنوات الجانبية (يتم ضمان الوقت الثابت لجميع الحسابات) وهو أسرع في الأداء من تطبيق ECDSA الحالي المكتوب بلغة C، وبنفس مستوى الحماية. على سبيل المثال، يُظهر EdDSA باستخدام منحنى إهليلجي بمفتاح 126 بت أداءً مشابهًا لـ ECDSA مع منحنى إهليلجي secp256r1 ومفتاح 128 بت.
  • أضيفت بواسطة الدعم التجريبي للفئات والواجهات المختومة، والتي لا يمكن استخدامها بواسطة الفئات والواجهات الأخرى لوراثة التنفيذ أو توسيعه أو تجاوزه. توفر الفئات المختومة أيضًا طريقة أكثر تصريحًا لتقييد استخدام الفئة الفائقة من معدّلات الوصول، استنادًا إلى القائمة الصريحة للفئات الفرعية المسموح لها بالامتداد.

    الحزمة com.example.geometry;

    شكل الطبقة العامة مختومة
    يسمح بـ com.example.polar.Circle،
    com.example.quad.Rectangle،
    com.example.quad.simple.Square {…}

  • أضيفت بواسطة دعم الفئات المخفية التي لا يمكن استخدامها مباشرة بواسطة الرمز الثانوي للفئات الأخرى. الغرض الرئيسي من الفئات المخفية هو استخدامها في الأطر التي تولد الفئات ديناميكيًا في وقت التشغيل وتستخدمها بشكل غير مباشر، من خلال انعكاس. عادةً ما يكون لهذه الفئات دورة حياة محدودة، لذا فإن الاحتفاظ بها للوصول إليها من الفئات التي تم إنشاؤها بشكل ثابت ليس له ما يبرره ولن يؤدي إلا إلى زيادة استهلاك الذاكرة. تلغي الفئات المخفية أيضًا الحاجة إلى واجهة برمجة التطبيقات غير القياسية sun.misc.Unsafe::defineAnonymousClass، المقرر إزالتها في المستقبل.
  • تم تثبيت مجمع البيانات المهملة ZGC (Z Garbage Collector) وتم التعرف عليه على أنه جاهز للاستخدام على نطاق واسع. تعمل ZGC في الوضع السلبي، وتقلل من زمن الوصول بسبب جمع البيانات المهملة قدر الإمكان (لا يتجاوز وقت التوقف عند استخدام ZGC 10 مللي ثانية) ويمكن أن تعمل مع أكوام صغيرة وضخمة على حد سواء، تتراوح في الحجم من عدة مئات من الميجابايت إلى عدة تيرابايت.
  • استقرت ووجدت جاهزة للاستخدام العام
    جامع القمامة شيناندواه، العمل مع الحد الأدنى من فترات التوقف المؤقت (مجمع البيانات المهملة ذو وقت الإيقاف المؤقت المنخفض). تم تطوير Shenandoah بواسطة Red Hat وهو معروف باستخدامه لخوارزمية تقلل وقت التوقف أثناء جمع البيانات المهملة عن طريق تشغيل عملية التنظيف بالتوازي مع تنفيذ تطبيقات Java. حجم التأخير الذي يقدمه جامع البيانات المهملة يمكن التنبؤ به ولا يعتمد على حجم الكومة، أي. بالنسبة للأكوام التي تبلغ سعتها 200 ميجابايت و200 جيجابايت، ستكون التأخيرات متطابقة (لا تخرج أكثر من 50 مللي ثانية وعادةً خلال 10 مللي ثانية)؛

  • لقد تم تثبيت الدعم وإدخاله في اللغة كتل النص - شكل جديد من السلسلة الحرفية التي تسمح لك بتضمين بيانات نصية متعددة الأسطر في التعليمات البرمجية المصدر دون استخدام هروب الأحرف والحفاظ على تنسيق النص الأصلي في الكتلة. تم تأطير الكتلة بثلاث علامات اقتباس مزدوجة.

    على سبيل المثال، بدلا من التعليمات البرمجية

    سلسلة أتش تي أم أل = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"جاء جافا 1!\" » +
    "\n\t" + " » +
    "\ن" + " "؛

    يمكنك تحديد:

    سلسلة أتش تي أم أل = """


    »جافا 1\
    هنا!

    """؛

  • أعيد تصميمها واجهة برمجة تطبيقات DatagramSocket القديمة. تم استبدال التطبيقات القديمة لـ java.net.DatagramSocket وjava.net.MulticastSocket بتطبيق حديث يسهل تصحيحه وصيانته، كما أنه متوافق مع التدفقات الافتراضية التي تم تطويرها داخل المشروع تلوح في الأفق. في حالة عدم التوافق المحتمل مع التعليمات البرمجية الموجودة، لم تتم إزالة التنفيذ القديم ويمكن تمكينه باستخدام خيار jdk.net.usePlainDatagramSocketImpl.
  • التنفيذ التجريبي الثاني المقترح نمط مطابقة في عامل التشغيل "instanceof"، والذي يسمح لك بتحديد متغير محلي على الفور للوصول إلى القيمة المحددة. على سبيل المثال، يمكنك على الفور كتابة "if (obj مثيل String s && s.length() > 5) {.. s.contains(..) ..}" دون تحديد "String s = (String) obj" بشكل صريح.

    كان:

    إذا (obj مثيل المجموعة) {
    مجموعة المجموعة = (المجموعة) obj;
    إدخالات فار = group.getEntries();
    }

    يمكنك الآن الاستغناء عن التعريف "Group group = (Group) obj":

    إذا (obj مثيل مجموعة المجموعة) {
    إدخالات فار = group.getEntries();
    }

  • مقترح التنفيذ التجريبي الثاني للكلمة المفتاحية "سجل"، والذي يوفر نموذجًا مضغوطًا لتعريف الفئات، مما يسمح لك بتجنب التحديد الصريح لمختلف الأساليب ذات المستوى المنخفض مثل يساوي () وhashCode () وtoString () في الحالات التي يتم فيها تخزين البيانات فقط في الحقول التي لا يتغير سلوكها. عندما يستخدم الفصل تطبيقات قياسية للأساليب يساوي () و hashCode () و toString ()، فيمكنه الاستغناء عن تعريفها الصريح:

    السجل العام للمعاملات المصرفية (تاريخ LocalDate،
    كمية مضاعفة
    وصف السلسلة) {}

    سيضيف هذا الإعلان تلقائيًا تطبيقات للطرق يساوي () و hashCode () و toString () بالإضافة إلى أساليب المنشئ و getter.

  • مقترح معاينة ثانية لواجهة برمجة تطبيقات الوصول إلى الذاكرة الخارجية، مما يسمح لتطبيقات Java بالوصول بشكل آمن وفعال إلى مناطق الذاكرة خارج كومة Java عن طريق معالجة تجريدات MemorySegment وMemoryAddress وMemoryLayout الجديدة.
  • عاجز وإهمال تقنية تحسين القفل المتحيز المستخدمة في HotSpot JVM لتقليل حمل القفل. لقد فقدت هذه التقنية أهميتها على الأنظمة ذات التعليمات الذرية التي توفرها وحدات المعالجة المركزية الحديثة، وتتطلب صيانة كثيفة العمالة بسبب تعقيدها.
  • أعلن آلية عفا عليها الزمن تفعيل RMI، والتي سيتم إزالتها في الإصدار المستقبلي. تجدر الإشارة إلى أن تنشيط RMI أصبح قديمًا، وتم نقله إلى فئة الخيارات في Java 8 ولا يتم استخدامه أبدًا في الممارسة الحديثة.
  • تم الحذف محرك جافا سكريبت أنف، والذي تم إهماله في Java SE 11.
  • تم الحذف منافذ لمعالجات Solaris OS وSPARC (Solaris/SPARC، وSolaris/x64 وLinux/SPARC). ستسمح إزالة هذه المنافذ للمجتمع بتسريع تطوير ميزات OpenJDK الجديدة دون إضاعة الوقت في الحفاظ على ميزات Solaris وSPARC المحددة.

المصدر: opennet.ru

إضافة تعليق