ترجمه ای آزاد از این لینک برگرفته از خبرنامه هفتگی اندروید.

به گفته این لینک برای بیشتر از 80 درصد از سهم بازار، اندروید امروزه سیستم عامل غالب موبایلی است. این سیستم عامل روی مدل های بیشماری از اسمارت فون ها و تبلت ها اجرا می شود، به همون خوبی دیگر دستگاه ها. با این نتیجه گیری اولین چیزی که به نظر میاد باید برنامه نویسی برای اندروید آسون و ساده باشه، مگه نه؟ 



چند سال پیش، میلی سایرس (Miley Cyrus) فقط موسیقی country میخوند، جاستین بیبر هم مدل موی معروف خودش رو نشون داد و اجراش کرد، Malcolm هنوز در حالت AC/DC نواخته میشد و برنامه نویسی اندروید واقعا پیچیده بود. برنامه سازی اندروید مشکلات بسیار زیادی حتی تو ساخت یک برنامه خیلی ساده تو این سیستم عامل داشت. 

مقاله

چرا؟ باشه، عزیزان خواننده این متن، مشکل همیشه و همه جا هست:

  • محیط برنامه نویسی مشکل دار - آیا شده تابحال بخواین مشکل ماشین تون رو با یک بیل رفع کنید؟ یا سعی کنید با ماشین تو این ویدیو که مال دوره پدربزرگ شماست مخ بزنید؟ در دنیای اندروید، ما یک محیط برنامه نویسی رسمی برای اندروید داریم - ایکلیپس (البته دیگه رسمی نیستش)، که با خودش یک عالمه مشکل همراهش داره و میتونه شما رو در 10 دقیقه پشیمون کنه از برنامه نویسی. افزونه ایکلیپس که برنامه نویسی اندروید رو ممکن میکنه (ADT) پر از مشکل هستش،برای پروژه های یکم پیچیده تر کند و کاربر پسند نیست. ما به سرعت داغون می شیم موقع کار باهاش و برای یک معجزه فقط دعا میکنیم.
  • نسخه های اندروید - جینجر برید (Gingerbread) (نسخه 2.3.7) بخشی از بازار اندروید (حداقل 15 تا 20 درصد) رو در نسخه های موجود به خودش اختصاص داده است. همونطور که میدونید، اندروید در پیاده سازی نسخه 4 خود (Ice Cream Sandwich) تفییرات بسیار زیادی کرده است. - ما  عناصر جدید، api های جدید برای سخت افزار های گوشی، صفحات جدید موبایلی با تراکم متفاوت  و ... داریم. در نتیجه به ما میگه که باید به کارایی برنامه مون دقت کنیم و برنامه مون رو طوری بنویسیم که به خوبی نسخه های جدید اندروید ، روی ورژن های پایین تر هم اجرا شود. همه این ها تا حد زیادی فرآیند برنامه سازی ما رو تحت تاثیر قرار میده و نتایج رو  در برنامه سازی طولانی مدت با باگ ها و کرش های زیادی همراه میکنه.
  • شبیه ساز کند - ما نیاز داریم تا برنامه نوشته شده خودمون رو روی نسخه های مختلف اندروید و صفحات نمایش با اندازه مختلف تست کنیم، پس باید دستم 20 تا دستگاه مختلف اندرویدی بخریم. احمقانه به نظر میاد؟ درسته، پس ما باید از شبیه ساز ها استفاده کنیم. اما آیا تابحال شده که از شبیه سازی پیشفرض اندروید استفاده کرده باشید؟ اون به طور اسفناکی کنده به حدی که میتونید تا قبل از آماده شدن برنامه روی شبیه سازتون تعداد ماشین های پارک شده در جلوی دفتر کار تون رو بشمارید.
  • رابط کاربری - برنامه های اندرویدی خیلی خسته کننده هستند. اگه بخایم به مقدسات خودمون پشت کنیم و یه نگاه به برنامه های iOS بندازیم، می بینید که اونها پر از حیات و رنگ ها هستند.  همه چی پویا (سرزنده) شده،  جابجایی ها و تغییر ها، رفتن چپ به راست، راست به چپ و کارهای مشابه ... برنامه های ما ساکن هستند، و اگر ما بخواهیم رابط کاربری و تجربه کاربری مون رو غنی کنیم، شیرینی زنجفیلی (همون Gingerbread) به زودی زود همه امید ها و آرزو هامون رو نابود خواهد کرد.
اما اینا برای  2013 بود ! 


