ميزات وتحسينات Java 9



الإطار المعياري الذي تم تطويره في إطار Project Jigsaw وميزات Java 9 الرئيسية في هذه المدونة هي JShell (أداة REPL) ، تغييرات مهمة في واجهة برمجة التطبيقات وتغييرات على مستوى JVM.

يعد إصدار ميزات Java 9 و Java 9 علامة فارقة لنظام Java البيئي.تعد مواكبة الإصدارات الجديدة أمرًا مهمًا للبقاء على اطلاع دائم بالتكنولوجيا وفهم الحاجة وراء ما يتم تقديمه سيجعلك أقرب إلى .سيكون الإطار المعياري الذي تم تطويره في إطار Project Jigsaw جزءًا من إصدار Java SE هذا والميزات الرئيسية في هذا هي JShell (أداة REPL) وتغييرات واجهة برمجة التطبيقات المهمة والتغييرات على مستوى JVM لتحسين الأداء وإمكانية تصحيح أخطاء JVM.

كيف تصبح مطور تابلوه

قبل أن نكشف عن ميزات Java 9 بالتفصيل ، دعونا نلقي نظرة خاطفة على إصدارات Java السابقة ونرى ما هي أوجه القصور وكيف ساعدت Java 9 في التغلب على هذه الحالات الشاذة: -





  • لم تكن منصة Java Standard Edition و JDK قابلة للتنقل لأجهزة الحوسبة الصغيرة
  • لم يكن هناك أمان شامل وصيانة JDK
  • لم يكن هناك تحسن شامل في أداء التطبيق
  • كان من الصعب على مطوري Java بناء ودعم مكتبات الرموز والتطبيقات الأكبر ، لكل من Java SE و EE Platforms

في منشور المدونة هذا ، سأصنف ميزات Java 9 على النحو التالي:



  1. تحديثات API العملية في Java 9
  2. عميل HTTP / 2 في Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) في Java 9
  4. ميزة ملفات JAR متعددة الإصدارات في Java 9
  5. ميزة المزيد من تحديثات التزامن في Java 9
  6. مشروع Jigsaw في Java 9

ما الجديد في Java 9؟

لقد اخترت بعض ميزات Java 9 الجديدة ، والتي أشعر أنها تستحق المعرفة عنها. دعونا نرى ما هي هذه الميزات: -

تحديثات API العملية في Java 9

كانت واجهة برمجة تطبيقات عملية Java بدائية تمامًا ،مع دعم فقط لإطلاق عمليات جديدةوإعادة توجيه مخرجات العمليات وتدفقات الخطأ. في هذا الإصدار ، تمكّن تحديثات Process API ما يلي:

  • الحصول على معرف المنتج لعملية JVM الحالية وأي عمليات أخرى تم إنتاجها بواسطة JVM
  • تعداد العمليات التي تعمل في النظام للحصول على معلومات مثل PID والاسم واستخدام الموارد
  • إدارة أشجار العمليات
  • إدارة العمليات الفرعية

دعنا نلقي نظرة على نموذج التعليمات البرمجية ، والذي يطبع PID الحالي بالإضافة إلى معلومات العملية الحالية:



