
لقد كان Java حلمًا للمبرمجين وما هي أفضل طريقة لقياس شعبية Java من خلال الإصدار الجديد من Java الإصدار 13. بعد اقتراح تحسين Java الأولي ، كانت هناك تطورات في ميزات JDK ستفجر عقل مطور Java بمجموعة جديدة من الميزات بعد الإصدار الرسمي في 17 سبتمبر 2019.
ولكن لماذا تعتقد أن جافا تحظى بشعبية كبيرة؟لقد كانت Java بمثابة جنون بين المبرمجين بسبب استقلالية المنصة والقدرة على التشغيل على أجهزة كمبيوتر مختلفة. لقد كان هناك لفترة طويلة حتى تم اعتماده من قبل منظمات مثل البنوك وشركات التأمين والشركات والوكالات ومعظمهم من
شركات البرمجيات الاستعانة بمصادر خارجية .
كانت Java موجودة هناك في الأعمال التجارية لتطوير تطبيقات أندرويد وتطبيقات ويب جافا وأدوات البرمجيات والتطبيقات العلمية.
دعنا نتفحص الإحصائيات ونقيّم نسبة شعبية تطبيقات جافا من بين لغات البرمجة المتنافسة الأخرى.
وفقًا لتقرير سبتمبر الأخير الصادر عن
Tiobe Index ، فإن تطبيقات Java
ومبرمجيها يتشبثون بمكانتها ويمنحون أوقاتًا صعبة للغات البرمجة الأخرى.