یک شروع جدید
همه چیز در سال اخیر تغییر کرده است، و تغییرات این امید رو میده که بزودی باید براحتی اونا رو فراموش کنید و از خودتون بپرسید که "کی این اتفاق افتاد؟؟؟" اگرچه این حقیقت مهمه که تمام اکوسیستم اندروید تحت بهبود های زیادی بوده است - ما سخت افزار های جدید داشته ایم (ساعت های هوشمند)، نرم افزار جدید (گردل Gradle  و اندروید استدیو)، سیستم عامل جدید(نسخه 5 اندروید آبنبات چوبی یا لالی پاپ).

هرکسی کمک میکنه - گوگل، سازندگان دستگاه ها، برنامه نویس ها. همه هدف مشترکی دارند و از خودشون یک سوال پرسیدند: "درسته، حالا ما باید سیستم عامل پایدار باشیم، میلیارد ها برنامه برای میلیارد ها کاربر - چطور میتونیم بیشتر تسهیل کنیم و اندروید رو بهبود ببخشیم؟ چطور میتونیم فرآیند توسعه رو بهتر کنیم؟" اینجا جایی هستش که اصول دسترسی آزاد و متن باز اصول واقعی خودشون رو نشون میدند - هرکسی میتونه تغییراتی ایجاد کنه. یک بهبود. یه چیز تازه.

سخته که بخوای کل تغییرات رو خلاصه کنی، اما من یک لیست از چیز هایی (به نظر خودم) که مهم هستند رو آماده کردم: 

  1. اندروید استدیو 

محیط برنامه نویسی محبوب ما برای توسعه اندروید آخرش با نسخه 1.0 پایدار شد. من نمیخام خیلی وارد جزییات بشم و توضیح بدم که چرا اندروید استدیو برای  توسعه عالی و خوبه؛ زیرا ما قبلا این موضوع رودر دوتا مقاله از وبلاگ  پوشش دادیم. (اولی و دومی) (بزودی در همین وبلاگ ترجمه خواهند شد.) من فقط میخام بگم که پلاگین ADT  برای ایکلیپس رسما منسوخ شده و قویا توصیه میکنم که تمام برنامه های خودتون رو به اندروید استدیو منتقل کنید. درود بر سلطان!

لوگوی نسخه جدید اندروید استدیو

            2. GRADLE 


گرَِدل یک پروژه برای اتوماسیون است که جایگزین  Apache Ant  به عنوان سیستم ساخت برای برنامه های اندرویدی شده است. گردل بین برنامه نویس ها خیلی زود به معروفیت رسید و موفق شد چون که میتوان با آن همه چیز را اتوماتیک انجام داد - از بخش بندی برنامه ها تا تفاوت درونی آنها، امضا با اطلاعات درست، افزایش شماره ساخت برنامه، معرفی کتابخانه های خارجی و خیلی چیزای بیشتر. 

به خاطر اینها، اون بخشی از ابزار مدیریتی شده است، که به کمک آن ما میتوانیم تنظیمات پروژه را نگه داریم. گردل همچنین یکی از دلایل اصلی برای افزایش شماره اتوماسیون تست کتابخانه ها و ساخت build servers به صورت اتوماتیک است، که با آن پروسه ادغام ادامه دار برنامه نویسی (CI) به اندروید آمده است. اما همه چیز گل و بلبل هم نیست - گردل به شدت به خاطر سرعت اجرایش مورد انتقاد قرار گرفته است.  اون واقعا روی پروژه های بزرگ کند عمل میکند، اما ما امیدواریم که این مشکل در انتشارها و نسخه های حدید آن بهبود یابد.


           3. LOLLIPOP

گوگل میگوید که لالی پاپ بزرگترین بهبود سیستم عامل اندروید از ابتدای حیات است، اونها حق دارند. هر بخش از اندروید تحت یک سری تغییرات و بهبود ها قرار گرفته، اما ما هنوز منتظریم ببینیم که کاربران چگونه با تغییرات برخورد میکنند. ما با بروز رسانی لالی پاپ برای گوشی های قدیمی مشکل داریم، اما امیدواریم در نسخه های آینده بهبود داشته باشیم.


         4. لالی پاپ از بیرون- طراحی متریال

درباره درخشش روز افزون رابط کاربری جدید اندروید زیاد نوشته شده است، اسم اون طراحی متریال است. اون یکی از مهم ترین ابداعات سیستم عامل اندروید در چند سال اخیر است، که به طور کامل ظاهر و باطن برنامه های ما رو تغییر میدهد. چیزی که من بیشتر دوست دارم این است که طراحی متریال کاملا قوانین طراحی تجربه کاربری (UX) را تغییر داده است - همه چیز مهم است. چیزی حتی ذره ای از جزییات صرف نظر نمیشود. ما باید برای هر فعل و انفعال کاربر پاسخی بدهیم، کلیک، تاچ کردن، و غیره. زیرا، همانطور که گوگل میگوید: حرکت معنی دار است. ما باید با شهامت باشیم، رنگ های زنده را بپذیریم، در هر مرحله از انیمیشن استفاده کنیم، فونت های بزرگ - به سادگی گویا اند- و ما به برنامه خودمون زندگی اضافه کنیم. هم چنین، متریال دیزاین کاملا مطابق با اکوسیستم اندروید است و برای اندازه های مختلف صفحه نمایش وفق داده شده است. به همین دلیل برنامه ها یک شکل میشوند نه اینکه در پلت فرم ها متفاوت باشند.



