مشروع فالهالا (لغة جافا)
في مجال الحوسبة، يُعد مشروع فالهالا مشروعًا تجريبيًا ضمن منصة OpenJDK لتطوير ميزات لغوية جديدة رئيسية للغة جافا 10 وما بعدها. أُعلن عن المشروع في يوليو 2014، وهو جهد تجريبي من شركة أوراكل بقيادة المهندس برايان غوتز. [ 1 ]
تقدم صفحة المشروع [ 2 ] نظرة عامة بالإضافة إلى روابط للمسودات الفنية وإصدارات الوصول المبكر.
الميزات المخطط لها
تعمل فالهالا على تطوير ميزات وتحسينات لغة جافا في هذه المجالات: [ 3 ] [ 2 ]
- فئات القيم والكائنات : كائنات عالية الكفاءة بدون هوية خاصة بها (قيمة مرجعية).
- الأنواع المقيدة بالقيم الفارغة والأنواع القابلة للقيم الفارغة، والكائنات المقيدة بالقيم الفارغة: على سبيل المثال، استخدام
?أو!بعد تعريف النوع لتحديد ما إذا كانت القيمة الفارغة مسموح بها أم لا. - تغليف بدائي مُحسَّن : على سبيل المثال، للسماح باستخدام كود مثل
List<int>. - الأنواع العامة المُجسّدة : الاحتفاظ بالنوع الفعلي في وقت التشغيل.
ستتطلب هذه الميزات تغييرات في كل من بناء الجملة وعلى مستوى الجهاز الظاهري.
مكونات المشروع
يتألف المشروع من عدة مقترحات لتحسين JDK (JEPs):
- مسودة JEP: كائنات القيمة (مسحوبة) [ 4 ]
- JEP 401: فئات القيم والكائنات (معاينة) [ 5 ]
- JEP 402: ملاكمة بدائية محسنة (معاينة) [ 6 ]
- مسودة JEP: الأدوية العامة الشاملة (تم سحبها) [ 7 ]
- مسودة JEP: أنواع فئات القيم المقيدة بالقيم الفارغة (معاينة) [ 8 ]
فئات القيم
تُعدّ فئات القيم أنواعًا مرجعية، تمامًا كجميع فئات جافا الموجودة. إلا أنها تفتقر إلى خاصية التطابق. وهذا يعني أن المعامل يقارن مثيلات فئة القيمة بناءً على تساوي مكوناتها، بدلًا من التطابق. إضافةً إلى ذلك، ستفشل عملية التزامن على مثيلات فئات القيم.==
لا تزال فئات القيم تدعم ذلك ، لأنها أنواع مرجعية. من المتوقع أن تستفيد آلة جافا الافتراضية من القيود الإضافية لفئات القيم للتخلص من تخصيص الذاكرة الديناميكية لأنواع القيم في الغالبية العظمى من الحالات. مع ذلك، سيظل تخزين مثيلات فئات القيم في حقل أو تحويلها إلى واجهة يتطلب تخصيصًا للذاكرة.null
تُعرف الأنواع الموجودة في واجهة برمجة تطبيقات Java مثل هذه باسم الفئات القائمة على القيمة، وهي مرشحة لتحويلها إلى فئات قيمة في إصدار JDK مستقبلي.java.util.Optional
الفئات الأولية
تخضع الفئات الأولية لجميع قيود فئات القيم، لكنها ليست أنواعًا مرجعية. هذا يعني أنها لا تدعم خاصية . بدلاً من ذلك، تكون قيمها الافتراضية هي القيمة الصفرية لكل نوع من أنواع المكونات ( للأنواع العددية، وللقيم المنطقية، وللأنواع المرجعية، والقيمة الصفرية للفئات الأولية المتداخلة).null0falsenull
تُخزَّن جميع الفئات الأولية "مباشرةً"، أي دون الحاجة إلى تخصيص ذاكرة في الكومة. ولن تتطلب مصفوفات الفئات الأولية توجيهًا غير مباشر من المصفوفة إلى الكومة. وعند الحاجة، تُضاف تحويلات لتغليف الفئة الأولية في نسخة فئة قيمة منها، والعكس صحيح.
استيراد java.util.ArrayList ؛ استيراد java.util.List ؛// List<int> بدلاً من List<Integer> List <int> intList = new ArrayList <> ( );intList.add ( 10 ) ; intList.add ( 20 ) ;System.out.printf ( "قائمة الأعداد الصحيحة: %s % n " , intList ) ;// List <double> بدلاً من List<Double> List <double> doubleList = new ArrayList < > ( ); doubleList.add ( 3.14 ) ; doubleList.add ( 2.718 ) ;System.out.printf ( "Double List: %s % n " , doubleList ) ;فئات للعناصر الأولية الأساسية
يهدف هذا JEP إلى التعبير عن الأنواع الأولية الكلاسيكية لآلة جافا الافتراضية ( byte, char, short, int, long, boolean, float) doubleكفئات أولية.
تقليديًا، تُعامل الأنواع الأساسية الثمانية بشكل منفصل عن جميع الأنواع الأخرى. إن توفير تعريفات الفئات الأساسية منها يزيل الكثير من هذه الحالات الخاصة، مما يؤدي إلى نظام أنواع أكثر أناقة وسهولة في الفهم .
الفوائد والآثار التقنية
يُعدّ أداء الوصول إلى الذاكرة وكفاءة الوصول إلى القيم المُغلّفة مجالًا رئيسيًا يجب معالجته من خلال هذه الميزات. تعمل ميزات "نوع القيمة" و"التخصيص العام" (عند تطبيقها على القوائم أو المجموعات) على تقليل استخدام الذاكرة، والأهم من ذلك أنها تتجنب التوجيه غير المباشر للمؤشرات الذي يتسبب عادةً في عدم العثور على البيانات في ذاكرة التخزين المؤقت. [ 9 ] [ 10 ]
بدلاً من قائمة أو مصفوفة من مراجع الكائنات، التي تشير إلى قيم البيانات المنتشرة في جميع أنحاء الذاكرة، ستُمكّن تحسينات مشروع فالهالا من وضع قيم القائمة أو المصفوفة بشكل خطي - بدون توجيه غير مباشر - ككتلة متتالية من الذاكرة.
تُصوَّر أنواع القيم على أنها "ترميز مثل فئة، وتعمل مثل عدد صحيح!" [ 11 ] سيتم استبعاد التزامن والوراثة من أنواع القيم. ولن تتطلب هذه الأنواع هوية الكائن وما يرتبط بها من تكاليف إضافية للذاكرة/المؤشرات، مع إمكانية اتخاذها شكلاً "مُغلَّفًا" للتوافق. [ 10 ]
اقترح برايان غوتز، المهندس الذي يقف وراء مشروع فالهالا، إمكانية إضافة خاصية تحميل المعاملات الزائدة إلى لغة جافا بعد إدخال أنواع القيم. [ 12 ]
انظر أيضاً
مراجع
- ↑ غوتز، برايان. "مرحباً بكم في فالهالا!" . أرشيف بريد OpenJDK . OpenJDK . تم الاسترجاع في 12 أغسطس 2014 .
- 1 2 "مشروع فالهالا" . openjdk.org . تم الاطلاع عليه بتاريخ 28-02-2026 .
- ↑ إيفانز، بن. "أوراكل تطلق مشروع فالهالا للغة جافا" . إنفو كيو . إنفو وورلد . تم الاطلاع عليه بتاريخ 12 أغسطس 2014 .
- ↑ "مسودة JEP: كائنات القيمة (معاينة)" . مؤرشفة من الأصل بتاريخ 30-06-2022 . تم الاطلاع عليها بتاريخ 28-02-2026 .
- ↑ "JEP 401: فئات القيم والكائنات (معاينة)" . openjdk.org . تم الاطلاع عليه بتاريخ 28-02-2026 .
- ↑ "JEP 402: Enhanced Primitive Boxing (معاينة)" . openjdk.org . تم الاطلاع عليه بتاريخ 28-02-2026 .
- ↑ "مسودة JEP: الأنواع العامة الشاملة (معاينة)" . openjdk.org . تم الاطلاع عليه بتاريخ 28-02-2026 .
- ↑ "مسودة JEP: تحسينات تخزين كائنات القيمة (معاينة)" . مؤرشفة من الأصل بتاريخ 25-09-2023 . تم الاطلاع عليها بتاريخ 28-02-2026 .
- ↑ كريل، بول. "اقتراح الجيل القادم من مشروع فالهالا؛ أنواع القيم، والتخصيص العام، والتقلبات المحسّنة تتصدر قائمة الأمنيات لمشروع فالهالا" . جافا وورلد . إنفو وورلد . تم الاطلاع عليه بتاريخ 12 أغسطس 2014 .
- 1 2 "هل ستتوفر أنواع القيم و List<int> في Java 10 ؟" . LiterateJava.com . تم الاطلاع عليه بتاريخ 12 أغسطس 2014 .
- ↑ روز، جون؛ غوتز، برايان؛ ستيل، غاي. "حالة القيم" . OpenJDK . تم الاسترجاع في 12 أغسطس 2014 .
- ↑ @BrianGoetz (11 يناير 2017). "أنواع القيم أولاً، ثم يمكننا التحدث عنها" ( تغريدة ) – عبر تويتر .
روابط خارجية
- جافا (لغة برمجة)
