الخميس، 19 نوفمبر 2015

بيئات التطوير المتكاملة الداعمة لمنصة Xamarin والحصول على منصة Xamarin

مستوى المقالة: مبتدئ
المتطلبات السابقة لقراءة هذه المقالة:
-          إلمام بأساسيات لغة البرمجة C# وبيئة التطوير المتكاملة فيجوال ستوديو
-          إلمام بأساسيات التطوير لمنصة واحدة على الأقل من منصات الهواتف الذكية

تحدثنا في المقالة السابقة عن منصة Xamarin التي توفر ميزة تطوير تطبيقات أصيلة native apps للهواتف الذكية على منصات متعددة باستخدام لغة سي شارب. في هذه المقالة سأتحدث عن بيئات التطوير المتكاملة – Integrated Development Environment - الداعمة لمنصة Xamarin ، كما سنقوم باستعراض تطبيق Hello World لنظام الأندرويد، ومن ثم سنناقش الحصول على منصة Xamarin، وعرض Xamarin لطلبة الجامعات وطريقة الحصول عليه، بالإضافة إلى اشتراك برمجيات DreamSpark المقدم مجانا للطلبة من مايكروسوفت.
بيئة التطوير الافتراضية التي تأتي مع منصة Xamarin هي Xamarin Studio ، وهي بيئة تطوير متكاملة مشابهة لفيجوال ستوديو Visual Studio ، مع أخذ الفارق بعين الاعتبار بين بيئة التطوير فيجوال ستوديو الاحترافية والثرية بالكثير من المزايا والإمكانيات وبين Xamarin Studio ، في الأسفل لقطة شاشة لـ Xamarin Studio
 
ليست بيئة التطوير Xamarin Studio هي البيئة الوحيدة للتطوير مع منصة Xamarin، مرحبا بمايكروسوفت فيجوال ستوديو، يدعم فيجوال ستوديو التطوير لمنصة Xamarin ، وبالتالي سيكون فيجوال ستوديو هو الخيار الأنسب لمبرمجي سي شارب بحكم الألفة معه، أيضا باعتقادي أن استخدام فيجوال ستوديو والاستغناء عن زامارين ستوديو هو الخيار الأفضل لكثرة المزايا والإمكانيات التي يوفرها فيجوال ستوديو والتي تجعل منه – باعتقادي - أفضل بيئة تطوير متكاملة على الإطلاق – سأخصص في الفترة القادمة سلسلة من المقالات عن فيجوال ستوديو 2015 تتناول العديد من مزاياه وإمكانياته - .
سنستعرض الآن تطبيق Hello World بسيط لمنصة الأندرويد. يرجى اتباع الخطوات التالية:
1.       من فيجوال ستوديو 2015 توجه لنافذة إنشاء مشروع جديد، من القوالب المدرجة تحت لغة سي شارب اختر Android ثم اختر مشروعBlank App(Android)  كما هو موضح في الصورة.
 
2.       ستظهر شاشة كما في الأسفل تطلب تسجيل الدخول باستخدام حساب Xamarin أو إنشاء حساب جديد لدى Xamarin ، حتى لو قمت بعمل Build للمشروع لن يتم ذلك حتى تقوم بتسجيل الدخول أولاً.  النافذة التي في منتصف الصورة توضح تفعيل اشتراكي لدى Xamarin والذي هو من نوع Xamarin Business. سنتحدث عن اشتراكات Xamarin لاحقا. 
 
3.       في نافذة مستعرض الحل solution explorer ستجد ملفات المشروع - سنتناول هذه الملفات وغيرها من المواضيع المتعلقة بالتطوير للأندرويد مع منصة Xamarin بشكل أكثر تفصيلاً في المقالة القادمة عن Xamarin.Android والتي ستتضمن تطوير تطبيق أندرويد احترافي من الصفر - ، ما يهمنا في هذه النافذة الآن هما ملفان، ملف Main.axml وهو واجهة المستخدم المكتوبة بلغة xml ، والملف الأخر وهو MainActivity.cs وهو ملف النشاط المرتبط بواجهة المستخدم السابقة والمكتوب بلغة C#.
 
