kotlin

تطوير تطبيقات الأندرويد بكوتلين!

أعلنت جوجل أمس فى المؤتمر أن كوتلين أصبحت لغة معتمدة من الدرجة الأولى للتطوير للأندرويد لذلك سنأخذ جولة اليوم معا فى التعرف على كيف يكون شكل التطبيق والامور الشائعة التى عهدناها فى الاندرويد اغلب التطبيقات مع كوتلين، إذا لم يكن لديك سابق معرفة بكوتلين يمكنك مراجعة سلسلة أساسيات كوتلين ثم تعود الى هنا مرة اخرى للمتابعة.

 

 

تجهيز الـ Android Studio 

حتى يتم وصول تحديث Android 3 ودعم الكوتلين بشكل رسمى من الاندرويد ستوديو سنقوم باستخدام الاضافة المتوفرة حاليا. قم بالذهاب الى preferences -> plugins وقم بالبحث عن اضافة اسمها “Kotlin” ثم قم بتنصيبها وإعادة تشغيل الـ Android Studio وستجد أنه ظهر لديك خيار جديد ظهر فى القائمة Code وهو خيار Convert Java to Kotlin وهذا الخيار يسمح لك بكل سهولة تحويل ملف جافا بالكامل لـصيغة كوتلين !

قم بعمل مشروع جديد فى أندرويد ستوديو ثم فى الأكتيتيفى الرئيسى MainActivity قم باختيار Code->Convert Java File to Kotlin File وسيتم تحويل الأكتيتيفى من صغية الجافا الى صيغة كوتلين وتجد الكود الجديد مكتوب بلغة كوتلين

قد تقابل هذه الرسالة اذا ظهرت قم بالضغط على Ok

سنلقى نظرة الان على الملف بعد تحويله لصيغة كوتلين ونشاهد التغيرات التى حدثت وكيف يكون شكل الأكتيتيفى عند الكتابة بكوتلين

 

ملحوظة 1: 

أول ملحوظة ستلاحظها وهى أنه لا يوجد سيمى كولن وهو أمر رائع لا داعى لكتابة سيمى كولن باخر كل سطر حان الوقت ليفهم الكومبايلر بنفسه أن السطر انتهى ويصبح أكثر ذكاءا .

ملحوظة 2: 

الباراميترز فى أقواس الدوال ستجد أنها فى صيغة كوتلين مختلفة عن صيغة الجافا حيث فى الجافا تجد أن كل بارامتير عباره عن النوع ثم مسافة ثم اسم الباراميتر مثال String name أو int age  أما فى كوتلين نقوم بكتابة اسم البارميتر أولا ثم نوعه ثانيا بعد كولن : كالتالى name:String أو age:Int

طبعا فى القوس الأول يوجد علامة استفهام انسى أمرها حاليا سنتحدث عنها حينما نصل لملحوظة الـ null saftey

ملحوظة 3: 

تعريف المكونات حيث اعتدنا فى جافا عند تعريف TextView او EditText او اى View اخر ان نقوم بكتابة نوع المتغير ثم مسافة ثم اسمه مثل EditText username ، EditText password ،ImageView userImage
أما فى كوتلين عند تعريف المتغيرات نستخدم var وللثوابت نستخدم val وسنركز حاليا على المتغيرات نعرف المتغيرات كالتالى var username:EditText ،var password:EditText، var userImage:ImageView

 

ويمكنك تعريفه كثابت باستخدام val بدلا من var ليكون كالتالىval username:EditText ،val password:EditText،val userImage:ImageView  الفرق بين الاثنين ان var متغير ويمكنك اسناد قيمة اخرى له عن طريق = مرة اخرى لكن ال val يكون قميته ثابته ولا نستطيع اسناد قيمة جديدة اليه

 

ملحوظة 4 : 

الـ Casting فى الجافا اى تحويل الكلاس من فئة اعلى الى فئة اقل مثل ما نفعل عند findViewById نقوم بوضع نوع المتغير أو الثابت بين قوسين (TextView) او اى مكون اخر لعمل الـ Casting فى كوتلين يتم عمل الـ Casting باستخدام الكلمة as كالتالى

 

ملحوظة 5: 

الـ Lambada واذا سبق لك استخدام الجافا 8 فستعرف ما هى وهى عباره عن طريقة مختصرة فى كتابة الكود

حيث تلاحظ فى الكود السابق لا يتوجب عليك عمل new OnClickListener فقط افتح الـ Bracktes وأغلقها واكتب الكود بداخلها ففى الكود السابق يمكن حذف كلمة view والسهم بعدها وكتابة الكود مباشرة ان كنت لن تحتاج الـ view اثناء تنفيذ الكود .

 

