إصدار Java SE 14

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

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

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

  • تمت إضافة الدعم التجريبي نمط مطابقة في عامل التشغيل "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.

  • موحدة ويتم تمكين دعم شكل جديد من تعبيرات "التبديل" افتراضيًا، وهو ما لا يتطلب تحديد عامل التشغيل "فاصل"، ويسمح لك بدمج التسميات المتكررة ويمكن استخدامه ليس فقط في شكل عامل تشغيل، ولكن أيضًا كعامل تشغيل تعبير.

    سجل فار = التبديل (الحدث) {
    حالة التشغيل -> "قام المستخدم بتشغيل زر التشغيل"؛
    حالة التوقف، الإيقاف المؤقت -> "يحتاج المستخدم إلى استراحة"؛
    الافتراضي -> {
    رسالة السلسلة = Event.toString();
    LocalDateTime now = LocalDateTime.now();
    تسفر عن "حدث غير معروف" + رسالة +
    » تم تسجيل الدخول » + الآن؛
    }
    };

  • توسيع الدعم التجريبي كتل النص - شكل جديد من السلسلة الحرفية التي تسمح لك بتضمين بيانات نصية متعددة الأسطر في التعليمات البرمجية المصدر دون استخدام هروب الأحرف والحفاظ على تنسيق النص الأصلي في الكتلة. تم تأطير الكتلة بثلاث علامات اقتباس مزدوجة. في Java 14، تدعم الكتل النصية الآن تسلسل الهروب "\s" لتحديد مسافة واحدة و"\" للتسلسل مع السطر التالي (تجاهل الأسطر الجديدة عندما تحتاج إلى طباعة سطر طويل جدًا). على سبيل المثال، بدلا من التعليمات البرمجية

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

    يمكنك تحديد:

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


    »جافا 1\
    هنا!

    """؛

  • تم توسيع محتوى معلومات التشخيص عند حدوث استثناءات NullPointerException. في حين أن رسالة الخطأ في السابق كانت تشير فقط إلى رقم السطر، فإنها الآن توضح بالتفصيل الطريقة التي تسببت في الاستثناء. يتم تمكين التشخيصات المتقدمة حاليًا فقط عند تشغيلها باستخدام علامة "-XX:+ShowCodeDetailsInExceptionMessages". على سبيل المثال، عند تحديد هذه العلامة، يتم الاستثناء في السطر

    اسم فار = user.getLocation().getCity().getName();

    سوف يؤدي إلى رسالة

    استثناء في مؤشر الترابط "الرئيسي" java.lang.NullPointerException: لا يمكن استدعاء "Location.getCity()"
    لأن قيمة الإرجاع "User.getLocation()" فارغة
    في NullPointerExample.main (NullPointerExample.java:5):5)

    مما يوضح أنه لم يتم استدعاء طريقة Location.getCity() وأن User.getLocation() عاد فارغًا.

  • مُنفّذ معاينة للأداة المساعدة jpackage، والتي تتيح لك إنشاء حزم لتطبيقات Java المستقلة. تعتمد الأداة على javapackager من JavaFX وتسمح لك بإنشاء حزم بتنسيقات أصلية لمنصات مختلفة (msi وexe لنظام التشغيل Windows، وpkg وdmg لنظام التشغيل macOS، وdeb وrpm لنظام التشغيل Linux). تتضمن الحزم جميع التبعيات المطلوبة.
  • إلى جامع القمامة G1 مضاف آلية جديدة لتخصيص الذاكرة تأخذ في الاعتبار تفاصيل العمل على الأنظمة الكبيرة باستخدام البنية نوما. يتم تمكين مخصص الذاكرة الجديد باستخدام علامة "+XX:+UseNUMA" ويمكنه تحسين الأداء بشكل ملحوظ على أنظمة NUMA.
  • وأضاف API للمراقبة الفورية لأحداث JFR (JDK Flight Recorder)، على سبيل المثال لتنظيم المراقبة المستمرة.
  • وأضاف وحدة jdk.nio.mapmode، التي توفر أوضاعًا جديدة (READ_ONLY_SYNC، WRITE_ONLY_SYNC) لإنشاء مخازن بايت معينة (MappedByteBuffer) تشير إلى الذاكرة غير المتطايرة (NVM).
  • مُنفّذ معاينة لواجهة برمجة تطبيقات الوصول إلى الذاكرة الخارجية، مما يسمح لتطبيقات Java بالوصول بشكل آمن وفعال إلى مناطق الذاكرة خارج كومة Java عن طريق معالجة تجريدات MemorySegment وMemoryAddress وMemoryLayout الجديدة.
  • أعلن المنافذ المهملة لمعالجات Solaris OS وSPARC (Solaris/SPARC وSolaris/x64 وLinux/SPARC) بهدف إزالة هذه المنافذ في المستقبل. سيؤدي إيقاف هذه المنافذ إلى السماح للمجتمع بتسريع عملية تطوير ميزات OpenJDK الجديدة دون الحاجة إلى قضاء بعض الوقت في صيانة الميزات الخاصة بـ Solaris وSPARC.
  • تم الحذف مجمع البيانات المهملة CMS (Concurrent Mark Sweep)، الذي تم وضع علامة عليه بأنه قديم منذ عامين وظل غير قابل للصيانة (تم استبدال CMS منذ فترة طويلة بمجمع البيانات المهملة G1). بجانب، أعلن تم إهمال استخدام مجموعة من خوارزميات تجميع البيانات المهملة ParallelScavenge وSerialOld (يتم تشغيلها باستخدام الخيارات "-XX:+UseParallelGC -XX:-UseParallelOldGC").
  • تم توفير الدعم التجريبي لمجمع البيانات المهملة ZGC (Z Garbage Collector) على نظامي التشغيل macOS وWindows (كان مدعومًا سابقًا على Linux فقط). تعمل ZGC في الوضع السلبي، وتقلل من زمن الوصول بسبب جمع البيانات المهملة قدر الإمكان (لا يتجاوز وقت التوقف عند استخدام ZGC 10 مللي ثانية) ويمكن أن تعمل مع أكوام صغيرة وضخمة على حد سواء، تتراوح في الحجم من عدة مئات من الميجابايت إلى عدة تيرابايت.
  • تم الحذف مجموعة الأدوات وواجهة برمجة التطبيقات لضغط ملفات JAR باستخدام خوارزمية Pack200.

المصدر: opennet.ru

إضافة تعليق