یک انیمیشن، لطفا!

              5. لالی پاپ از درون، ART
همه درباره ظاهر صحبت میکنند، اجزای رابط کاربری، انیمیشن ها، رنگ ها ... اما ما برنامه نویس هستیم و علاقه داریم بدونیم چی زیر کاپوت هست. و، اوه پسر!، موتور کاملا زیبا شده: یک برند در سیستم اجرای جدید، به نام ART. فقط برای توضیح، آرت چیز جدیدی نیست - اون در اندروید کیت کت به عنوان سیستم اجرای دوم معرفی شده است. با معرفی لالی پاپ، اون به عنوان سیستم اصلی جایگزین دالویک شده است، آرت خیلی مهم است به خاطر چند چیز، اما ما به دوتا از اونها اشاره میکنیم: 

  • اون از AOT (ahead-of-time) compilation استفاده میکند، به این معنی که اون زبان سطح متوسط (بایت کدهای دالویک) رو به باینری کد های سیستمی تبدیل میکند. این نتایج زمان اجرای برنامه های مارو کاهش میده، مصرف cpu رو کم میکنه و باطری کمتری رو مصرف میکنه. از طرف دیگه، پروسه نصب خیلی بیشتر طول میکشه.
  • اون از multidex خارج از محدوده پشتیبانی میکند. فایل های dex دالویک نقص عمده ای دارند - اونها میتونند فقط شامل 65,536 متد باشند. ما باید برنامه خودمون رو سازمان بندی کنیم به شیوه ای که تعداد متدها از این محدودیت تجاوز نکند. اگر این عدد ممکنه خیلی بزرگ به نظر بیاد، اگر شما یک اکانت گوگل پلی سرویس بگیرید( که تقریبا در بیشتر برنامه ها لازم است) و یک سری کتابخونه خارجی، شما به راحتی از این محدودیت رد می شوید. آرت برنامه شما را به توسط شیوه ذخیره بایت-کد ها در چند Dexفایل که در یک فایل apk پکیج میشوند، سازمان بندی میکند.


        4. اندروید در همه جا

 ما باید برنامه نویسی رو برای ساعت های هوشمند شروع کنیم، تلویزیون ها و اتومبیل ها، اما چرا توقف کردیم؟ اگر شما در اتاقتون نشستید و یه فنجون قهوه داغ در دستتون دارید، یک دقیقه وقت بذارید و به اطرافتون نگاه کنید. شما حداقل 5 چیز میبینید که ممکنه در چندسال آینده اندروید روی اونها اجرا بشود - تلویزیون، لپتاپ، تبلت، دوربین، دوچرخه، لوازم آشپزخانه، ترموستات ها، اتومبیلها، و غیره. اندروید به عنوان یک آزمایش شروع شد و اثبات کرد که میتواند روی هر چیزی که بتواند یک ریزپردازنده را نگه دارد اجرا شود. 


        5. افزایش کیفیت تلفن های هوشمند

اسمارت فون ها هنوز هسته اصلی سیستم عامل اندروید هستند. برای زمان زیادی، ما با کیفیت کلی اونها مشکل داشتیم. دستگاه های قدیمی اندروید بدترکیب و آروم تر از آیفون ها بودند - iOS همیشه بیشتر تعاملی رفتار میکند. این بویژه درسته برای دستگاه هایی که توسط کارخانه های متعدد چینی ارزون تولید میشوند. 

خوشبختانه، کیفیت و سرعت تلفن های هوشمند اندرویدی به طور پیوسته افزایش یافت، همینطور امروزه ازدیادی از گوشی های جدید رو داریم که برای بودجه و نیاز هرکسی مناسب است. مهم نیست که شما یک تلفن هوشمند با کیفیت تصویر بالا بخواهید، ظاهر، پردازنده یا باطری - ما همه شو داریم. 

علاقه شخصی من شرکت موتورولا (امروزه بخشی از شرکت چینی تکنولوژی کامپیوتری لنوو است)  با خط بزرگ تلفن های هوشمند اون است - moto x, moto g & moto e، که در اصل کیفیت خوبی دارند و نرخ قیمت شون هم مناسب است. (یادداشت مترجم: ولی سونی یه چیز دیگست: اکسپریا زد (1-2-3-4) کجا! موتورولا کجا...!)  هم چنین، یک تیم در گوگل روی تلفن ماژولار کار میکنند. پروژه آرا اشاره به تکان دادن همه دنیای اندروید دارد، اگر همه چیز خوب پیش برود، اون موفق است.


