اين روزها سيستم عامل اندرويد با گرفتن ۸۰ درصد از سهم بازار  ، سيستم عامل غالب بازار است. اندرويد بر تعداد بيشماري دستگاه تلفن همراه و تبلت درحال اجرا مي باشد. با اطلاع از اين موضوع ممكن است تصور شود برنامه نويسي اپليكيشن اندرويد بسيار ساده است . اما آيا واقعاً اين طور است؟

چند سال پيش وقتي كه آهنگ هاي رپ تازه داشتند محبوب مي شدند و موي بلند جوان ها بحث برانگيز بود ، برنامه نويسي اپليكيشن اندرويد تقريبا پيچيده بود. توسعه دهندگان اندرويد براي توسعه حتي ساده ترين اپليكيشن ها نيز مشكلات زيادي داشتند.

چرا ؟؟؟ خوب … ، همه چيز مشكل داشت.

IDE ها براي برنامه نويسي اپليكيشن اندرويد داراي باگ بودند

برنامه نويسي اپليكيشن اندرويد 

آيا تا حالا شده براي تعمير ماشين خود از يك بيل استفاده كنيد؟ يا براي جذب كسي كه دوستش داريد با لباس هاي ۴۰ سال پيش ظاهر بشيد ؟  در دنياي اندرويد يك IDE رسمي وجود داشت به نام Eclipse ، كه يك عالمه ايراد داشت و توانايي اين را داشت كه ظرف ۱۰ دقيقه شما را به جنون برسونه . پلاگين Eclipse ADT  پر از باگ بود ، خيلي كند بود ، و براي پروژه هاي پيچيده اصلا مناسب نبود . خيلي زود همه براي برنامه نويسي اپليكيشن اندرويد از دستش خسته شدند و براي يك معجزه دعا مي كردند.

 

سيستم عامل چند تكه