فئة عامة NewFeatures {public static void main (String [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getPid ()) ProcessHandle.Info currentProcessInfo = currentProcess.info () System.out.println ('Info:' + currentProcessInfo)}

عميل HTTP / 2 في Java 9

من المتوقع أن تتغير ميزة Java 9 هذه في الإصدارات اللاحقة وقد تتم إزالتها بالكامل.

سابقا غالبًا ما يلجأ المطورون إلى استخدام مكتبات الجهات الخارجية ، مثل Apache HTTP و Jersey وما إلى ذلك. بالإضافة إلى ذلك ، تسبق واجهة برمجة تطبيقات HTTP الخاصة بـ Java مواصفات HTTP / 1.1 وهي متزامنة ويصعب صيانتها. دعت هذه القيود إلى الحاجة إلى إضافة واجهة برمجة تطبيقات جديدة. توفر واجهة برمجة تطبيقات عميل HTTP الجديدة ما يلي:

  • واجهة برمجة تطبيقات بسيطة وموجزة للتعامل مع معظم طلبات HTTP
  • دعم مواصفات HTTP / 2
  • أداء أفضل
  • أمن أفضل
  • عدد قليل من التحسينات

دعنا نرى نموذج التعليمات البرمجية لإنشاء طلب HTTP GET باستخدام واجهات برمجة التطبيقات الجديدة. يوجد أدناه تعريف الوحدة النمطية المحدد في ملف الوحدة النمطية info.java:

الميزات الجديدة للوحدة النمطية {تتطلب jdk.incubator.httpclient}

تستخدم الكود التالي واجهة برمجة تطبيقات عميل HTTP ، والتي تعد جزءًا من الوحدة النمطية jdk.incubator.httpclient:

import jdk.incubator.http. * import java.net.URI public class Http2Feature {public static void main (String [] args) يطرح Exception {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( URI جديد (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (request، HttpResponse.BodyHandler.asString ()) System.out.println ('كود ​​الحالة:' + response.statusCode ())
System.out.println ('نص الاستجابة:' + response.body ())}}}

Java Shell Scripting (Read-Eval-Print-Loop) في Java 9

يجب أن تكون قد شاهدت لغات ، مثل Ruby و Scala و Groovy و Clojure وغيرها تشحن بأداة ، والتي تسمى غالبًا REPL ( قراءة - تقييم - طباعة - حلقة ). أداة REPL هذه مفيدة للغاية في تجربة ميزات اللغة. على سبيل المثال ، في Scala ، يمكننا كتابة برنامج Hello World بسيط مثل scala> println (“Hello World”)

بعض مزايا JShell REPL هم كالآتي:

  • يمكن للمطورين ذوي الخبرة إنشاء نماذج أولية بسرعة وتجربة قبل اعتمادها في قاعدة التعليمات البرمجية الرئيسية الخاصة بهم
  • يمكن لمطوري Java الآن التباهي بـ REPL

لنقم بتشغيل الأمر JShell ، كما هو موضح في الصورة التالية:

الفرق بين النهائي والنهائي في جافا

مثال JShell Hello World - Java 9 - Edureka

ميزة ملفات JAR متعددة الإصدارات في Java 9

اعتبارًا من الآن ، يمكن أن تحتوي ملفات JAR على فئات يمكن تشغيلها فقط على إصدار Java الذي تم تجميعها من أجله. للاستفادة من الميزات الجديدة لمنصة Java الأساسية في الإصدارات الأحدث ، يتعين على مطوري المكتبة إصدار إصدار أحدث من مكتبتهم. قريبًا ، سيكون هناك إصدارات متعددة من المكتبة يتم صيانتها من قبل المطورين ، والتي يمكن أن تكون كابوسًا. للتغلب على هذا القيد ، تتيح ميزات Java 9 لملفات JAR متعددة الإصدارات للمطورين إنشاء ملفات JAR بإصدارات مختلفة من ملفات الفئات لإصدارات Java مختلفة.المثال التالي يجعل الأمر أكثر وضوحا.

فيما يلي توضيح لملفات JAR الحالية:

جرة جرة - صف - فئة ب - فئة C.

إليك كيف تبدو ملفات JAR متعددة الإصدارات:

جرة جرة - صف - فئة ب - فئة C. - معلومات التعريف الفوقية - الإصدارات - 9 - صف - 10 - فئة ب

في الرسم التوضيحي السابق ، تدعم ملفات JAR ملفات الفئات لإصدارين من Java – 9 و 10.

لذلك ، عند تنفيذ JAR الأقدم على Java 9 ، يتم اختيار فئة A. ضمن الإصدارات - 9 مجلدات للتنفيذ.

على النظام الأساسي الذي لا يدعم ملفات JAR متعددة الإصدارات ، لا يتم استخدام الفئات الموجودة ضمن دليل الإصدارات مطلقًا. لذلك ، إذا قمت بتشغيل ملف JAR متعدد الإصدارات على Java 8 ، فهو جيد مثل تشغيل ملف JAR بسيط.

ميزة المزيد من تحديثات التزامن في Java 9

في هذا التحديث ، فئة جديدة ، java.util.concurrent.Flow تم تقديمه ، والذي يحتوي على واجهات متداخلة تدعم تنفيذ إطار عمل النشر والاشتراك. يتيح إطار عمل النشر والاشتراك للمطورين إنشاء مكونات يمكنها استهلاك دفق مباشر للبيانات بشكل غير متزامن من خلال إعداد ناشرين ينتجون البيانات والمشتركين الذين يستهلكون البيانات عبر الاشتراك ، والذين يديرونها. أربع واجهات جديدة هي كما يلي:

  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (الذي يعمل كناشر ومشترك).

مشروع Jigsaw في Java 9

الهدف الرئيسي من هذا المشروع هو تقديم مفهوم نمطية الدعم لإنشاء وحدات في Java 9 ثم تطبيق نفس الشيء على ملف JDK هذا هو، نمطي JDK .

قليلا من ال فوائد من نمطية هم كالآتي:

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

هناك العديد JEPs والتي هي جزء من هذا المشروع على النحو التالي:

  • JEP 200 - وحدات JDK : هذا يطبق نظام وحدة منصة Java لتكوين وحدات JDK في مجموعة من الوحدات التي يمكن دمجها في وقت الترجمة أو وقت الإنشاء أو وقت التشغيل.
  • JEP 201 - شفرة المصدر المعيارية : يعمل هذا على تحويل كود مصدر JDK إلى وحدات نمطية ويعزز أدوات البناء لتجميع الوحدات.
  • JEP 220 - صور وقت التشغيل المعيارية : يؤدي هذا إلى إعادة هيكلة صور وقت تشغيل JDK و JRE لاستيعاب الوحدات النمطية وتحسين الأداء والأمان وقابلية الصيانة.
  • JEP 260 - تغليف معظم واجهات برمجة التطبيقات الداخلية : هذا يسمح بالوصول إلى الكثير من واجهات برمجة التطبيقات الداخلية مباشرة أو عبر الانعكاس. يعد الوصول إلى واجهات برمجة التطبيقات الداخلية التي لا بد أن تتغير أمرًا محفوفًا بالمخاطر. لمنع استخدامها ، يتم تغليفها في وحدات نمطية ويتم فقط توفير واجهات برمجة التطبيقات الداخلية المستخدمة على نطاق واسع حتى يتم وضع واجهة برمجة التطبيقات المناسبة في مكانها.
  • JEP 261 - نظام الوحدات : يؤدي هذا إلى تنفيذ مواصفات Java لنظام الوحدة النمطية عن طريق تغيير لغة برمجة Java و JVM وواجهات برمجة التطبيقات القياسية الأخرى
  • JEP 282: رابط جافا jlink : هذا يسمح بتعبئة الوحدات النمطية وتبعياتها في أوقات تشغيل أصغر.

لذلك ، كان هذا كل شيء عن Java 9 وميزات Java 9 الجديدة.

الآن بعد أن فهمت ميزات Java 9 ، تحقق من ملف من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم.

جي بعد سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'Java 9' وسنعاود الاتصال بك في أقرب وقت ممكن.