كوكوا من إنتاج شركة أبل آى إن سى هي واحدة من الواجهات الأساسية لبرمجة التطبيقات التي تعتمد على الكائنات أي بى آى وهى خاصة بنظام التشغيل ماك أو إس إكس وجنبا إلى جنب مع امتداد كوكوا تاتش لبادرة الاعتراف والرسوم المتحركة لتطبيقات آي أو إس على خطوط إنتاج الآيى فون والآيى باد.
تطبيقات كوكوا تطور عادة بواسطة أدوات التطوير التي توفرها شركة أبل، تحديدا إكس كود المعروف سابقا باسم بروجيكت بيلدر وانترفيس بيلدر، باستخدام لغة أوبجكتيف-سى. ومع ذلك بيئة برمجة كوكوا يمكن التعامل معها باستخدام أدوات أخرى، مثل كلوجر سى إل، ليسب وركس، أوبجكت باسكال, بايثون، بيرل، روبي، وأبل سكريبت مع مساعدة آليات سد مثل باس كوكوا، باى أوبجك، كامل بونز وروبى كوكوا. تطبيقا للغة روبى يدعى ماك روبى، الذي يلغى شرط الحاجة إلى آلية السد، هو قيد التطوير من قبل شركة أبل، على الرغم من إن يو لغة تشبه اللثغة والتي يمكن أن تستخدم مع كوكوا بدون سد. من الممكن أيضا أن تكتب برامج كوكوا بلغة اوبجكتف سى في أى محرر نصى وتبنيها يدويا بواسطة جي.سي.سي أو سى لانج من خلال كتابة الأوامر أو بأسلوب مايك فايل. للمستخدمين النهائيين، تطبيقات كوكوا التي تعتبر مكتوبة باستخدام بيئة كوكوا البرمجية. مثل هذه التطبيقات عادة لها شعور مميز، منذ أن قامت بيئة كوكوا البرمجية بأتمتة العديد من جوانب التطبيق حتى تتوافق مع تعليمات واجهة المستخدمين الخاصة بشركة أبل.
تاريخ كوكوا
كوكوا هو استمرار للعديد من الأنظمة في الأصل أداة للتطبيقات وأداة إنشاء من بيئات نكست ستيب وأوبن ستيب البرمجية التي طورت من قبل شركة نكست في عام 1980 وفي عام 1990. أبل حصلت على نكست في ديسمبر سنة 1996، ثم بعد ذلك عملت على نظام تشغيل رابسودى والذي كان يفترض أن يكون خليفة أوبن ستيب. كان لديها قاعدة تضاهى تطبيقات نظام تشغيل ماكنتوش. تدعى بلو بوكس. قاعدة المكتبات والدعم الثنائى الخاصة بأوبن ستيب سميت يلوبوكس. رابسودى تطورت إلى نظام التشغيل ماك إكس، وأصبحت يولو بوكس تابعة لكوكوا. نتيجة لذلك، فئات الكوكوا تبدأ بـ إن إس تشير إلى إما تخليق نكست-صن لأوبن ستيب، أو إلى مصطلح الملكية الأصلية لنظام أوبن ستيب، نكست ستيب : إن إس سترينغ، إن إس أر ايى، إلخ.[1]
تم تطبيق الكثير من العمل الذي دخل حيز التنمية في تطوير نظام التشغيل ماك إكس، كوكوا هو الجزء الأكثر وضوحا. ومع ذلك يوجد بعض الاختلافات. على سبيل المثال، نكست ستيب وأوبن ستيب استخدموا عرض تذييل النصوص والرسومات على الشاشة، بينما تعتمد كوكوا على نظام كوارتز الخاص بشركة أبل والذي يستخدم نموذج التصوير من النوع بي دي إف. كوكوا أيضا مستواها جيد في دعم الإنترنت، بما يتضمن إن إس يو آر إل وفئاتإتش تي إم إل الخاصة بـويب كيت، وغيرهم، في حين كان هناك مستوى بدائى من الدعم أقل من أوبن ستيب للاتصالات الشبكية المدارة من خلال فئات إن إس فايل هاندل و مقابس بيركيلى. قبل الاستخدام الحالى لكوكوا، كانت العلامة التجارية cocoa اسما لتطبيق كان يساعد الأطفال في بناء مشاريع الوسائط المتعددة. كان في الأصل يعرف باسم كيد سيم، والآن مرخص كطرف ثالث ويسوق كصانع ستادج كاست. توقف هذا البرنامج في واحدة من التبريرات التي تبعت وظائف ستيف راجعة لـ أبل. أعيد استخدام الاسم مرة أخرى لتجنب التأخير أثناء تسجيل علامة تجارية جديدة، مع موافقة ستادج كاست لتسويق الكوكوا القديم باسم آخر جديد.
إدارة الذاكرة
واحدة من مميزات بيئة كوكوا هي السهولة في إدارة الذاكرة المخصصة. فئة إن إس أوبجكت الخاصة بكوكوا، من معظم الفئات، البائعين والمستخدمين يستمدون، ينفذون مشروع إحصاء المعلوات لإدارة الذاكرة. الكائنات التي تستمد من فئة جذر الإن إس أوبجكت ترد على رسائل محفوظة ورسائل محررة وتحصى المحفوظات والذي يمكن الاستعلام عنه بواسطة إرسال رسالة عد محجوزة. كائن مخصص جديد صنع بألوك أو كوبى له إحصاء محفوظ. إرسال رسالة محفوظة في الذاكرة لهذا الكائن تزيد إحصاء الحفظ في الذاكرة، بينما إرسال رسالة تحرير يقلل من إحصاء المحفوظ في الذاكرة. عندما يصل إحصاء الكائنات في الذاكرة إلى صفر، لا تخصص مثل سي شارب المدمرة دى ألوك لا يضمن استدعاءه. هذا النهج لإحصاء المعلومات مشابه جدا لذلك الذي في مايكرسوفتكوم، الذي يعرض واجهة يونون. يونون يوفر المعادل لـ ريتاين وريليز في نموذج آد ريف وريلييز. بدءا بـ أوبجكتف سى 2.0، بيئة تشغيل أوبجكتف سى تقدم خيار جامع القمامة، في النموذج، تحول بيئة التشغيل عمليات إحصاء المعلومات الخاصة بـ كوكوا مثل ريتاين وريلييز إلى نو أوبس. جامع القمامة غير متاح على تطبيق الـ آيى فون الخاص بـ أوبجكتف سى 2.0. تجميع القمامة في أوبجكتف سي يعمل على ترابط خلفية ذات أولوية منخفضة، ويمكن أن يتوقف على أحداث مستخدم كوكوا، بقصد إبقاء تجاوب المستخدم بخبرته.
الأطر الرئيسية
يتكون كوكوا مبدئيا من مكتبتى كائنات أوبجكتف سى تسمى فرام وركس. فرام وركس عمليا مشابهة لمكتبات المشاركة، كائن معالج يمكن فعليا أن يحمل داخل فراغ عنوان البرنامج في وقت التشغيل، ولكن فرام وركس أضافت الموارد المرتبطة، رأس الملفات والوثائق.
- أداة التأسيس، أو الاسم الأكثر شيوعا وبساطة المؤسسة، أول ظهورها كان في أوبن ستيب. على نظام تشغيل ماكنتوش إكس، ويعتمد على قلب الأساس. فونديشن يعتبر مكتبة كائنات عامة توفر معالجة نصوص وقيم، الحاويات والتكرار والحوسبة الموزعة، تشغيل الحلقات، ووظائف أخرى ليس لها علاقة مباشرة بالواجهة الرسومية للمستخدم. الحروف إن إس، تستخدم لجميع الفئات والثوابت في الإطار، أساسها تراث نكست ستيب.
- أداة التطبيق أو آب كيت تنحدر مباشرة من أداة التطبيق الأصلية الخاصة بنكست ستيب. تحتوى على كود بالبرامج التي يمكن أن تبنى وتتفاعل مع الواجهة الرسومية للمستخدم. آب كيت صممت على رأس المؤسسة، وتستخدم أيضا إن إس.
الجزء الأساسي في بنية كوكوا هو نموذج المشهد الشامل. نظمت بناء على الخطوط التقليدية لإطار التطبيق، ولكنها أسست على نموذج رسم بي دى إف المقدم من قبل كوارتز. مما يسمح ببناء محتوى رسومى مألوف باستخدام أوامر أشباه التذييل الرسومية، والذي يسمح أيضا بالدعم الأوتوماتيكى للطابعة وهكذا دواليك. منذ أن كان كوكوا يعالج كل اللقطات، التمرير، توسيع نطاق الأعمال وغيرها من الأعمال الروتينية الخاصة بالرسومات، تخلص المبرمج من انشغاله بالبناء الأساسي ويستيطع أن يركز فقط في الجوانب الفريدة في محتوى التطبيق.
التحكم في عرض النموذج
استقر فريق سمال تاك لـ زيروكس بارك أخيرا على فلسفة في التصميم تؤدى إلى سهولة التطوير وإعادة استخدام الأكواد. تعرف باسم موديل فيو كونترولر إم في سي، يقسم المفهوم التطبيق إلى ثلاثة مجموعات من فئات الكائنات المتفاعلة.
- فئات نموذج تمثل بيانات صف، مثل الوثائق، الإعدادات، الملفات، أو كائنات داخل الذاكرة.
- المناظر، كما يوحى الاسم، تمثيل مرئى للبيانات في النموذج.
- فئات تحكم تحتوى على منطق يربط النماذج بمناظرها، ويقوم بصيانة الحالة حتى يبقيهم متزامنين.
تصميم كوكوا هو تطبيق صارم لمبادئ إم في سى. تحت أوبن ستيب معظم الفئات التي قدمت كانت إما فئات مناظر عالية المستوى إن أبيكت أو واحدة من عدة فئات نماذج ذات المستوى المنخفض نسبيا مثل إن إس سترينج. بالمقارنة بأنظمة إم سي في الشبيهة، أوبن ستيب تفتقر لطبقة نموذج قوية. لم يكن هناك فئة مخزون والتي تمثل وثيقة، على سبيل المثال. أثناء التحول إلى كوكوا، امتدت طبقة النموذج بشكل عظيم، تقدم عدد من فئات برى رولد لكى توفر وظيفة مشتركة لتطبيقات سطح المكتب.
في نظام تشغيل ماك إكس 10.3، قدمت شركة أبل فئات عائلة إن إس كونترولر، التي تقدم مسبقا سلوك طبقة التحكم. تعتبر هذه الفئات جزء من نظام ارتباطات كوكوا، والذي يوفر أيضا استخدام شامل للبروتوكولات مثل مراقبة قيم المفتاح وارتباط قيمة المفتاح. المصطلح ارتباط يشير إلى العلاقة بين كائنين، غالبا بين منظر ومتحكم. تسمح الارتباطات للمطورين بالتركيز أكثر على العلاقات التعريفية بدلا من تنظيم السلوك.
بعد أن حل إصدار ماك إكس 10.4، قامت أبل بتوسيع هذه المؤسسة أكثر بطرح نظام البيانات الأساسية، والذي يختبر تغيير التتبع والثبات في طبقة النموذج. في الواقع، النظام يسهل عملية التغيير لبيانات التطبيق بشكل كبير جدا، إلغاء التغييرات عند الضرورة، يخزن البيانات في القرص، ويقرأها مرة أخرى.
من خلال تقديم الدعم للنظام لكل طبقات إم في سى، هدف أبل أن تقلل كمية الكود النمطى الصمغى الذي يضطر المبرمجين لكتابته، وتحرير الموارد لقضاء الوقت على المميزات الخاصة بالتطبيق.
الربط المتأخر
في جميع لغات البرمجة التي تعتمد على مفهوم الكائنات، استدعاء الأساليب يمثل بمؤشر للكود في الذاكرة. مما يقيد تصميم التطبيق منذ أن كانت فئات الأوامر مطلوبة، عادة تنظم طبقا لى سلسلة مسئولية نمط التصميم. بينما استبقت كوكوا منهج الربط المتأخر لـ أوبجكتف سى والذي يتيح مرونة أكثر.
قبل أوبجكتف سى كانت الأساليب تمثل بمحدد، مجموعة حروف تصف كيف يستدعى الأسلوب. عندما ترسل رسالة، يرسل المحدد من خلال بيئة تشغيل أو بى جى سى، تقارن مع قائمة من الأساليب المتاحة، وتستدعى أساليب التطبيق. منذ أن كان المحدد بيانات نصية، سمح هذا بأن تحفظ في ملف، تنتقل من خلال شبكة أو بين عمليات، أو تعالج بطرق أخرى. تطبيق الأسلوب يطبق في وقت التشغيل، ليس في وقت التجميع. هناك عقبة صغيرة في الأداء في هذا، ولكن الارتباط المتأخر يسمح لنفس المحدد بالإشارة لتطبيقات مختلفة.
بواسطة نموذج مماثل، تقدم كوكوا أسلوب دقيق لمعالجة البيانات يسمى صياغة قيمة المفتاح كى في سى[2]. مما يسمح لجزء من البيانات أو لخاصية كائن أن تتغير أو تطبق في وقت التشغيل بواسطة اسمها. اسم الخاصية يمثل مفتاح للقيمة نفسها. في اللغات التقليدية، هذا الارتباط المتأخر غير موجود. كي في سي يقود إلى مرونة كبيرة في التصميم. نوع الكائنات ليس بالضرورة أن يكون معروف، الآن أى خاصية لأى كائن يمكن أن تكتشف باسطة كى في سى. بالإضافة إلى، بتطوير هذا النظام بشئ تسميه كوكوا مراقبة قيمة المفتاح كى في أو، يقدم دعم أوتوماتيكى للتراجع وتكرار الفعل.
الرابط الثابت المتأخر مختلف بشكل أو بآخر عن الربط في الربط الثابت والمتحرك. ربط الأسماء قبل أن يعمل البرنامج يسمى ثابت مبكر : الارتباطات التي تجرى عند تشغيل البرنامج تسمى متحركة متأخر أو واقعى.
الكائنات الغنية
واحدة من أهم المميزات المفيدة لـ كوكوا هي قوة "كائنات القاعددة" التي يوفرها النظام. على سبيل المثال، تأمل فئات الإنشاء إن إس سترينج وإن إس أتربيوتيد سترينج، والتي توفر سلسلة نظام الحروف الدولي الموحد، ونظام إن إس تكست في آب كيت، والذي يسمح للمبرمج بأن يضع كائنات النصوص في واجهة المستخدم الرسومية.
تستخدم إن إس تكست والفئات الخاصة بها لعرض وتحرير النصوص. مجموعة الكائنات المستخدمة تسمح للتطبيق بأن ينفذ أى شيء من خلال حقل إدخال من سطر واحد بسيط حتى صفحات متعددة كاملة، مخطط عرض نصى متعدد الأعمدة، مع مميزات احترافية في الطباعة مثل تقليص المسافات والحروف المركبة، التعامل مع النصوص من خلال الأشكال التعسفية، والتدوير، والدعم الكامل لنظام الحروف الدولي الموحد وتقديم الشكل المنقوش بلا اسم مستعار. تصميم الفقرة يمكن أن يتحكم فيه أوتوماتيكيا أو من قبل المستخدم، باستخدام كائن "المسطرة" والذي يمكن ربطه بأى عرض نص. التدقيق الإملائى أوتوماتيكى، باستخدام قاموس واحد تستخدمه التطبيقات التي تستخدم "التسطير المتعرج" الذي قدمته مايكروسوفت التسطير الأحمر المتقطع في كوكوا. دعم مطلق مدمج للتراجع وتكرار الفعل. باستخدام المميزات المدمجة فقط، يمكن كتابة تطبيق محرر نصى في عشر أسطر فقط من الأكواد. مع كائنات التحكم الجديدة، يمكن أن يصل إلى أقل من سطر. هذا عكس المحرر النصى أي بى آى إس الذي كان يوجد في نظام تشغيل ماك القديم.
عندما كان هناك حاجة إلى التطوير، استخدام كوكوا لـ أوبجكتف سي جعل هذا مهمة بسيطة. يتضمن أوبجكتف سى مفهوم الـ "الفئات" الذي يسمح بالتعديلات لأى طبقة "إن بلايس" موجودة. الوظيفة يمكن أن تنجز في فئة بدون أى تغيرات للطبقات الرئيسية في الإطار، أو الوصول لمصدرها. كانت هذه المهمة تتطلب من المبرمج أن يعمل فئات فرعية تدعم المميزات الإضافية في الأنظمة الشائعة قبل هذا النظام، ثم يقوم بتغيير جميع نماذج الطبقة للطبقة الجديدة.
التطبيقات
إطارات كوكوا تكتب بأوبجكتف سى، ولذلك أوبجكتف سي هي اللغة المفضلة لتطوير تطبيقات كوكوا. ارتباطات جافا لإطارات كوكوا عرفت باسم "جسر الجافا" متوفر أيضا ولكن لم تثبت شعبيته بين مطورين كوكوا. علاوة على ذلك، تعنى الحاجة إلى ربط وقت التشغيل العديد من المميزات الرئيسية لكوكوا غير متوفرة في الجافا. في عام 2005، صرحت أبل بأن جسر جافا كان مستنكر، مما يعنى أن المميزات التي أضيفت لكوكوا في إصدارات نظام التشغيل ماك إكس بعد 10.4 لم تكن أضيفت لواجهة جافا- كوكوا البرمجية.
في الأصل، ستوديو ابل سكريبت كان يمكن أن يستخدم لتطوير تطبيقات كوكوا أقل تعقيدا.[3] ومع ذلك، كما الفهد الجليدى، كان مستنكرا. لقد استبدل بـ أبل سكريبت أو بى جى سى، والذي يسمح لك بالبرمجة في أبل سكريبت، أثناء استخدامك لإطارات كوكوا.[4]
ارتباطات الطرف الثالث متوفرة للغات أخرى تتضمن كلوجر سي إل، ليسب وركس، باى أو بى جى سى، روبى كوكوا، كام بونز، كوكوا# ومونو أو بى جى سى وسى #.[5] إن يو يستخدم نموذج كائنات أوبجكتف سي مباشرة، ولذلك يمكن أن يستخدم إطارات كوكوا بدون الحاجة للربط.
هناك أيضا تطبيقات مفتوحة المصدر لأجزاء رئيسية لإطارات كوكوا التي تتعامل مع أنظمة التشغيل وتتضمن مايكروسوفت ويندوز تطوير تطبيقات كوكوا، مثل جي إن يو ستيب، وكوكوترون.
ملاحظات
- [1] "Cocoa is an important inheritance from NeXT, as indicated by.. the "NS" prefix" - Mac OS X internals: a systems approach By Amit Singh, نسخة محفوظة 07 أبريل 2015 على موقع واي باك مشين.
- Key-Value Coding Programming Guide: Introduction - تصفح: نسخة محفوظة 21 فبراير 2009 على موقع واي باك مشين.
- "Applescript Studio Programming Guide (Legacy): About Applescript Studio". Apple, Inc. مؤرشف من الأصل في 13 أبريل 201305 مارس 2011.
- "ApplescriptObjC Release Notes". Apple, Inc. مؤرشف من الأصل في 25 أغسطس 201605 مارس 2011.
- more extensive list of implementations - تصفح: نسخة محفوظة 18 أبريل 2016 على موقع واي باك مشين.
المراجع
- Aaron Hillegass: Cocoa Programming for Mac OS X, Addison-Wesley, 3rd Edition 2008, Paperback, .
- Stephen Kochan: Programming in Objective-C, Sams, 1st Edition 2003, Paperback, .
- Michael Beam, جيمس دونكان ديفيدسون: Cocoa in a Nutshell, أوريلي ميديا, 1st Edition 2003, Paperback, .
- Erick Tejkowski: Cocoa Programming for Dummies, 1st Edition 2003, Paperback, .
- Simson Garfinkel, Michael K. Mahoney: Building Cocoa Applications: A Step by Step Guide, أوريلي ميديا, 1st Edition 2002, Paperback, .
- جيمس دونكان ديفيدسون: Learning Cocoa with Objective-C, أوريلي ميديا, 2nd Edition 2002, Paperback, .
- Scott Anguish, Erik M. Buck, Donald A. Yacktman: Cocoa Programming, Sams, 1st Edition 2002, Paperback, .
- Bill Cheeseman: Cocoa Recipes for Mac OS X, Peachpit Press, 1st Edition 2002, Paperback, .
- Andrew Duncan: Objective-C Pocket Reference, أوريلي ميديا, 1st Edition 2002, Paperback, .
- أبل: Learning Cocoa, أوريلي ميديا, 1st Edition 2001, Paperback, .
وصلات خارجية
- Apple's Cocoa documentation
- iDevApps - Cocoa Programming Forum
- Cocoa Dev Central
- Cocoa Dev
- Cocodao - D/Cocoa bridge for creating Cocoa applications in D language