في لغة برمجة **Java** ، الكلمة الدالة هي واحدة من 50 كلمة محجوزة لها معنى محدد مسبقًا في اللغة. وبسبب هذا، لا يمكن للمبرمجين استخدام الكلمات الأساسية كأسماء للمتغيرات أو classes أو methods أو لتعريف أي شيء أخر. من هذه الكلمات الرئيسية 50، 48 قيد الاستخدام و 2 غير قيد الاستخدام. نظرًا لوظائفها الخاصة في اللغة، فإن معظم بيئات التطوير المتكاملة لـ Java تستخدم تسليط الضوء على بناء الجملة لعرض الكلمات الرئيسية بلون مختلف لتسهيل التعرف عليها.

جزء من كود (البرمجية التعليمية) الجافا به بعض الكلمات الدالة ( المحجوزة) الملونة بلون أزرق.

القائمة
-------

`(نمط مجرد) abstract`
في البرمجة كائنية التوجه، النمط المجرد، نمط يكون تنفيذه البرمجي (بالإنجليزية: Implementation)‏ غير مكتمل أو غير موجود، ولا يمكن إنشاء مثيل منه (بالإنجليزية: Instance)‏. أيضا هو بمثابة الأساس لأنماط أخرى مشتقة منه (موروثة). لا يمكنك إنشاء classes مجردة. يجب تنفيذ methods المجردة في الصفوف الفرعية sub classes. لا يمكن استخدام كلمه abstract في تسمية المتغيرات أو الmethods أو تعريف بها أي شيء أخر.

`assert` (تم أضافتها في J2SE 1.4)
نصف Assert دالة تقييم (جملة true-false) تم وضعها في برنامج Java للإشارة إلى أن المطور يظن أن الجملة دائمًا true في ذلك المكان. إذا تم تقييم التأكيد إلى false في وقت التشغيل، فستظهر نتائج فشل التأكيد، والتي تؤدي عادةً إلى إيقاف التنفيذ. يمكنك اختياريًا تفعليها باستخدام (method) طريقة ClassLoader.
`بوليان boolean`
يعرف متغيرًا منطقيًا للقيم "true" أو "false" فقط. في الأساس تكون القيمة المنطقية من النوع البدائي false «خطأ».

`حالة تبديل break`
تستخدم لتنهي (الخروج) من حلقة التكرار (loop) الحالية.

`بايت byte`
كلمة byte تستخدم لتعريف مجال يمكنه استحواذ 8بت لمكملة عدد صحيح موقع. هذه الكلمة أيضا byte يمكن استخدامها لتعريف أن الmethod تعود بقيمة ابتدائية النوع.

`حالة تبديل case`
هي كلمة في هيكل الswitch حيث أن الswitch يمكن وصفه بأنه تابع للcase و الdefault. يقوم الswitch بتقييم حالته أو تعبيره. ثم ينظر الي حالات الcase التي تتبعه ثم ينفذ الكود الخاص بالcase التي تتماشي مع قيمته.

`catch`
تستخدم في هيكل الtry حيت أن الtry and catch تعتبر طريقة للبحث عن الخطأ وتنفيذ الكود بشكل سهل بعد اكتشاف الأخطاء errors

`char`
هو نوع من أنواع البيانات التي يعرف به الرمز (الحرف) الذي لا يستطيع أن يحمل أكثر من رمز واحد.

`صنف`
هو ذلك النوع الذي يحدد تطبيق (تنفيذ) نوع معين من الكائنات objects. يعرّف تعريف الفئة (class) مثيل وclass's field وmethods والفئات الداخلية (inner classes) بالإضافة إلى تحديد الواجهات التي تنفذها الطبقة والفئة الفائقة super class المباشرة للclass. إذا لم يتم تحديد الفئة المميزة بشكل صريح، فإن الطبقة المميزة هي ضمنيًا كائن object. يمكن أيضاً استخدام الكلمة class في Class.class للحصول على كائن فئة object class دون الحاجة إلى مثيل من تلك الفئة. على سبيل المثال، يمكن استخدام String.class بدلاً من إجراء **new String().getClass()**.