4.       توجه إلى ملف Main.axml للإطلاع عليه فقط، ستجد أنك تستطيع تحرير واجهة المستخدم بشكل رسومي أو عبر التعديل على مصدر الـ xml كتابة. لن نقوم بأي تعديلات على واجهة المستخدم. 
5.       توجه إلى ملف MainActivity ، ستجد الشفرة التالية: 
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
 
namespace App1
{
    [Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        int count = 1;
 
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
 
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
 
            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.MyButton);
 
            button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
        }
    }
}
 
الشفرة السابقة مكتوبة بلغة سي شارب! دعنا نغض الطرف عن بعض سطور هذه الشيفرة لأن مقالتي القادمة سوف تتحدث عنها بشكل مفصل. دعنا نتوجه الآن إلى السطرين التالية بداخل الوظيفة OnCreate :
            Button button = FindViewById<Button>(Resource.Id.MyButton);
 
            button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
 
السطر الأول مهمته إنشاء إشارة إلى الزر الموجود في واجهة المستخدم Main.axml والذي يحمل الاسم MyButton. إذاً المتغير button يمثل زر MyButton. أما السطر الثاني فيمثل وظيفة مجهولة Anonymous method تم ربطها بحدث النقر Click event للزر button وعندما يحدث النقر على الزر يتم تنفيذها. تقوم هذه الوظيفة بحساب عدد النقرات التي تمت على هذا الزر وتخزينها في المتغير count المعرف على مستوى الكلاس.
6.       قم بتجربة البرنامج عبر نشره إلى هاتف أندرويد حقيقي أو إلى محاكي أندرويد الخاص بفيجوال ستوديو Visual Studio Emulator for Android ، سأقوم باستخدام محاكي اندرويد الخاص بفيجوال ستوديو كما في الصورة.
 
الحصول على Xamarin
منصة Xamarin هي منصة تجارية، ولكن إذا أدرت نسخة مجانية ومحدودة الإمكانيات فبإمكانك التوجه إلى حزمة Starter، للحصول عليها توجه إلى الرابط التالي http://xamarin.com/starter . للنسبة للحزم الأخرى فهي حزم تجارية يمكنك الاطلاع عليها في متجر Xamarin عبر الرابط التالي http://store.xamarin.com .
إذا كنت طالب/طالبة فبإمكانك الحصول خطة الـ Business مجاناً، للمزيد يمكنك زيارة الرابط التالي http://xamarin.com/student . أيضاً إذا كنت طالب/طالبة فيمكنك الحصول على العديد من البرمجيات الأصلية مجانا عبر برنامج DreamSpark الذي تقدمه شركة مايكروسوفت لتوفير اشتراكات للحصول على برمجيات أصلية مجانا للطلبة، ومن هذه البرامج منصة Xamarin بالتعاون مع شركة Xamarin. للحصول على اشتراك DreamSpark توجه إلى أندية مايكروسوفت أو ممثلي مايكروسوفت في جامعتك أو كليتك لطلب الاشتراك، وإذا كنت مقيم في السعودية وبحاجة بمزيد من المعلومات فيمكنك التواصل مع Microsoft Imagine في السعودية عبر حسابهم الرسمي على تويتر http://twitter.com/@MSFTImagineSA . 

الاثنين، 16 نوفمبر 2015

مقدمة إلى منصة Xamarin

مستوى المقالة: مبتدئ
المتطلبات السابقة لقراءة هذه المقالة:
-          إلمام بأساسيات لغة البرمجة C# وبيئة التطوير المتكاملة فيجوال ستوديو
-          إلمام بأساسيات التطوير لمنصة واحدة على الأقل من منصات الهواتف الذكية