نسخه نان زنجفيلي ( ۲.۳.۷) بخشي از سهم بازار سيستم عامل اندرويد را اشغال كرده بود ( تقريبا ۱۵ تا ۲۰ درصد) . همانطور كه مي دانيد اندرويد در نسخه ۴ (ساندويچ بستني ) كامل متحول شد ( المان هاي UI جديد دريافت كرد ، براي سخت افزار API هاي جديد اختصاص داده شد ، تراكم صفحه جديد … . اين كار باعث شد تا برنامه نويسان بيشتر مراقب باشند تا اپليكيشن هاي جديدي كه مي نويسند هم در دستگاه هاي جديد قابل اجرا باشد و هم با نسخه هاي قديمي تر سازگار باشد . همه اين مسائل روي پروسه برنامه نويسي اپليكيشن و مدت زمان توسعه يك برنامه تاثير داشت همراه با باگ ها و مشكلات بيشتر.

شبيه ساز هاي كند

برنامه نويسي اپليكيشن اندرويدما بايد اپليكيشن ها را بر روي نسخه هاي مختلف اندرويد و صفحه نمايش هاي مختلف تست كنيم ، پس بايد حداقل چند دستگاه اندرويدي مختلف بخريم ، به نظر ديوانه كننده مياد؟ باشه ، پس بهتره از شبيه سازها استفاده كنيم . اما تا به حال شده از شبيه ساز خود اندرويد استفاده كنيد ؟ به طرز وحشتناكي كند است طوري كه يك لحظه به خودتان مي آييد و مي بينيد در حال شمارش ماشين هاي روبروي دفتر كارتان هستيد تا در اين مدت برنامه شما در شبيه ساز اجرا شود.

 

 

 

رابط كاربري 

اپليكيشن هاي اندرويد كسل كننده بودند . اگر شما دچار لغزش شده و نگاهي به برنامه هاي ios بي اندازيد ، متوجه مي شويد كه آنها پر از زندگي و رنگ هستند . همه چيز متحرك و سرزنده است ، تبديل مي شوند ، از راست به چپ و يا بالعكس حركت مي كنند . اپليكيشن هاي ما ثابت بود ، اگر مي خواستيم تجربه كاربري را بهبود ببخشيم ، نسخه قديمي نان زنجفيلي تمام اميد و آرزوهاي ما را از بين مي برد.

اما اين ها براي قديم بود!

يك شروع تازه براي برنامه نويسي اپليكيشن اندرويد

در سال ۲۰۱۴ همه چيز تغيير كرد ، و تغيير در حدي سريع بود كه يك لحظه به خودتان مي آمديد و مي پرسيديد” كي اين اتفاق افتاد؟؟؟”  چيزي كه خيلي مهم تر است اين حقيقت است كه كل اكو سيستم اندرويد تحت تاثير پيشرفت هاي زيادي قرار گرفت . سخت افزار هاي جديد پديد آمد مثل ساعت هاي هوشمند ، نرم افزارهاي جديد آمد مثل Gradle , Android Studio  ، سيستم عامل جديد آمد مثل اندرويد ۵.۰  آبنبات چوبي .

همه كمك مي كردند – گوگل ، توليد كنندگان دستگاه ها ، توسعه دهندگان . همه يك هدف داشتند و يك سوال مشترك از خود مي پرسيدند : ” خوب ، حالا كه ما يك سيستم عامل پايدار داريم و ميليون ها اپليكيشن و كاربر داريم ، چگونه مي توانيم اندرويد را ساده تر كنيم و پيشرفتش دهيم ؟ چطور مي شود روند توسعه را بهتر كرد ؟ اينجاست كه مفهوم منبع باز پتانسيل واقعي خودش را نشان مي دهد . همه توانايي اين را دارند كه تغيير ايجاد كنند ، يك پيشرفت ، يك چيز جديد .

خيلي سخت است كه همه تغييرات را اينجا خلاصه كنيم ، اما ليستي از تغييراتي كه از نظر من مهم است را اينجا بيان مي كنم :

۱.Android Studio

برنامه نويسي اپليكيشن اندرويدIDE محبوب ما براي برنامه نويسي اپليكيشن اندرويد در نهايت با نسخه ۱.۰ پايدار شد. ميخوام بگم پلاگين  Eclipse ADT  رسما منسوخ شده و قويا توصيه ميكنم اپليكيشن هايتان را به اندرويد استوديو منتقل كنيد.

 

 

 

 

 

۲.Gradle

Gradle   يك ابزار اتوماسيون پروژه است كه جايگزين Apache Ant به عنوان سيستم ساخت اپليكيشن اندرويد شده است. اين ابزار  به اين علت كه خيلي خوب مي تواند همه چيز را خودكار انجام دهد محبوبيت خوبي در بين توسعه دهندگان اندرويد بدست آورده . به عنوان مثال از تقسيم اپليكيشن هايمان به ويژگي هاي مختلف تا امضا با تنظيمات صحيح ، افزايش تعداد ساخت ما ، تعريف وابستگي هاي خارجي و خيلي موارد ديگر را مي توان نام برد.

به همين علت Gradle   تقريبا تبديل به ابزار “مديريت” شده است ، با اين ابزار ما تنظيمات پروژه را تعريف و نگهداري مي كنيم . Gradle    همچنين دليلي است براي افزايش تعداد تست خودكار كتابخانه ها و ساخت خودكار سرور ها ، كه سبب پيوستگي مداوم (CI) پروسه توسعه در سيستم عامل اندرويد مي شود. اما همه چيز خوب و خوش نيست ، انتقاد شديدي نسبت به سرعت اجرا  Gradle    وارد است. واقعا در پروژه هاي پيچيده كند عمل مي كند ، اما اميدواريم كه اين مسئله نيز خيلي زود در نسخه هاي بعدي حل شود .

۳.Lollipop

برنامه نويسي اپليكيشن اندرويدطبق اظهارات گوگل Lollipop بزرگترين پيشرفت در سيستم عامل اندرويد است ، و حق با آنها است. همه قسمت هاي اندرويد تحت اصلاح و پيشرفت قرار دارد ، اما ما همچنان منتظريم تا واكنش كاربران را نسبت به تغييرات ببينيم . ما مشكلات زيادي با بروزرساني دستگاه ها به Lollipop داشتيم ، اما اميدوار بوديم در نسخه هاي بعدي حل شود.

 

 

 

۴.طراحي Material

خيلي راجع به رابط كاربري جديد اندرويد ، به نام ” طراحي Material ” صحبت شده است. اين يكي ديگر از نوآوريهاي اندرويد در چند سال گذشته است ، كه ظاهر و احساس كار كردن با اپليكيشن هاي ما را تغيير داده است . چيزي كه من خيلي راجع به طراحي Material مي پسندم اين است كه مفهوم تجربه كاربري را كامل تغيير داده است ” همه چيز مهم است” . هيچ جزييات كوچكي وجود ندارد كه بتوان ناديده گرفت . مجبوريم به تك تك فعاليتهاي كاربر پاسخ دهيم ، مثل كليك ، لمس كردن و خيلي چيزهاي ديگر. همانطور كه گوگل مي گويد حركت مفهوم ايجاد مي كند.

ما بايد بزرگ نمايي كنيم ، از رنگهاي زنده استفاده كنيم ، در هر مرحله از انيميشن استفاده كنيم ، فونت هاي زيبا و … خيلي ساده بگم بايد به اپليكيشن هايمان زندگي ببخشيم. همچنين طراحي Material كاملا با اكوسيستم اندرويد سازگار است و قابل اجرا روي صفحه نمايش هايي با سايز هاي مختلف مي باشد . همين علت است كه اپليكيشن ها ظاهر مشابه اي در همه وسيله ها دارند اما كاملا يكسان نيستند.

۵.هنر

همه راجع به طراحي صحبت مي كنند ، اجزاء رابط كاربري ، انيميشن ها ، رنگها … . اما  ما برنامه نويس اپليكيشن اندرويد هستيم و علاقه منديم زير كاپوت را ببينيم . پسر موتور رو ببين خيلي خوبه : يك سيستم زمان اجرا جديد به نام ART . فقط جهت اطلاع بگم ، ART چيز جديدي نيست ، قبلا هم روي نسخه كيت كت به عنوان سيستم زمان اجراي ثانويه معرفي شده بود.

با معرفي Lollipop تبديل به سيستم اصلي شد كه كاملا جايگزين Dalvik  شد. ART به چند دليل خيلي خوب است اما من فقط چند مورد را بيان مي كنم:

  • از همگرداني(AOT (ahead-of-time استفاده مي كند ، به معني اين است كه زبان متوسطه را (Dalvik bytecode) با سيستم باينري اجرا مي كند. اين كار سبب كاهش زمان اجراي اپليكيشن مي شود و با استفاده كمتر از CPU طول عمر شارژ باتري بيشتر مي شود. اما از طرف ديگر مدت زمان نصب افزايش پيدا مي كند.
  • از multidex پشتيباني مي كند .فايل هاي دكس Dalvik يك نقص بزرگ داشتند ، آنها فقط قادر بودند ۶۵۳۵۶ روش را نگهداري كنند . ما بايد اپليكيشن هاي اندرويد را طوري سازماندهي مي كرديم كه روشها از اين تعداد فراتر نرود . اگرچه اين تعداد خيلي زياد به نظر مي رسد ، اما اگر سرويس Google Play  را به حساب بياوريم (كه در بيشتر اپليكيشن ها ضروري است ) و چند كتابخانه خارجي ديگر ، شما به راحتي از اين تعداد عبور مي كنيد. ART ،اپليكيشن شما را در جهتي سازمان دهي مي كند كه ، كد بيت را در چند فايل دكس مي شكند و همه را در يك فايل APK يكپارچه مي كند.

۴.اندرويد همه جا هست

ما شروع به برنامه نويسي اپليكيشن اندرويد براي ساعت هاي هوشمند ، تلويزيون ها و ماشين ها كرده ايم ولي كار به اينجا ختم نمي شود. اگر شما در اتاق نشيمن نشسته ايد و يك فنجان قهوه مي نوشيد ، يك لحظه به اطراف توجه كنيد . احتمالا طي ۵ سال آينده حداقل پنج تا از اين وسيله ها با سيستم عامل اندرويد كار مي كنند. تلويزيون ، لپ تاپ ، تبلت ، دوربين ، دوچرخه ، لوازم آشپزخانه ، دستگاه هاي تنظيم دما ، ماشين ها و غيره . اندرويد در ابتدا به صورت آزمايشي شروع كرد و به مرور اثبات كرد مي تواند روي هر وسيله اي كه توانايي حمل يك ميكرو پروسسور كوچك را داشته باشد ، اجرا شود.

۵.كيفيت گوشي هاي  هوشمند افزايش پيدا كرده

همچنان گوشي هاي هوشمند وسيله اصلي براي سيستم عامل اندرويد مي باشند . براي سال هاي ما با كيفيت اين گوشي ها مشكل داشتيم . وسيله هاي قديمي تر اندرويد خيلي زشت تر و كند تر از آيفون هاي قديمي بودند . اين مسئله در مورد گوشي هاي ارزان توليدي شركت هاي چيني واقعاً درست بود.

خوشبختانه كيفيت و سرعت گوشي هاي هوشمند اندرويدي  هر روزه بهبود پيدا مي كند ، امروزه ما كلي دستگاه جديد داريم كه مناسب براي هر نيازي و با هر بودجه اي مي باشند. مهم نيست كه درخواست شما براي يك گوشي با دوربين عالي است يا طراحي خوب ، پردازنده قوي يا باتري قوي است ، همه اين موارد موجود است.

گوشي هاي هوشمند موتور لا و سامسونگ واقعا خوب هستند و مدل هاي مختلفي  براي هر رنج قيمتي با امكانات مناسب دارند. همچنين يك تيم در گوگل مشغول طراحي يك گوشي هوشمند ماژولار است . Project Ara   ادعا كرده است كه كل دنياي اندرويد را متحول مي كند ، اگر همه چيز خوب پيش برود ، كه حتما همينطور خواهد شد.

قدم بعدي در برنامه نويسي اپليكيشن اندرويد چيست ؟

دور شدن از JAVA

برنامه نويسي اپليكيشن اندرويد

 

همانطور كه نهايتا بيشتر مشكلات را با نسخه هاي سيستم عامل و IDE ها حل كرديم ، حالا مي توانيم تمركزمان را روي مشكلات ديگر اندرويد قرار دهيم .IMHO ، مهمترين مشكل ، مشكل هسته برنامه نويسي اپليكيشن اندرويد است ،”JAVA ” . شرمنده ام  JAVA Harmony. چيزي كه اصولا JAVA7. يا JAVA6.  است اما JAVA نيست . اشتباه نكنيد ، من قويا معتقدم كه JAVA يك زبان برنامه نويسي خوب است ، اما فكر مي كنم زمان مناسبي است براي اينكه از اين حالت خارج شويم . ما بايد دنبال جايگزين مناسبي به جاي JAVA براي برنامه نويسي اپليكيشن اندرويد باشيم.

 

 

نگاهي به جدي ترين رقيبمان Apple بندازيم . آنها يك زبان كاملا جديدي به نام Swift معرفي كرده اند كه تركيبي از بهترين ويژگي هاي چند زبان برنامه نويسي است (مثل Python , Ruby يا C# ) . ما نسبت به توسعه دهندگان ios به زمان زيادتري احتياج داشتيم   تا همان اپليكيشن را برنامه نويسي كنيم  ، اكنون اين اختلاف بيشتر هم شده است.

به همين خاطر است كه ما نياز به يك زبان جديد داريم . همچنين ما چند ايده هم براي زبان جديد  جايگزين JAVA داريم . به نظر ما Groovy خوب است . تركيب آن تقريبا شبيه به JAVA است (درواقع روي JAVA برنامه نويسي شده ) و همچنين چند نمونه كار فعال هم داريم . فراموش نكنيم كه اين زبان اصلي براي Gradle است ، پس چرا براي برنامه نويسي اپليكيشن اندرويد استفاده نشود؟ يا شايد Scala ( كه خيلي سريع كاربران جديد پيدا كرده است ) يا  Kotlin.

بهتر شدن در مديريت  بانك اطلاعاتي

يك مشكل ديگه را اينجا ميخواهم بيان كنم  “API مديريت بانك اطلاعاتي” . اگر شما يكبار ديگر مرتكب جنايت شويد و به رقيبمان ios نگاهي بياندازيد (بخواهيم دقيق تر باشيم ، هسته اصلي)  ميتوانيد ببينيد كه آنها روشهاي خوبي دارند و GUI براي ساخت ديتابيس ، روشهاي CRUD، شنونده هاي تغيير ديتابيس . اما اگر به API اندرويد پيش فرض نگاهي بي اندازيم ، ما هنوز خيلي از نوشتن دستورات SQL فاصله نگرفته ايم كه اين موضوع شديدا روي پروسه برنامه نويسي اپليكيشن تاثير گذار است.

ديباگ خطاهاي SQL اصلا ساده نيست ، وقت گير است  و ما هيچ GUI براي نگاه انداختن به داده هاي بانك اطلاعاتي مان نداريم. اگرچه چند كتابخانه ORM خوب وجود دارد (مثل  GreenDAO، ActiveAndroid يا SugarORM) اما همه اينها مشكلات خودشان را دارند . هيچكدام از اين ها كاملا نتوانستند نظر ما را به خودشان  جلب كنند . اينها يا خيلي پيچيده هستند و يا يك قسمتي كم دارند ( مثل شنونده تغيير بانك اطلاعات )  . ما نظرمان روي Realm for Android و DBFlow است ، كه اميدوارم همه مشكلات ما را حل كند و زمان اجراي بهتري پيدا كند.

نتيجه گيري

در چند سال گذشته خيلي چيزها براي اندرويد تغيير كرده است . اندرويد از يك سيستم عامل ساده براي گوشي هاي هوشمند تكامل يافته و اكنون خيلي از دستگاه ها  را تامين مي كند . زمان مشخص مي كند كه چه چيز پيش مي آيد . كسي چه مي داند شايد زماني برسد ما راكتورهاي  سوخت هسته اي را با اندرويد برنامه نويسي كنيم