`تدفق السيطرة continue`
يُستخدم لاستئناف تنفيذ البرنامج في نهاية أو نص الحلقة الحالية. إذا اتبعها continue ، فانه يترك باقية الحلقة ويستكمل الكود.

`حالة تبديل default`
كلمة الdefault يمكن أن تستخدم في هيكل ال switch أو يمكن أن لا تستخدم، حيث أنها تستخدم في حاله ان جميع الحالات لم توافق جواب الشرط في هذه الحالة تكون لها أهمية في تحدد مصير الكود. يمكن لكلمة default أن تستخدم في تعريف قيم بدائية في ال Java annotation. يتم استخدام الكلمة الأساسية أيضا default أيضًا لتحديد method ما تكون واجهة توفر التنفيذ الافتراضي لmethod ما.

`do`
تستخدم دائما مع الwhile لتكون الdo-while loop الذي ينفذ كتلة من العبارات (سطور الكود) المرتبطة بالحلقة ثم يختبر تعبيرًا منطقيًا مرتبطًا بالفترة أما ان يكون true أو false. إذا تم تقييم التعبير إلى "true"، يتم تنفيذ الكتلة مرة أخرى؛ يستمر هذا حتى يتم تقييم التعبير إلى false.

`تنسيق النقطة العائمة مزدوج الدقة`
تستخدم كلمة double لتعريف متغير من نوع الرقم العشري الذي يحتاج مساحة كبيرة نسبيا 64بت double precision IEEE 754 floating-point number الكلمة ايضأ تدل علي أن الmethod تعود بقيمة بدائية double 

`else`
تستخدم كلمة else دايما مع if لتكوين جملة if-else statement الذي تختبر الشروط المنطقية «بولين» الإجابة اما ان تكوني صحيحة true أو خاطئة false .إذا كانت الإجابة true يتحقق جواب الشرط وإذا كانت الإجابة false لا يتحقق جواب الشرط

`enum` (تم اضافته في J2SE 5.0)
من الكلمات المحجوزة في لغة الجافا java وتستخدم لتعريف الenumerated type والتعددات، توسع الclass الأساسية.

`وراثة (حوسبة) extends`
تستخدم في تعريف فئة (class) لتحديد الطبقة المتفوقة؛ تستخدم في تعريف واجهة interface لتحديد واحد أو أكثر من واجهات فائقة. يوسع الفئة X الفئة Y لإضافة وظائف، إما عن طريق إضافة حقول أو أساليب methods للفئة Y ، أو عن طريق تجاوز أساليب الفئة Y. وتمتد واجهة Z واحدة أو أكثر من الواجهات بإضافة طرق. يقال إن الفئة X هي فئة فرعية من الصنف Y ؛ يقال إن الواجهة Z هي واجهة فرعية للواجهات التي تمتد فيها.

تستخدم أيضًا لتحديد حد أعلى upper bound في نوع المعامل في المطلق

`final`
قم بتعريف الكيان مرة واحدة لا يمكن تغييرها ولا مشتقتها. وبشكل أكثر تحديدًا: لا يمكن للفئة أن تتجزأ الي subclassed ، ولا يمكن إعادة كتابة الطريقة الأخيرة final method ، ويمكن أن يحدث المتغير النهائي مرة واحدة على الأكثر كتعبير يسار في أمر تم تنفيذه. جميع الطرق في الفئة النهائية يعتبروا final ضمني.

`finally`
تُستخدم لتعريف كتلة من العبارات لمقطع تم تعريفه مسبقًا عن طريق الكلمة الرئيسية try. يتم تنفيذ كيان الfinally بعد إنهاء التنفيذ لكتلة try وأي عبارات مصاحبة مرتبطة بها بغض النظر عما إذا تم طرح استثناء catch أي حصول خطأ ومعرفة الخطأ، أو تنفيذ الطريقة اليسرى في منتصف try أو ال catch الكتل باستخدام الكلمة الرئيسية return.

`float`
يتم استخدام الكلمة الأساسية float لتعريف متغير يمكنه احتجاز وحدة ذات 32-بت من IEEE 754 رقم floating-point. كما يتم استخدام هذه الكلمة الأساسية أيضًا للإعلان عن إرجاع أحد الأساليب في مخزون من النوع float (النوع العشري صغير الحجم).