بعد رؤية قبيلة Java الشائعة بين لغات البرمجة الأخرى ، دعنا ننتقل إلى ميزات Java 13 JDK في لمحة:
- JEP 350: أرشيفات CDS الديناميكية
- 351 JEP: ZGC: الذاكرة غير المستخدمة غير المستخدمة
- JEP 353: إعادة تنفيذ واجهة برمجة تطبيقات Legacy Socket
- JEP 354: تعبيرات التبديل (معاينة)
- JEP 355: كتل النص (معاينة)
نظرًا لأنه لا يمكننا توقع الكثير من التغييرات بعد الإصدار الأولي من Java 12 ، فلا تزال هناك تغييرات على المستوى الوظيفي يمكن أن تنتقل عبر مبرمجي Java إلى ميزات مستقرة جديدة. الهدف من ذلك هو الانتهاء من ميزات المعاينة من خلال إصدار LTS التالي بحيث تكون مستقرة بما فيه الكفاية وستظهر بشكل جيد للسنوات الثلاث القادمة. من المتوقع أنه بحلول سبتمبر 2021 ، ستتولى Java 17 إرث Java 8 و 11.
في هذه المدونة ، سأنتقل بك إلى أحدث الميزات التي يمكنك توقعها من Java 13.-> ديناميكية CDS المحفوظاتبصرف النظر عن الميزات الجديدة الواضحة
لمطوري جافا ، فقد حدث الكثير تحت سقف JVM والمكتبة ضمن الفئة. تم تقديم مشاركة بيانات الفصل (CDS) مرة أخرى خلال Java 5. الهدف النهائي من CDS هو تقصير أوقات بدء تطبيقات Java عن طريق تخزين معلومات معينة حول الفئات في أرشيفات مشاركة بيانات الفصل. يمكن بعد ذلك تحميل البيانات في وقت التشغيل واستخدامها بواسطة العديد من JVMs.
حتى Java 10 ، ومع ذلك ، فإن الأرشيفات المشتركة كانت متاحة فقط ل Bootstrap ClassLoader. بدءًا من Java 10 ، تم توسيع CDS بواسطة مشاركة بيانات فئة التطبيق (AppCDS). يمكّن AppCDS نظام تحميل الفئة والنظام الأساسي المدمج بالإضافة إلى محمل الفئة المعرفة من قبل المستخدم للوصول إلى أرشيفات CDS. قوائم الفصول مطلوبة لإنشاء أرشيفات CDS من أجل تحديد الفئات المراد تحميلها.
في السابق ، كان يتعين تحديد قوائم الفئات هذه عن طريق التشغيل التجريبي للتطبيق لتحديد الفئات التي تم تحميلها بالفعل أثناء التنفيذ. منذ Java 12 ، يتم تسليم أرشيفات CDS الافتراضية مع JDK افتراضيًا ، والتي تستند إلى قائمة فئات JDK.
ديناميكية CDS المحفوظات الآن بناء على هذا. الهدف هو حفظ اختبارات التشغيل الإضافية للتطبيق. بعد تنفيذ أحد التطبيقات ، يتم أرشفة فقط فئات التطبيقات والمكتبات التي تم تحميلها حديثًا والتي لم يتم تضمينها بالفعل في CDS الافتراضي / الأساسي. يتم تنشيط الأرشفة الديناميكية بأوامر سطر الأوامر. في امتداد مستقبلي ، يمكن تشغيل أرشفة الفصول تلقائيًا وشفافًا تمامًا.
-> ZGC: غير ملتزم الذاكرة غير المستخدمةفي الوقت الحاضر ، ليس من غير المألوف أن التطبيقات يجب أن تخدم الآلاف من المستخدمين في نفس الوقت. تحتاج هذه التطبيقات إلى ذاكرة كبيرة وإدارة الذاكرة مهمة تؤثر على أداء التطبيق. للوفاء بالمتطلبات المذكورة ، قامت Oracle بتقديم Z Garbage Collector (
ZGC ) في Java 11 لأنها تعد بإيقاف مؤقت قصير جدًا عند تنظيف ذكريات الكومة بعدة تيرابايت.
سابقًا ، لم يتم إصدار ذاكرة الكومة التي تم إصدارها محفوظة للتطبيقات. نتيجة لذلك ، تستهلك التطبيقات ذاكرة أكثر بكثير من اللازم. يتأثر أحد التطبيقات التي يتم تشغيلها في بيئات منخفضة الموارد بشكل خاص. تدعم أدوات تجميع البيانات المهملة الأخرى مثل G1 و Shenandoah بالفعل إصدار الذاكرة غير المستخدمة.
-> تجديد واجهات برمجة التطبيقات المقبستعد Java Socket و Java ServerSocketAPIs جزءًا من JDK 1.0. يتكون معظمهم من إرث من Java و C Code. هذا يجعل الصيانة والتوسعة أكثر صعوبة بكثير. من المفترض أن يحل NioSocketImpl ليحل محل PlainSocketImpl القديم الآن. يعتمد NioSocketImpl بالفعل على تطبيق I / O جديد حاليًا ويستخدم بنيته التحتية الحالية في JDK.
التنفيذ السابق غير متوافق مع الامتدادات المخططة الأخرى للغة. على سبيل المثال ، تعرقل مشكلات التوافق الاستخدام المستقبلي لمؤشرات ترابط المستخدم خفيفة الوزن (الألياف ، جزء من Project Loom).
-> تحسينات على تعبيرات التبديلإذا نظرت إلى الميزة من وجهة نظر المطور ، فهذه هي النقطة المثيرة للاهتمام فقط. على سبيل المثال ، تم تقديم Switch Expressions كمعاينة في Java 12 وتم تمديده نظرًا لتعليقات المستخدم. تعد تعبيرات Switch بديلاً عن عبارات التبديل المرهقة والمعرضة للخطأ.
أكبر تغيير في معايير الترميز التي يمكن رؤيتها في Java 13 هو استبدال فاصل الكلمات الرئيسية في تعبير التبديل بالقيمة الإنتاجية. الخلفية هي التمايز الأفضل بين بيان التبديل (مع احتمال كسر) والتعبيرات (مع العائد). خروج بيان العائد من التبديل وإرجاع نتيجة الفرع الحالي ، على غرار عودة.
على سبيل المثال ، يعرض مقتطف الشفرة التالي السيناريو الذي تم فيه استخدام عبارة Switch مع فاصل وفي الجزء الآخر ، تم استخدام Switch Expression مع العائد لإجراء الفرق بين الاثنين.
-> كتل النص بدلا من الخام سلسلة حرفيةكتلة النص هي نوع جديد لتعريف السلسلة الحرفية في لغة Java. قد يتم استخدامه للدلالة على سلسلة في أي مكان يمكن فيها استخدام سلسلة حرفية ولكنها تقدم تعبيرية أكبر وتعقيدًا عرضيًا أقل. لقد أثار التطبيق الأول لـ Raw String Literals العديد من الأسئلة حيث قدم المستخدمون ملاحظات حول نفس الموضوع وله أسئلة متعددة.
بعد كل شيء ، يمكن للعديد من تطبيقات Java معالجة مقتطفات الكود من لغات أخرى مثل HTML أو SQL. حتى الآن ، لا يمكن تعريف هذه السلاسل إلا بطريقة مرهقة ، مما يجعل من الصعب قراءتها.
على سبيل المثال ، يجب استخدام أوامر التحكم الإضافية (الهروب مع \ n) لفواصل الأسطر. لطالما عرضت لغات أخرى مثل Groovy أو Scala أو
Kotlin إمكانية تعريف النصوص متعددة الأسطر.
كتلة النص الجديدة تستخدم علامات الاقتباس الثلاثية كمحددات ويمكن استخدامها أينما كان الجمل العادية مسموح بها.
يشرح مقتطف الشفرة أدناه الفرق بين الاثنين:

يجب أن تكون علامات اقتباس الفتح والإغلاق الثلاثية في سطر منفصل. ومع ذلك ، يبدأ المحتوى الفعلي بالسطر الثاني. هذا يزيد من إمكانية قراءة التعليمات البرمجية المصدر ، حيث يتم عرض المسافة البادئة للسطر الأول بشكل صحيح في النص المصدر.
الخلاصة:تم تحديد التغييرات الموضحة حتى الآن في JEPs (بروتوكولات تحسين Java). ومع ذلك ، هناك تعديلات إضافية مباشرة في مكتبة الفصل. ولكن أولاً ، يجب عليك تثبيت Java 13 بينما لا يزال إصدار Java 14 قيد الإعداد.
التغييرات غير مؤكدة وكانت هناك بعض الميزات مثل Switch Expressions and Text Block التي يمكن الانتهاء منها. ومع ذلك ، فإن الإصدار التالي في طريقه.