JCSP
JCSP هو تطبيق لعمليات الاتصال التسلسلي (CSP) للغة البرمجة جافا . [ 1 ]
على الرغم من أن CSP هو نظام رياضي، إلا أن JCSP لا يتطلب مهارات رياضية متعمقة، مما يسمح للمبرمجين بدلاً من ذلك بتحقيق برامج جيدة السلوك من خلال اتباع قواعد بسيطة.
ملخص
هناك أربع طرق يمكن أن تفشل بها البرامج متعددة الخيوط بشكل لا يمكن اختباره: [ 1 ]
- حالات التزامن - قد تكون حالة المتغيرات المشتركة غير محددة لأن العديد من الخيوط تصل إليها في وقت واحد دون تأمين كافٍ
- حالة الجمود – يصل خيطان أو أكثر إلى طريق مسدود عندما يحاولان الحصول على أقفال أو موارد أخرى بطريقة متضاربة
- حالة التعطل الحي – مشابهة لحالة التعطل التام ولكنها تؤدي إلى إهدار لا نهاية له لوقت وحدة المعالجة المركزية
- التجويع - تعطل خيط واحد أو أكثر، مما يؤثر على النتيجة المرجوة لخوارزميات البرنامج
عمومًا، لا يمكن إثبات غياب هذه المخاطر الأربعة بمجرد إجراء اختبارات صارمة. فرغم ضرورة هذه الاختبارات، إلا أنها غير كافية. بل من الضروري وجود تصميم يُثبت عدم وجود هذه المخاطر. يُمكّن CSP من تحقيق ذلك باستخدام الرياضيات، بينما يُمكّن JCSP من تحقيقه عمليًا في برامج جافا.
تكمن فائدة الاعتماد على الرياضيات كأساس في إمكانية إنتاج ضمانات أقوى للسلوك الصحيح مقارنةً بالتطوير التقليدي المخصص . ولحسن الحظ، لا يُلزم JCSP مستخدميه بتبني منهج رياضي بأنفسهم، بل يسمح لهم بالاستفادة من الرياضيات التي يقوم عليها أساس المكتبة.
لاحظ أن مصطلح CSP العملية يستخدم بشكل أساسي كمرادف للخيط في لغة جافا؛ العملية في CSP هي وحدة تنفيذ خفيفة الوزن تتفاعل مع العالم الخارجي عبر الأحداث وهي مكون نشط يغلف هياكل البيانات التي تعمل عليها.
نظرًا لأن تغليف البيانات يتم على مستوى كل خيط (أو كل عملية في مصطلحات CSP)، فلا يوجد عادةً اعتماد على مشاركة البيانات بين الخيوط. بدلاً من ذلك، يتم الربط بين الخيوط عبر نقاط اتصال ولقاءات محددة جيدًا. وتكمن الفائدة في إمكانية اعتبار كل خيط كيانًا "أحادي الخيط" أثناء تصميمه، مما يُجنّب المطور الشكوك حول استخدام الكلمة المفتاحية synchronized في جافا ومكان استخدامها ، ويضمن في الوقت نفسه تجنب حالات التزامن غير المتوقعة. يوفر JCSP مبادئ واضحة لتصميم الاتصال بين الخيوط بطريقة تضمن خلوها من حالات الجمود.
توجد أوجه تشابه واضحة بين بعض الفئات في واجهة برمجة تطبيقات جافا القياسية ( java.util.concurrent ) وبعضها في JCSP. تُشبه فئات القنوات في JCSP فئة BlockingQueue . لكن ثمة فرقًا جوهريًا واحدًا: إذ توفر JCSP أيضًا فئة Alternative للسماح بالاختيار بين المدخلات؛ وهذه الميزة غير متوفرة في واجهة برمجة تطبيقات جافا القياسية. يُعد التناوب أحد المفاهيم الأساسية التي تستخدمها CSP لنمذجة الأحداث في العالم الحقيقي.
ثبت أن البديل يعمل بشكل صحيح من خلال تحليل رياضي شامل لمساحة حالته، مما يضمن أنه لا يمكن أن يتسبب في حالة جمود. [ 2 ] وعلى هذا النحو، فهو يجسد موثوقية JCSP من أساسه الرياضي.
طبقة الشبكات
بما أن مقابس بروتوكول التحكم بالنقل (TCP) يمكن تصميمها لتعمل كقنوات حظر وفقًا لمفهوم CSP، فمن الممكن توزيع عمليات JCSP على عدة أجهزة كمبيوتر. ويتحقق ذلك باستخدام امتداد JCSP Net الذي يوفر قنوات ذات دلالات CSP باستخدام TCP. ولأن CSP تركيبي، فلا يهم من حيث السلوك ما إذا كانت العمليات موجودة في نفس الموقع أو موزعة. الفرق الوحيد يكمن في الأداء النسبي. لذا، من الممكن، على سبيل المثال، تطوير تطبيق على خادم واحد ثم مقارنة نسخة متعددة المعالجات من نفس التطبيق بهدف تحسين الأداء.
إصدارات أخرى
نسخة الروبوت
JCSP re هو نسخة مُصغّرة للغاية من حزم JCSP التي طُوّرت حوالي عام 2008 في جامعة نابير بإدنبرة على يد البروفيسور جون كيريدج، وأليكس بانايوتوبولوس، وباتريك ليسمور. يُعدّ البحث في JCSP لبيئات الروبوتات وJCSP للبيئات المتنقلة مجالًا بحثيًا نشطًا في جامعة نابير بإدنبرة. يسمح التطبيق العملي لـ JCSP re بتطوير نفس البرمجيات المتزامنة للروبوتات. تحديدًا، كانت روبوتات Lego Mindstorms NXT هي الروبوتات المستهدفة في هذا البحث ، نظرًا لقدرتها على تشغيل آلة LeJOS NXJ الافتراضية الشهيرة التي تُنفّذ شفرة مصدر Java. [ 3 ]
استخدام JCSP من لغات أخرى
JCSP هي في الأساس واجهة برمجة تطبيقات جافا خالصة (مع وجود بديل بحثي يستخدم امتداد C-CSP لآلة جافا الافتراضية). ولذلك، فهي مناسبة تمامًا من حيث المبدأ للتزامن في تطبيقات سكالا وجروفي، بالإضافة إلى تطبيقات جافا.
لذا، يُمكن لـ JCSP أن يُقدّم بديلاً لنموذج الممثل في Scala . يستخدم JCSP الاتصال المتزامن، بينما يستخدم الممثلون الاتصال المُخزّن مؤقتًا (غير المتزامن)، ولكلٍّ منهما مزاياه في ظروف مُحدّدة. يسمح JCSP بتخزين قنواته مؤقتًا، مما يُسهّل مُحاكاة نموذج الممثل؛ أما العكس فليس صحيحًا.
انظر أيضاً
- التواصل بين العمليات المتسلسلة ، الرياضيات الكامنة وراء JCSP
مراجع
- 1 2 بيلابوركار، أبهيجيت (21 يونيو 2005). "CSP لمبرمجي جافا" . IBM DeveloperWorks . تم الاسترجاع في 20 أبريل 2007 .
- ↑ ويلش، بيتر؛ مارتن، جيريمي (2000). التحليل الرسمي لأنظمة جافا المتزامنة . هياكل العمليات المتصلة 2000 (تقرير).
- ↑ كيريدج جون؛ بانايوتوبولوس أليكس؛ ليسمور باتريك (2008). "JCSPre: إصدار الروبوت للتحكم في روبوتات LEGO NXT" . هندسة العمليات المتصلة 2008. سلسلة هندسة الأنظمة المتزامنة. منشورات IOS Press. doi : 10.3233/978-1-58603-907-3-255 . مؤرشف من الأصل بتاريخ 18 أبريل 2010.
{{cite book}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط )
روابط خارجية
- مشروع JCSP في جامعة كنت
- إصدار تجريبي مبكر من JCSP
- برنامج مجاني مكتوب بلغة جافا
- الحوسبة المتزامنة
- برنامج يستخدم رخصة جنو العمومية الصغرى