`for (حلقة تكرار)`
يتم استخدام الكلمة الأساسية "for" لإنشاء (حلقة تكرار)، والتي تحدد تهيئة متغيرة وتعبيرًا منطقيًا وتزايدًا. يتم تنفيذ التهيئة المتغيرة أولاً، ثم يتم تقييم التعبير المنطقي. إذا تم تقييم التعبير المنطقي إلى "true"، يتم تنفيذ كتلة عبارات المقترنة بالتكرار، ثم يتم تنفيذ الزيادة. ثم يتم تقييم التعبير المنطقي مرة أخرى؛ يستمر هذا حتى يتم تقييم التعبير إلى false.

اعتبارًا من "J2SE 5.0"، يمكن أيضًا استخدام الكلمة الأساسية "for" لإنشاء ما يسمى «المحسن للحلقة» enhance for loop ، والذي يحدد مصفوفة أو كائنًا قابلًا للتكرار؛ كل تكرار للحلقة ينفذ كتلة البيانات المصاحبة باستخدام عنصر مختلف في المصفوفة أو Iterable.

`if **(**تعبير شرطي (برمجة الحاسوب)`
يتم استخدام الكلمة "if" لإنشاء (تعبير شرطي (برمجة الحاسوب))، والذي يختبر تعبيرًا منطقيًا؛ إذا تم تقييم التعبير إلى "true"، فسيتم تنفيذ كتلة العبارات المرتبطة ببيان "if". يمكن استخدام هذه الكلمة الأساسية أيضًا لإنشاء عبارة "if-else" (تعبير شرطي (برمجة الحاسوب)). اقرأ أيضا

`implements`
تضمين في تعريف «الفئة» class لتحديد واحد أو أكثر من «الواجهات» interfaces التي يتم تنفيذها بواسطة «الفئة الحالية». تورث الفئة أنواع البيانات والطرق methods التي تم تعريفها في الواجهات.

`import`
تُستخدم في بداية «الملف المصدر» (كود مصدري) لتحديد «الفئات» أو «حزم جافا بأكملها» ليتم الإشارة إليها لاحقًا بدون تضمين أسماء حزمها في المرجع. منذ "J2SE 5.0"، يمكن استيراد عدد ثابت من أعضاء الفئات.

`instanceof`
binary operator (المشغل الثنائي)) يأخذ مرجع كائن كمعامله الأول و «صنف» أو «واجهة» كمعامله الثاني وينتج نتيجة منطقية true أو false. يتم تقييم «عامل التشغيل» instanceof إلى true إذا وفقط كان «وقت التشغيل» للكائن متوافق مع "class" أو "interface".

`int`
يتم استخدام الكلمة الأساسية "int" لتعريف متغير يمكنه الاحتفاظ على عدد صحيح موقع مساحته أقصاها 32 بت. يتم استخدام هذه الكلمة الأساسية أيضاً لإعلان عن ارجاع أسلوب قيمة نوعه البدائية integer.

`interface`
تستخدم لتعريف نوع خاص من «الفئات» يحتوي فقط على طرق مجردة أو افتراضية، ومجالات ثابتة (نهائية ثابتة) وواجهات ثابتة. يمكن تنفيذه لاحقًا من خلال الفئات التي تعلن الواجهة interface مع الكلمة الرئيسية «تنفذ» implements. من خلال مساعدة interfaces يمكننا بسهولة تحقيق «التوريث» في لغة الجافا. يمكننا تعريف واجهة interface واحدة داخل واجهة أخرى another interface.

`long`
يتم استخدام الكلمة الأساسية "long" لتعريف متغير يمكنه الاحتفاظ على عدد صحيح موقع مساحته أقصاها 64 بت. يتم استخدام هذه الكلمة الأساسية أيضاً لإعلان عن ارجاع أسلوب قيمة نوعه البدائية long.

`native`
تستخدم في تعريفات «الطرق» method لتحديد أن «الطريقة» لم يتم تنفيذها في نفس ملف مصدر الجافا، بل في ملف مصدر لغة أخرى.