بعدا چی؟

خداحافظی با جاوا

بعد از اینکه نهایتا بیشتر مشکلات ما با محیط برنامه نویسی و نسخه های سیستم عامل حل شد، ما میتونیم تمرکزمون رو روی دیگر مشکلات اندروید جابجا کنیم.

از نظر من، مهم ترین مشکل، مشکل هسته توسعه اندروید است - جاوا. جاوا هارمونی، معذرت. منظورم جاوا نسخه 7. یا نسخه 6. اصن جاوا نه. ای بابا نذارید اشتباه کنم. - من شدیدا معتقدم جاوا یک زبان برنامه نویسی خیلی خوبه ، اما من هم چنین فکر میکنم وقتش رسیده که به خارج از جعبه فکر کنیم. ما باید شروع کنیم به جستجوی زبان برنامه نویسی جدید برای جایگزینی جاوا به عنوان زبان برنامه نویسی اصلی اندروید بکنیم.

فقط به مهم ترین رقیب مون فکر کنید - اپل. اونها کاملا یک زبون جدید به نام سویفت رو معرفی کردند که ترکیبی از بهترین ویژگی های چندین زبان است( مثل پایتون، روبی یا سی شارپ).  ما هم چنین نیاز قابل توجهی بیشتر از برنامه نویسان آی او اس به نوشتن برنامه های واحد داریم، اما الان خیلی هم آروم تر شدیم.

این دلیل این است که ما چرا به چیزی جدید احتیاج داریم. ما همچنین چند پیشنهاد و ایده درباره زبان هایی که ممکن است جایگزین جاوا بشوند داده ایم. نظر من روی گرووی Groovy است. سینکتس اون خیلی شبیه به جاواست (حقیقتا، اون از جاوا پیاده سازی شده) و ما نمونه های کاری زیادی ازش داریم. 
اگرچه، فراموش نکنید که زبان اصلی گردل هم هست - پس چرا از اون در برنامه نویسی اندروید استفاده نکنیم؟ یا شاید اسکالا Scala (که به سرعت کاربران جدید زیادی گرفته است) یا کوتلین Kotlin (جیک وارتثون اخیرا بررسی جامعی از کوتلین برای اندروید نوشته است)؟


بهتر شدن مدیریت دیتابیس 

من هم چنین دوست دارم به یک مشکل دیگه اشاره کنم - رابط های مدیریت دیتابیس. اگر توهین به مقدسات نباشه یکبار دیگه به رقیبمون نگاه کنیم- iOS (هسته اطلاعات، خیلی دقیق و صریح است) - شما میبینید که اونها واقعا متد های خوبی و رابط کاربری خوبی برای ساخت اشیاء دیتابیس دارند، متدهای CRUD (Create, Read, Update and Delete)، عمل کننده های تغییر در دیتابیس. اما اگر شما به رابط پیشفرض اندروید نگاه کنید - ما هنوز چیزی به جز نوشتن دستورات SQL با تاثیر زیادی رو پروسه برنامه نویسیمون نداریم. 


اشکال زدایی اررور های SQL خیلی آسون نیست - زمان بر هست، و ما هیچ رابط کاربری برای دیدن دیتاهای دیتابیس نداریم. اگرچه ماکتابخونه های مدل محور (ORM) خوبی داریم (مثل:  GreenDAO ActiveAndroid یا  SugarORM)، اونها مشکلات خودشون رو دارند. من هیچ وقت با اونها راضی نشدم -اونها هنوز برای استفاده خیلی پیچیده اند یا یه چیزی کم دارند (مثل متدهای عمل کننده در تغییرات دیتابیس).  ذهن من روی Realm for Android و DBFlow تمرکز داره، که امیدوارم همه مشکلات اونها حل بشه و زمان پردازش اونها هم کمتر بشه.



جمع بندی

تغییرات زیادی چند سال گذشته در اندروید رخ داده است. اون از یک سیستم عامل ساده برای تلفن های هوشمند به قدرتی روی دیگر دستگاه ها تکامل پیدا کرده است. زمان نشان میدهد که چه اتفاقی رخ خواهد داد. چه کسی میداند، شاید حتی با اندروید راکتور های همجوشی هسته ای رو برنامه ریزی کنیم!. یا ترمیناتور ها. البته ترمیناتور ها خیلی جالب تر هستند.


این مقاله ترجمه ای آزاد بود از این لینک برگرفته از خبرنامه هفتگی اندروید، اگر نقصی در مقاله یا شیوه بیان بود پوزش...