ملحوظة 6: 

الـ null safety وهى أحد المميزات القوية فى لغة كوتلين حيث لن يقابلك الـ Exception المزعج NullPointerException الا اذا قمت باجبار التطبيق على ذلك بنفسك !

حيث سابقا عند تعريف متغير بدون قيمة سابقا فى الجافا كنا نعرفه بهذه الطريقة

واذا قمنا بتشغيل التطبيق سنجد أنه هناك null Exception فى هذا السطر لأنه حاول الوصول الى الـ Text View ولم يستطع  لانه غير معرف ولم نقم بعمل findViewById

اما فى كوتلين نعرفه كالتالى :

وعلامة الاستفهام تشير الى أن هذا الـ TextView Optional بمعنى اختيارى او قد يكون له قيمة أو قد لا يكون لذلك ان لم نضع علامة الاستفهام  لن يقبل أن = null ابدا

وهنا عند السطر الخاص ب setText اسمه هنا text اختصارا ويمكنك ايضا استخدام ميثود setText بشكل عادى لكن كوتلين توفره كا اختصار  تسند به القيمة المهم عند تشغيل التطبيق فى حالتنا هذه لا يوجد textView والمتغير هذا لا يشير الى text view موجود فى الـ xml ومن المتوقع ان يتوقف التطبيق ويظهر null Exception لكن طالما استخدمنا علامة الاستفهام قبل .text فانه سوف يقوم باسناد الـ text الى الـ TextView فقط إن كان معرف ولا يساوى null أما ان كان يساوى null فلن يتابع ولن يقوم بعملية اسناد الـ text وهذا ما يجعل تطبيقك أمن بحيث ان كان شىء يساوى null لا يتوقف التطبيق فجأة مصدرا null porinter exception لكن يمكنك ايضا اجبار التطبيق على التوقف واظهار null exception بشكل اجبارى كالتالى :

فى هذه الحالة سيتم ايقاف التطبيق وظهور null exception فى حالة كون الـ textView = null

وهذا سبب ظهور علامة الاستفهام بجانب كلمة Bundel

 بمجرد أن حولنا الكود أى انه اذا استدعيت الـ savedInstanceState وكانت قيمتها null واستخدمتها لعمل شىء معين لن يتوقف التطبيق لكن لن يتم الامر الذى تريد عمله بها فقط .

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

وبالنسبة للجافا فإن كوتلين تعمل على الـ jvm اى لا تتوقع ان يتم ايقاف التعامل بالجافا حاليا او فى المستقبل القريب يمكنك الاستمرار بالعمل بالجافا اذا اردت

أين تذهب من هنا ؟ 

يمكنك الإطلاع على مكتبة  الـ Anko  التى تجعل معظم الاعمال البرمجية التى تقوم بها أكثر سلاسة ويسرا .

ايضا يمكنك الإطلاع على Kotlin Android Extensions وهى عباره عن اضافة تجعلك تتخلى عن findViewById واستخدام الids التى عرفتها مباشرة فى الجافا .

وإذا كنت مللت من ال putExtras والـ getExtras عند ارسال البيانات واستقبالها فإن اضافة ActivityStarter ستجعلك سعيدا ومتستمعا بارسال البيانات ومتفائلا بالحياه

ثم القى نظرة على المصادر والمكتبات المتوفرة هنا  واستمتع بكوتلين !

Happy Coding

السابق
تحميل المزيد عند عمل سكرول للأسفل فى Recycler View
التالي
Twitter API : عرض التويتات فى التطبيق

6 تعليقات

أضف تعليقا

  1. محمد قال:

    جميل جداً٫ يعجبني اسلوبك واهنيك على الكتابة المباشرة حول الاحداث الجديدة.

  2. hatem قال:

    شكرا ولو سمحت اذا ينقلنا زين في دورات للغة

    1. Hendiware قال:

      شوف اللينكات فى الاخر

  3. Mohamed Ibrahim قال:

    برأيك ما السبب الذي يجعلهم بدعمون جافا 8 في وفي نفس الوقت يقومون بدعم لغة جديدة؟

    1. Hendiware قال:

      صراحة اللغة الجديدة بتقدم مميزات ممتازة بتسهل معظم العمليات أكتر وبتخلى المطورين يستخدموا تقنيات اللغات الحديثة فى التطوير الجافا مهما تطورت فبتطور ضمن نطاق معين وفى حاجات فيها مش ينفع تتغير طبقا لطبيعة وبناء اللغة

  4. leen قال:

    ممكن تكملو موضوع الشات بالنسبة للصور والمفات ضروري جدا رجاء

اترك تعليقاً

This site uses Akismet to reduce spam. Learn how your comment data is processed.