`new`
تستخدم لإنشاء «مثيل» من «فئة» أو «كائن لمصفوفة». استخدام الكلمة الأساسية لهذه الغاية ليس ضروريًا تمامًا (كما هو موضح في Scala (سكالا (لغة برمجة))، على الرغم من أنه يخدم غرضين: فهو يتيح وجود مساحة اسم مختلفة لـ «الطرق» و «أسماء الفئات»، يعرّف بشكل ثابت ومحليا الي أن يتم إنشاء كائن جديد بالفعل، وما هو نوع وقت التشغيل. (يمكن القول أنه يمكن إدخال التبعية في التعليمات البرمجية).

`package`
حزمة جافا هي مجموعة من الطبقات والواجهات المتشابهة. يتم الإعلان عن الحزم باستخدام الكلمة الأساسية للحزمة

`private`
يتم استخدام الكلمة الأساسية "private" في تعريفات «الطرق» أو "field" أو فئة داخلية حيث يمكن للأعضاء (المتغيرات) الوصول إليهم فقط من قبل أعضاء آخرين من صفهم الخاص (في نفس الفئة على سبيل المثال).

`protected`
يتم استخدام الكلمة الأساسية "protected" في تعريف الطرق أو field أو فئة داخلية؛ لا يمكن الوصول إلى الأعضاء المحميين إلا من قِبل أعضاء الطبقة الخاصة بهم (في نفس الفئة على سبيل المثال)، أو الفئات الفرعية لتلك الفئة (وراثة (حوسبة)) أو فئات من نفس الحزمة.

`public`
يتم استخدام الكلمة الأساسية "public" في تعريف فئة أو الطرق أو field؛ حيث يمكن الوصول إلى الطبقات العامة والأساليب والحقول من قبل أعضاء أي صف. (هنا لا يشترط وجودهم في نفس الفئة)

`طريقة`
تستخدم لإنهاء تنفيذ «طريقة» method. يمكن أن يتبعها قيمة مطلوبة بواسطة تعريف الأسلوب الذي يتم إرجاعه إلى المستدعي.

`عدد صحيح`
يتم استخدام الكلمة الأساسية "short" لتعريف متغير يمكنه الاحتفاظ على عدد صحيح موقع مساحته أقصاها 16بت. يتم استخدام هذه الكلمة الأساسية أيضاً لإعلان عن ارجاع أسلوب قيمة نوعه البدائية short.

`static`
تستخدم للإعلان عن "field" أو "method" أو «فئة داخلية كحقل فئة». تحتفظ الفئات بنسخة واحدة من حقول الفصل بغض النظر عن عدد المثيلات الموجودة في هذه الفئة. يستخدم static أيضًا لتحديد طريقة كطريقة الفئة. ترتبط أساليب الفئة بالفئة بدلاً من مثيل محدد، ولا يمكن تشغيلها إلا في حقول الفئة. (تعتبر الطبقات والواجهات المعلنة كأعضاء ثابتين لفئة أو واجهة أخرى في الواقع فئات المستوى الأعلى وليست فئات داخلية.)

`strictfp` (تم اضافته في J2SE 1.2)
كلمة أساسية في لغة الJava تستخدم لتقييد الدقة وتقريب حسابات الfloating-point لضمان قابلية الحمل. 

`وراثة (حوسبة) super`
تستخدم الوراثة أساسًا لتحقيق تعدد أشكال الارتباط أو الربط في وقت التشغيل الديناميكي في لغة الjava للوصول إلى أعضاء الفئة الموروثة في الفصل الذي تظهر فيه. للسماح لفئة فرعية بالوصول إلى الأساليب المتجاوزة والأعضاء المخفيين في الطبقة الفائقة التابعة لها. يتم استخدام الكلمة المحجوزة super أيضًا لإعادة توجيه استدعاء من مُنشئ إلى مُنشئ في الطبقة الفائقة super class .

`حالة تبديل مقلاد`
يتم استخدام الكلمة المحجوزة "switch" بالاقتران مع الحالة والافتراضية لإنشاء جملة "switch" (حالة تبديل)، التي تقوم بتقييم متغير، تتطابق مع قيمته لحالة معينة، وتقوم بتنفيذ مجموعة من العبارات المرتبطة بهذه الحالة. إذا لم تتطابق أية حالة مع القيمة، فسيتم تنفيذ الحظر الاختياري المسمى افتراضيًا، إذا تم تضمينه.

`استبعاد التشارك synchronized`
تستخدم في تعريف "method" أو «كتلة تعليمات برمجية» للحصول على تأمين mutex (قفل (حوسبة)) لكائن أثناء تنفيذ مؤشر الترابط الحالي (خيط (حاسوب)) للتعليمات البرمجية code. بالنسبة إلى «الطرق الثابتة»، فإن الكائن المؤمّن هو «فئة الفئات». يضمن أن يقوم خيط واحد في وقت واحد يعمل على نفس الكائن بتنفيذ هذا الرمز. يتم تحرير قفل mutex تلقائيًا عندما يخرج التنفيذ من «الرمز المتزامن». لا يمكن تعريف "fields" و «الفئات» و «الواجهات» بأنها «متزامنة» synchronized.

`this **(**ذاك (البرمجة)**)**`
تُستخدم لتمثيل "instance" من «الفئة» class التي تظهر بها. يمكن استخدام هذا للوصول إلى عناصر الفئة وكإشارة إلى "instance" الحالي. يتم استخدام الكلمة الأساسية "this" أيضًا لإعادة توجيه مكالمة من مُنشئ constructor واحد في فئة إلى مُنشئ آخر في نفس الفئة.

`throw`
يتسبب في أن يتم طرح مثيل الاستثناء exception instance المعرف مسبقا. يتسبب هذا في تنفيذ المتابعة مع أول معالج استثناء مضمن بواسطة الكلمة الأساسية catch لمعالجة نوع استثناء متوافق مع الواجب. إذا لم يتم العثور على معالج الاستثناءات هذا في الطريقة الحالية current method ، عندئذٍ ترجع الطريقة وتكرر العملية في طريقة الاستدعاء. إذا تم العثور على أي معالج استثناء في أي استدعاء الأسلوب في بنية تخزين العناصر، يتم تمرير الاستثناء إلى معالج الاستثناء الذي لم يتم ربطه في مؤشر الترابط.

`throws`
يستخدم في تعريفات الطرق methods لتحديد أي الاستثناءات لا يتم التعامل معها ضمن الطريقة بل يتم تمريرها إلى المستوى الأعلى التالي من البرنامج. يجب أن يتم التصريح عن كافة الاستثناءات غير المعلمة في طريقة ليست «مثيل» الخاصة باستثناء وقت التشغيل runtime exception باستخدام الكلمة الأساسية throws.

`transient`
تعلن أن instance field «مثيل» ليس جزءًا من النموذج التسلسلي الافتراضي لـ «كائن» object. عندما يتم إجراء تسلسل كائن، يتم تضمين قيم instance field الخاصة به غير الانتقالية فقط في التمثيل التسلسلي الافتراضي. عندما يتم إلغاء تسلسل كائن، تتم تهيئة الحقول المؤقتة فقط إلى قيمتها الافتراضية. إذا لم يتم استخدام النموذج الافتراضي، على سبيل المثال، عندما يتم تعريف جدول serialPersistentFields في التسلسل الهرمي للفئة ويتم تجاهل كافة كلمات "transient" الأساسية.

`try`
تعريف كتلة من العبارات التي لديها قدرة معالجة الاستثناءات. إذا تم طرح استثناء داخل كتلة الtry ، يمكن لكتلة «الcatch الاختيارية» التعامل مع أنواع الاستثناءات المعلنة. أيضًا، يمكن الإعلان عن حظر اختياري يتم تنفيذه عندما يخرج التنفيذ من كتلة الtry ويلتقط العبارات، بغض النظر عما إذا تم طرح استثناء أم لا. يجب أن تحتوي كتلة المحاولة على جملة catch واحدة على الأقل أو حظر نهائي.

`void`
تستخدم الكلمة الأساسية void لتعريف الطريقة "method "التي لا تعود بقيمة.

`المتغير المتقلب volatile`
تستخدم في بيانات المجال لتحديد أن المتغير يتم تعديله بشكل غير متزامن من خلال تشغيل سلاسل حوسبة متزامنة. ومن ثم لا يمكن اعتبار الفئات classes والinterfaces والواجهات المتقلبة، كما لا يمكن أن تكون متغيرات أو parameters.

`while`
يتم استخدام الكلمة الأساسية "while" لإنشاء حلقة تكرار "while loop"، الذي يختبر تعبيرًا منطقيًا وينفذ كتلة عبارات مرتبطة بالحلقة إذا تم تقييم التعبير إلى true ؛ يستمر هذا حتى يتم تقييم التعبير إلى false. يمكن أيضًا استخدام هذه الكلمة الأساسية لإنشاء حلقة أثناء الاستخدام؛ طالع أيضا

الكلمات المحجوزة للقيم الحرفية
------------------------------

`true`
قيمة منطقية حرفية تعني «صحيحة»

`null`
قيمة حرفية مرجعية وتعني «لاشيء»

`false`
قيمة منطقية حرفية تعني «خطأ»

غير مستخدم
----------

`const`
علي الرغم من كونها كلمة محجوزة في لغة الجافا، const لا تستخدم. لتعريف الثوابت في لغة الجافا طالع الكلمة المحجوزة final.

`GOTO`
علي الرغم من كونها كلمة محجوزة في لغة الجافا، goto ليس لديها استخدام.

طالع أيضاً
----------

* Java annotation

مراجع
-----

1. 1 2 3  "Java Language Specification - Section 3.9: Keywords". *The Java Language Specification*. أوراكل. 13 فبراير 2012. مؤرشف من الأصل في 2019-03-30. اطلع عليه بتاريخ 2015-05-15.
2. 1 2 3  "Java Language Keywords". *The Java Tutorials*. Sun Microsystems, Inc. مؤرشف من الأصل في 2019-02-26. اطلع عليه بتاريخ 2017-07-24.
3. 1 2 3 4 5  "Primitive Data Types". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2010-07-04. اطلع عليه بتاريخ 2008-12-03.
4. ↑  Flanagan 2005، صفحة 22.
5. 1 2 3 4 5  "Returning a Value from a Method". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2009-08-06. اطلع عليه بتاريخ 2008-12-03.
6. 1 2 3 4 5 6  Flanagan 2005، صفحات 66-67.
7. 1 2  "The for Statement". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2009-02-26. اطلع عليه بتاريخ 2008-12-03.
8. ↑  Flanagan 2005، صفحات 50-54.
9. ↑  "The if-then and if-then-else Statements". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2009-09-04. اطلع عليه بتاريخ 2008-12-03.
10. ↑  Flanagan 2005، صفحات 44-46.
11. 1 2 3  "Controlling Access to Members of a Class". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2010-01-03. اطلع عليه بتاريخ 2008-12-03.
12. ↑  "The switch Statement". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2010-03-15. اطلع عليه بتاريخ 2014-12-18.
13. ↑  Flanagan 2005، صفحات 46-48.
14. ↑  "Java Object Serialization Specification version 1.5.0". Sun/Oracle. 2004. 1.5 Defining Serializable Fields for a Class. مؤرشف من الأصل في 2019-12-12. اطلع عليه بتاريخ 2010-09-16.
15. ↑  Grosso، William (21 نوفمبر 2001). "Java RMI: Serialization". *ONJava*. O'Reilly Media. Declaring serialPersistentFields. مؤرشف من الأصل في 2018-05-17. اطلع عليه بتاريخ 2010-09-16.
16. ↑  "The while and do-while Statements". *The Java Tutorials*. Sun Microsystems, Inc. 14 فبراير 2008. مؤرشف من الأصل في 2009-08-31. اطلع عليه بتاريخ 2008-12-03.
17. ↑  Flanagan 2005، صفحات 48-49.
18. 1 2  Flanagan 2005، صفحة 20.

* أيقونة بوابةبوابة تقانة