في هذه المقالة سنتعرف على منصة زامارين Xamarin platform لتطوير تطبيقات الهواتف المحمولة، ولمتانة العلاقة بين Xamarin ولغة البرمجة سي شارب C# المطورة بواسطة مايكروسوفت، سأبدأ بالحديث أولاً عن لغة سي شارب. ثم سأنطلق بالحديث عن Xamarin.
ما الذي تستطيع تطويره باستخدام لغة سي شارب؟ ولماذا لغة سي شارب؟
لغة سي شارب هي مثال راقي – إن لم تكن الأرقى J – في عالم لغات البرمجة وتطوير المشاريع البرمجية، يمكنك بناء العديد من أنواع المشاريع المعتمدة على إطار عمل دوت نت .NET Framework باستخدام لغة سي شارب، تستطيع باستخدام سي شارب إنشاء تطبيقات سطح المكتب لنظام ويندوز، تطبيقات الويب، خدمات الويب، تطبيقات قواعد البيانات، تطبيقات الهواتف الذكية والكثير الكثير.
إذاً بالإمكان العمل مع لغة سي شارب لتطوير تطبيقات الهواتف الذكية، ولكن لأي منصة أو نظام تشغيل يمكن ذلك؟ لعل الإجابة البديهية هي نظام ويندوز فون بحكم أن كلاً من لغة سي شارب ونظام ويندوز فون تم تطويرهما بواسطة شركة مايكروسوفت! إجابة صحيحة، ولكن ماذا عن أنظمة التشغيل الأخرى، هل يمكن استخدام لغة C# للتطوير لنظام iOS من شركة Apple أو للتطوير لنظام Android من شركة Google؟ بكل تأكيد، وهذه هي المهمة التي تولتها منصة Xamarin. إذاً مع لغة برمجة أنيقة مثل لغة سي شارب تعمل مع إطار عمل رائع ومدعومة بشكل رسمي بواسطة بيئة التطوير المتكاملة – IDE – فيجوال ستوديو Visual Studio ، وتعمل على أكثر من 2.5 مليار جهاز، فإنه يمكننا القول بأن شركة Xamarin قد أحسنت اختيار لغة البرمجة التي ستدعمها منصة Xamarin لتطوير تطبيقات الهواتف الذكية.
إذاً منصة Xamarin هي منصة لتطوير تطبيقات الهواتف الذكية على منصات متعددة باستخدام لغة واحدة هي لغة سي شارب – عندما توفر تقنية ما إمكانية التطوير مرة واحدة ومن ثم النشر على أكثر من منصة، فإننا نقول أن هذه التقنية تدعم Cross-Platform Development أو بالعربية التطوير على منصات متعددة –، قد يقول قائل ما الجديد حتى الآن؟ توجد بعض أطر العمل التي توفر التطوير على منصات متعددة مثل Apache Cordova ! ما الذي يميز منصة Xamarin عن غيرها؟ الجواب أن منصة Xamarin توفر إمكانية تطوير تطبيقات أصيلة native apps، وبهذه الميزتين فقد جمعت منصة Xamarin الحُسْنَيين: Cross-Platform development + native app .
حسنا، تعرفنا الآن على مصطلح التطوير على منصات متعددة، ولكن ماذا نقصد بتطبيقات أصيلة native apps ؟ الإجابة ببساطة هي أن التطبيق الذي ستبنيه باستخدام منصة Xamarin لاستهداف منصة ما سيتم إنتاجه كما لو أنه طور باستخدام أدوات المطورين المخصصة للتطوير لتلك المنصة، إذاً لا فرق في الأداء أو واجهات المستخدم أو الوصول الغير مقيد لوظائف وواجهات النظام البرمجية بين تطبيق تم تطويره لنظام Android باستخدام أداوت المطورين الخاصة بنظام أندرويد ولغة جافا مثلاً وبين التطبيق الذي تم تطويره باستخدام منصة Xamarin ولغة سي شارب.
دعنا نفترض أن لديك تطبيق ترغب بتطويره لكي يعمل على جميع المنصات المتوفرة للهواتف الذكية Windows Phone ، iOS ، و Android. ما هي مقاربات أو طرق التطوير المتاحة لك.
المقاربةSilo
مقاربة Silo هي المقاربة التقليدية لتطوير تطبيقات الهواتف الذكية التي تعمل على منصات متعددة. تعتمد مقاربة Silo على استخدام أدوات المطورين المخصصة للتطوير لكل المنصة، وبالتالي فإننا نتحدث بيئات تطوير متعددة ومختلفة، وبالتالي مجموعات تطوير متعددة، انعدام في تشارك الأكواد، بطأ في إنجاز التطبيق، ومزيد من التكاليف. في المقابل، سنحصل على تطبيق أصيل. إذاً مع هذه المقاربة ستكون المهمة شاقة على الجهة المسؤولة عن تطوير التطبيق، ولكن سيتم الحصول على مخرجات كفؤة.
 


