كل ما سمعته عن Java 8 يتركز حول تعبيرات Lambda. لكنها مجرد جزء من Java 8. Java 8 لديها العديد من الميزات الجديدة - بعض الفصول والجملة الجديدة القوية ، وغيرها من الأشياء التي ينبغي أن يكون لها من البداية.
سأقدم 10 ميزات أساسية أعتقد أنها تستحق المعرفة. سيكون هناك واحد أو اثنان منهم على الأقل من أجل تجربته ، لذلك دعونا نبدأ!
1. الطريقة الافتراضية
تتمثل الميزة المضافة حديثًا في لغة Java في أنه يمكنك إضافة أجسام طريقة (تسمى الطرق الافتراضية) إلى طرق الواجهات. ستتم إضافة هذه الطرق ضمنيًا إلى الفصل الذي ينفذ هذه الواجهة.
يتيح لك ذلك إضافة ميزات جديدة إلى المكتبات الموجودة دون كسر الرمز الخاص بك. من الواضح أن هذا تحسن. ولكن من ناحية أخرى ، فإن هذا يملأ الحدود بين الواجهات والفئات ، لأن الواجهات تستخدم لتحديد العقود ، بينما يتم استخدام الفصول لتحديد التطبيقات الخرسانية. على الجانب الإيجابي ، فإنه يجعل الواجهة أكثر ذكاءً بطريقة أنيقة وتجنب الازدواجية وتمديد المكتبات. ولكن على الجانب السيئ ، سنرى لاحقًا أن طريقة الواجهة تستفسر عن هذا وتحويلها إلى فئات ملموسة. الرعشات ...
2. إنهاء العملية
إن بدء عملية خارجية هو نصف ما تفعله - عندما تتعطل العملية أو تعليقها أو تستهلك وحدة المعالجة المركزية بنسبة 100 ٪ ، تحتاج إلى العودة وتصحيحها. تم تجهيز فئة العملية الآن بطريقتين جديدتين لمساعدتك في التحكم في العمليات الجامحة.
الأول هو isalive () ، والذي يسمح لك بالتحقق مما إذا كانت العملية لا تزال تعمل دون انتظار إكمال العملية. الطريقة الثانية الأكثر قوة هي تدميرها () ، والتي تتيح لك فرض عمليات القتل التي يتم توقيتها أو لم تعد هناك حاجة إليها.
3. Stampedlocks
هناك شيء مثير الآن. لا أحد يحب مزامنة الكود. إنه الجاني لتقليل إنتاجية التطبيق الخاص بك (وخاصة التطبيقات القابلة للتطوير) ، أو أكثر تسبب في شنق التطبيق. ومع ذلك ، في مرحلة ما ليس لديك خيار.
هناك العديد من الطرق للحد من الوصول إلى الموارد الحرجة بطريقة متزامنة متعددة مؤشرات الترابط. الأكثر شهرة من هذه الأقفال القراءة والكتابة (ReadWritelock) والتطبيقات المتعلقة به. إنه يقلل من منافسة الموارد من خلال السماح لخيوط متعددة بالوصول إلى نفس المورد ولكن تمنع مؤشرات الترابط التي تعمل على تشغيل المورد. هذا يبدو جيدًا من الناحية النظرية ، ولكن في الواقع هذا القفل بطيء للغاية ، خاصةً عندما يكون هناك عدد كبير من خيوط الكتابة.
ملاحظة: يقسم قفل القراءة والكتابة زوار الموارد إلى فئتين: القارئ والكاتب. يقوم القارئ بإجراء عمليات للقراءة فقط على المورد ، ويمكن للكاتب تشغيل المورد.
تقدم Java 8 قفلًا جديدًا للقراءة والكتابة يسمى StampedLock. هذا القفل ليس أسرع فحسب ، بل يوفر مجموعة قوية من أقفال التفاؤل ، والتي من خلالها يمكنك الحصول على قفل القارئ بأقل تكلفة ، وحتى لا تريد عمليات الكتابة أثناء الاختيار. بعد انتهاء الاختيار ، يمكنك الاستعلام عن القفل لمعرفة ما إذا كانت هناك عملية كتابة أثناء التحديد ، وفي هذه الحالة يمكنك اختيار ما إذا كنت ستحاول مرة أخرى أو تحديث القفل أو الاستسلام.
هذا القفل هو أداة قوية للغاية ويحتاج إلى مقال خاص لوصفه. كنت متحمسًا جدًا لهذا الشيء الجديد لدرجة أنني كنت بالدوار وحسنا!
لمزيد من التفاصيل ، يرجى الرجوع إلى هنا
4. المضافات المتزامنة
هذا طفل صغير آخر لأولئك الذين يعملون في التطبيقات متعددة مؤشرات الترابط. هذه واجهة برمجة تطبيقات جديدة بسيطة وفعالة للعدادات المتعددة ، والتي هي أسرع من استخدام AtomicInteger. سخيف جدا بارد!
5. القيم الاختيارية
أوه ، مؤشر فارغ ، كابوس لجميع مطوري جافا. منذ البداية (أو على الأقل في عام 1965) ، ربما كان الاستثناء الأكثر شعبية.
بالاعتماد على المقياس و Hashell ، لدى Java 8 قالبًا جديدًا يسمى اختياريًا لتغليف المراجع التي قد تكون فارغة. ليس بأي حال من الأحوال رصاصة فضية إنهاء فارغة ، فهي طريقة للسماح لمصمم API بالإشارة من مستوى الكود (بدلاً من مستوى المستند) ، قد يتم تمرير قيمة فارغة إلى طريقة أو إرجاع من طريقة لإعداد المتصل للقيمة الفارغة. لذلك ، لا يمكن أن يعمل هذا إلا بموجب واجهة برمجة التطبيقات الجديدة ، وافتراض أن المتصل لا يسمح للمرجع بالهروب من التغليف مما يؤدي إلى تحلل غير آمن.
يجب أن أقول إنني متضارب للغاية مع هذه الميزة. من ناحية ، هناك مشكلة كبيرة مع NULL ، لذلك أميل إلى القيام بكل شيء جيدًا قبل حدوث NULL. لكن من ناحية أخرى ، أشك في أنها ستنجح. هذا لأن استخدام اختياري يتطلب جهودًا مستمرة من الشركة بأكملها ، ولكن ليس لها قيمة مباشرة. ما لم تكن حاسمة ، فمن المحتمل أن يتم التخلي عنها.
لمزيد من المعلومات حول اختياري ، يرجى النقر هنا
6. التعليق على أي شيء
هناك تحسين لغة Java صغيرة أخرى وهي أنه يمكن الآن إضافة التعليقات التوضيحية إلى كل شيء تقريبًا في الكود الخاص بك. في الماضي ، لا يمكن إضافة التعليقات التوضيحية إلا إلى الفصل أو إعلان الطريقة. يمكن إضافة التعليقات التوضيحية باستخدام Java 8 إلى إعلانات المتغير والمعلمة ، ليس فقط عند نقل قيمة إلى نوع محدد ، ولكن حتى عند تخصيص مساحة لكائن جديد. هذا جزء من جعل لغة Java أكثر ودية وتركيزًا (إلى جانب أدوات توثيق Java وتحسينات API) من خلال التحليل الثابت وأدوات المعالج مثل FindBugs. هذه ميزة رائعة ، ولكن أكثر من شيء مثل Invokedynamic تم تقديمه في Java 7 ، وقيمتها الحقيقية هي ما يفعله المجتمع معها.
7. تشغيل الفائض
الآن هنا سلسلة من الطرق التي يجب تضمينها في المكتبة الأساسية منذ البداية. واحدة من عاداتي المفضلة هي تصحيح الفائض عندما تتجاوز int 2^32 ثم الاستمرار في إنشاء هذا الخطأ السيئ السمعة عشوائيا (مثل "كيف حصلت على هذه القيمة الغريبة؟").
لا توجد رصاصة فضية هذه المرة ، ولكن هناك سلسلة من الوظائف التي تشغل الأرقام التي ترمي استثناءات عند حدوث الفائض بطريقة تكون أكثر تسامحًا من المشغل المعياري +/* الذي يسبب ضمنيًا في التدفق الزائد .. إذا كان ذلك ، فسوف أقوم بتعيينه كطريقة افتراضية لـ JVM ، باستخدام وظائف صريحة تسمح بالتوضيح الفضائي (بدلاً من التشغيل +**.
8. مجلد اجتياز
ظهر محتوى Terting Directory Trees في وقت مبكر جدًا على عمليات البحث في Google (في هذه الحالة يمكنك استخدام Apache.FileUtils). جافا 8
تمت إضافة 10 طرق جديدة للملفات. المفضل لدي هو Walk () ، الذي يخلق دفقًا كسولًا (مهم لأنظمة الملفات الكبيرة) للتكرار
محتويات هيكل الدليل.
9. توليد عدد عشوائي قوي
حديث اليوم عن ضعف كلمات المرور والمفاتيح أمر لا بد منه. أمان البرنامج يمثل مشكلة صعبة ومن السهل ارتكاب أخطاء. هذا أيضًا ما يعجبني
سبب طريقة securerandom.getInstancestrong () الجديدة التي يمكنها تلقائيًا تحديد أقوى مولد عشوائي في JVM. يقلل
يتم الحصول على فرص فشل المولد أو المولد الضعيف بشكل افتراضي ، مما يؤدي إلى فرصة تكسير قيمة المفتاح أو التشفير بسهولة.
10. Date.ToinStant ()
Java 8 تقدم علامة API وقت جديد. لأن واجهة برمجة التطبيقات الحالية ليست جيدة ، فهذا أمر مفهوم تمامًا. الآن ركزت جودا واخترقت واجهة برمجة تطبيقات تاريخ جافا لسنوات عديدة. ومع ذلك ، حتى مع واجهة برمجة التطبيقات الجديدة ، لا تزال هناك مشكلة كبيرة - هناك الكثير من التعليمات البرمجية والمكتبات التي تستخدم واجهة برمجة التطبيقات القديمة.
نعلم جميعًا أن مواجهة هذه المشكلة ، فماذا يجب أن نفعل؟
نظرًا لأن Java 8 قد فعلت بأناقة تمامًا ، فقد تمت إضافة طريقة جديدة Toinstant () إلى فئة التاريخ لتحويلها إلى واجهة برمجة تطبيقات جديدة. حتى باستخدام واجهة برمجة تطبيقات التاريخ القديم (نفسه في المستقبل المنظور) ، فإنه سيسمح لك بالترقية بسرعة إلى API الجديدة.
ما رأيك في أن المقالة لها خصائص أخرى لا ينبغي ذكرها ، أو هل لا توافق على تحليلنا؟ يرجى التعليق علينا - هذا هو الغرض من النشر!
ما سبق هو عبارة عن مجموعة من المعلومات حول الميزات الجديدة لـ Java 8. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لدعمكم لهذا الموقع!