إصدار Java SE 18

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

تم تصنيف Java SE 18 كإصدار دعم منتظم ، مع إصدار التحديثات قبل الإصدار التالي. يجب أن يكون فرع الدعم طويل الأجل (LTS) هو Java SE 17 ، والذي سيتلقى التحديثات حتى عام 2029. تذكر أنه بدءًا من إصدار Java 10 ، تحول المشروع إلى عملية تطوير جديدة ، مما يعني دورة أقصر لتشكيل الإصدارات الجديدة. يتم الآن تطوير وظائف جديدة في فرع رئيسي واحد يتم تحديثه باستمرار ، والذي يتضمن التغييرات المكتملة بالفعل والتي تتفرع منها الفروع كل ستة أشهر لتحقيق الاستقرار في الإصدارات الجديدة.

تشمل الميزات الجديدة في Java 18 ما يلي:

  • الترميز الافتراضي هو UTF-8. ستستخدم الآن واجهات برمجة تطبيقات Java التي تعالج البيانات النصية بناءً على ترميز الأحرف UTF-8 افتراضيًا على جميع الأنظمة الأساسية، بغض النظر عن إعدادات النظام وإعدادات اللغة. للعودة إلى السلوك القديم، حيث يتم اختيار الترميز بناءً على لغة النظام، يمكنك استخدام الخيار "-Dfile.encoding=COMPAT".
  • تتضمن الحزمة حزمة com.sun.net.httpserver، والتي تتضمن الأداة المساعدة jwebserver وواجهة برمجة تطبيقات المكتبة مع تنفيذ خادم http بسيط لخدمة المحتوى الثابت (لا يتم دعم معالجات CGI والمعالجات الشبيهة بـ servlet). لم يتم تحسين خادم HTTP المدمج لأحمال العمل ولا يدعم التحكم في الوصول والمصادقة، لأنه يهدف في المقام الأول إلى استخدامه في عملية التطوير لمشاريع النماذج الأولية وتصحيح الأخطاء والاختبار.
  • يوفر JavaDoc الدعم لعلامة "@snippet" لتضمين أمثلة العمل ومقتطفات التعليمات البرمجية في وثائق API، حيث يمكنك استخدام أدوات التحقق من الصحة، وتمييز بناء الجملة، وتكامل IDE.
  • تمت إعادة تصميم تطبيق Java.lang.reflect API (Core Reflection)، المصمم للحصول على معلومات حول الأساليب والحقول ومنشئي الفئات، بالإضافة إلى الوصول إلى البنية الداخلية للفئات. تظل واجهة برمجة التطبيقات java.lang.reflect نفسها دون تغيير، ولكن يتم تنفيذها الآن باستخدام مقابض الأساليب التي توفرها الوحدة النمطية java.lang.invoc، بدلاً من استخدام مولدات الكود الثانوي. لقد سمح لنا هذا التغيير بتوحيد تطبيقات java.lang.reflect وjava.lang.invoca وتبسيط صيانتها.
  • تم اقتراح معاينة ثالثة لـ Vector API، مما يوفر وظائف لحسابات المتجهات التي يتم تنفيذها باستخدام تعليمات المتجهات على معالجات x86_64 و AArch64 وتسمح بتطبيق العمليات في وقت واحد على قيم متعددة (SIMD). على عكس الإمكانات المتوفرة في برنامج التحويل البرمجي HotSpot JIT للتوجيه التلقائي للعمليات العددية، تتيح واجهة برمجة التطبيقات الجديدة التحكم بشكل صريح في التوجيه لمعالجة البيانات المتوازية.
  • تمت إضافة واجهة SPI (واجهة موفر الخدمة) لحل أسماء المضيفين وعناوين IP، مما يسمح لك باستخدام وحدات الحل البديلة في java.net.InetAddress غير المرتبطة بالمعالجات التي يقدمها نظام التشغيل.
  • يتم توفير معاينة ثانية لواجهة برمجة التطبيقات للوظائف الخارجية والذاكرة، مما يسمح للتطبيقات بالتفاعل مع التعليمات البرمجية والبيانات خارج وقت تشغيل Java. تسمح لك واجهة برمجة التطبيقات الجديدة باستدعاء الوظائف غير التابعة لـ JVM بكفاءة والوصول إلى الذاكرة غير المُدارة بواسطة JVM. على سبيل المثال، يمكنك استدعاء وظائف من مكتبات مشتركة خارجية والوصول إلى بيانات العملية دون استخدام JNI.
  • تمت إضافة تطبيق تجريبي ثانٍ لمطابقة الأنماط في تعبيرات "التبديل"، مما يسمح باستخدام الأنماط المرنة في تسميات "الحالة" بدلاً من القيم الدقيقة، مما يغطي سلسلة من القيم في وقت واحد، والتي كان من الضروري استخدامها سابقًا سلاسل مرهقة من تعبيرات "إذا ... آخر". الكائن س = 123 لتر؛ String formatted = Switch (o) { case Integer i -> String.format("int %d", i); حالة طويلة l -> String.format("long %d", l); حالة مزدوجة d -> String.format("double %f", d); الحالة String s -> String.format("String %s", s); الافتراضي -> o.toString(); };
  • تم إهمال آلية الإنهاء والطرق المرتبطة بها مثل Object.finalize() وEnum.finalize() وRuntime.runFinalization() وSystem.runFinalization() وسيتم تعطيلها في إصدار مستقبلي.
  • تدعم جامعات البيانات المهملة ZGC (Z Garbage Collector) وSerialGC وParallelGC إلغاء البيانات المكررة في الصفوف.

المصدر: opennet.ru

إضافة تعليق