مقاربة الكتابة مرة واحدة والعمل على أماكن متعددة Write Once, Run Anywhere
هذه أسوأ مقاربة يمكن أن تستخدمها لتطوير تطبيقات الهواتف الذكية، يُستخدَم في هذه المقاربة تقنيات ولغات ليس لها أي علاقة بتطوير تطبيقات الهواتف الذكية، مثل الـ HTML، CSS، و JavaScript وينتج عنها تطبيقات غير أصيلة تعاني من بطء الأداء وتجربة مستخدم UX سيئة مع وصول مقيد لموارد وإمكانيات النظام.
 
مقاربة Xamarin
في المقاربة الأولى حصلنا على تطبيقات أصلية ولكن مع خسارة ميزة التطوير على منصات متعددة، وفي المقاربة الثانية حصلنا على ميزة التطوير على منصات متعددة، ولكن مع خسارة الحصول على تطبيقات أصيلة. ما قامت به Xamarin هو الجمع بين تلك الميزين، فأصبح بالإمكان تطوير تطبيقات أصيلة على منصات متعددة مع منصة Xamarin. لاحظ أن هذه المقاربة توفر إمكانية استخدام لغة سي شارب لتطوير الـ app logic أو الشيفرة الخلفية للتطبيق، ولكن لا توفر تشارك في استخدام اللغات الخاصة بتطوير واجهات المستخدم UI للتطبيق، فعند تطوير تطبيق للويندوز فون فإن خيار تطوير واجهة المستخدم في هذه الحالة هو XAML، وفي الأندرويد XML ، وفي iOS هو XIB. أيضا لابد من الإشارة إلى أن استخدام لغة سي شارب كلغة موحدة لكتابة الشفرة الخلفية لا يعني تطابق الشفرة الخلفية تماما عبر المنصات المختلفة، يوجد بعض التطابق، وأيضا يوجد بعض الاختلاف الذي يراعي خصوصية كل منصة عن الأخرى، ولكن في الأخير يضل الكود مكتوباً بلغة واحدة وهي لغة سي شارب. حتى الآن تعتبر هذه المقاربة ممتازة وشائعة الاستخدام لمطوري تطبيقات الهاتف المحمول باستخدام منصة Xamarin، ولكن دعونا نرى ما الذي سوف تقدمه المقاربة التالية من Xamarin أيضا.
 
 
المقاربة المثالية Xamarin.Forms
وهي الحل الجديد المقدم من Xamarin والذي أتاح إمكانية استخدام لغة واحدة لبرمجة الشفرة الخلفية – كما هو الحال مع المقاربة القديمة- ، وأيضا وفر خيارات موحدة لتطوير واجهات المستخدم لجميع المنصات، مع Xamarin.Forms يمكن تطوير واجهات المستخدم لجميع المنصات المختلفة باستخدام لغة سي شارب أو لغة XAML التي طورتها شركة مايكروسوفت أيضا.
 
بذلك تكون هذه نهاية المقالة، تحدثنا فيها عن منصة Xamarin ودعمها لتطوير تطبيقات أصيلة للهواتف الذكية على منصات متعددة باستخدام لغة سي شارب. في المقالة التالية سأتحدث عن بيئات التطوير المتكاملة الداعمة لمنصة Xamarin ، كما سنقوم باستعراض تطبيق Hello World لنظام الأندرويد، ومن ثم سنناقش عرض Xamarin للطلاب وطريقة الحصول عليه.