در شماره گذشته آموزش رایگان کاتلین- برنامهنویسی اندروید (بخش 01) به تشریح این موضوع پرداختیم که یادگیری زبان برنامهنویسی کاتلین در بلندمدت چه مزایای درخشانی برای شما به همراه دارد. در این شماره بهطور اجمالی به معماری اندروید نگاه میکنیم.
کیت توسعه نرمافزاری اندروید تا حد زیادی به زبان جاوا نوشته شده، با این حال زبان برنامهنویسی کاتلین به بهترین شکل با اندروید استودیو هماهنگ شده است. زمانی که به اندروید استودیو میگوییم کدهای ما را به یک برنامه کاربردی تبدیل کند، قبل از آنکه کدها به فرمتی بهنام DEX که قابل اجرا روی دستگاههای اندرویدی است، تبدیل شوند، کدها توسط کیت توسعه نرمافزاری با جاوا ادغام میشوند. ممکن است انجام چنین کاری برای توسعهدهندگان بی اهمیت باشد، اما مهم است بدانیم در پشت صحنه چه اتفاقاتی می افتد.
پیشنهاد مقاله: آموزش برنامه نویسی – شروع آموزش برنامه نویسی
زمانی که برنامه خود با کاتلین یا جاوا را مینویسید در هر دو حالت کدهای DEX یکسانی تولید میشوند. با این حال، برنامهنویسی با کاتلین در مقایسه با جاوا مزیتهای قابل توجهی دارد. جالب است بدانید کاتلین جزیرهای در نزدیکی سنپترزبورگ روسیه است.
کاتلین شباهت زیادی به زبان سوئیفت اپل دارد. در نتیجه، یادگیری کاتلین بهطور غیر مستقیم به شما در یادگیری توسعه نرمافزارهای کاربردی برای سیستمعامل آیفون و آیپد کمک فراوانی میکند. کاتلین در زمان کدنویسی، کمترین خطای ممکن را تولید میکند و به همین دلیل زبان ایدهآلی برای تازهکاران است و با توجه به اینکه اجازه میدهد با کمترین کدنویسی کارهای مختلفی انجام دهید، سریعتر اجرا شده و خوانایی بالایی دارد.
گوگل کاتلین را زبان اول اندروید میداند، زیرا مختصر بودن کدها باعث میشود تا خطاهای کمتری به وجود آید و در آینده نیز کدها به شکل تصادفی خطاهای غیرمنتظره نشان ندهند. کاتلین به شکل رسمی از سوی شرکتهای بزرگ به رسمیت شناخته شده و در ساخت برنامههای بزرگ از آن استفاده میشود.
از جمله این شرکتها میتوان به کیندل، توییتر، نتفلیکس، اورنوت،Pinterest Expedia و…. اشاره کرد. قبل از آنکه ساخت برنامههای اندرویدی را آغاز کنیم، ابتدا باید ببینیم کاتلین و اندروید چگونه با یکدیگر کار میکنند. زمانی که برنامه خود برای اندروید را با جاوا یا کاتلین مینویسیم و روی دکمه تبدیل کدها از شکلی به شکل دیگر کلیک میکنیم، کدها به ماهیتی تبدیل میشوند که برای اندروید قابل فهم میشوند.
این شکل دیگر (DEX) سرنام Dalrik Executable است. فرآیند تبدیل کدها نیز بهنام کامپایل شناخته میشود. زمانی که یک برنامه روی یک دستگاه نصب میشود کد DEX دوباره توسط سیستمعامل بررسی میشود تا به شکل بهینه شدهای قابل اجرا باشد.
اندروید یک سیستمعامل پیچیده است، اما نیازی نیست بر تمامی جزییات پشت پرده اندروید مسلط شوید تا بتوانید برنامههای هیجانبرانگیزی را بسازید. برای شروع تنها چیزی که به آن نیاز داریم، آشنایی با اصول اولیه است.
اندروید نسخه خاصی از سیستمعامل لینوکس را اجرا میکند، اما سعی میکند پیچیدگیهای نرمافزاری و سختافزاری را پنهان کند و در مقابل ویژگیهای منحصر به فرد لینوکس را در اختیار توسعهدهندگان قرار دهد.
این ویژگیها به دو شکل استفاده میشوند. اول آنکه سیستمعامل خودش به سختافزار دسترسی کامل دارد که برای انجام کارهای خود از ویژگیهای کاربردی استفاده میکند و دوم آنکه به توسعهدهندگان اجازه میدهد از طریق واسط برنامهنویسی اندروید (API) به ویژگیهای مهم سیستمعامل دسترسی پیدا کرده و از آنها استفاده کنند. اجازه دهید به توابع برنامهنویسی اندروید نگاهی گذرا داشته باشیم.
پیشنهاد مقاله: آموزش برنامهنویسی تا استخدام با بوتکمپ برنامه نویسی بامداد
Android API
Android API کدی است که انجام برخی کارهای ویژه را ساده میکند. اجازه دهید برای روشنتر شدن توابع برنامهنویسی اندروید یک قیاس ساده میان این توابع با یک خودرو ارائه کنیم. زمانی که خودرو خود را روشن و پدال گاز را فشار میدهید، یکسری اتفاقات زیر کاپوت رخ میدهد.
ما نیازی به درک عمل احتراق و سوخترسانی نداریم، زیرا مهندسان مکانیک همه چیز را آماده کردهاند و رابط مکانیکی مخصوص به پدال گاز را برای ما آماده کردهاند تا بدون زحمت خاصی بتوانیم از ماشین استفاده کنیم. در دنیای اندروید نیز چنین حالتی برقرار است. اندروید یکسری توابع مهم را برای انجام بهتر و سادهتر کارها برای توسعهدهندگان طراحی کرده تا بدون مشکل خاصی قادر به انجام کارهای مشکل باشند. بهطور مثال به تابع زیر دقت کنید:
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
تابع فوق شاید کمی عجیب به نظر برسد، اما مثال خوبی است که نشان میدهد، APIهای اندروید چگونه به ما کمک میکنند. کاری که دستور بالا انجام میدهد به این شرح است که قطعه کد فوق، جستوجویی برای ماهوارههای موجود در خارج از جو زمین انجام میدهد و سعی میکند با ماهوارههایی که در اطراف زمین در حال گردش هستند ارتباط برقرار کند و سپس طول و عرض جغرافیایی دقیق شما روی کره زمین را به دست میآورد و اطلاعات مربوطه را در اختیارتان قرار میدهد.
همانگونه که مشاهده میکنید واسطهای برنامهنویسی کاملا کاربردی هستند و در بیشتر موارد کار برنامهنویسی را سادهتر میکنند. سوالی که ممکن است به ذهن خوانندگان برسد و این آموزش قصد پاسخ گویی به آنرا دارد این است که چگونه باید از کدهای متنوعی که وجود دارد برای انجام کارهای جالب استفاده کنیم؟ مهمتر آنکه چگونه باید بدانیم در چه زمانی باید از یک رابط برنامهنویسی استفاده کرد یا رابطی که وجود دارد را دستکاری کرد؟
پاسخ به این پرسش در زبان برنامهنویسی کاتلین قرار دارد. توجه به این حقیقت که کاتلین برای کمک به انجام کارهای پیچیده، اجتناب از بروز اشتباهات و تسریع روند برنامهنویسی طراحی شده کمک میکند فلسفه طراحی این زبان را به خوبی درک کنیم. اجازه دهید نگاهی عمیقی به مبحث شیگرایی در کاتلین داشته باشیم.
شیگرایی در زبان برنامهنویسی کاتلین
کاتلین یک زبان شیگرا است. به این معنا که از مفهوم اشیا برنامهنویسی شده با قابلیت استفاده مجدد پشتیبانی میکند. کاتلین به برنامهنویسان و تیمهای توسعهدهنده API اندرویدی کمک میکند تا کدهایی بنویسند که ساخت یافته هستند و امکان استفاده مجدد از آنها وجود دارد.
اجازه دهید برای روشنتر شدن مطلب به قیاس ماشین باز گردیم. یک کارخانه خودروسازی را تصور کنید که روزانه یک خودرو تولید میکند. آیا این کارخانه برای ساخت هر خودرو باید در بخش تولید هر یک از قطعات خودرو را بازطراحی مجدد کند یا امکان استفاده از طرح اصلی وجود دارد؟
بدیهی است کارخانههای خودروسازی چنین کاری انجام نمیدهند، زیرا طراحی دقیق مولفهها، آزمایش کیفی و کمی قطعات و توسعه آنها به سالها زمان نیاز دارد. به همین دلیل کارخانهها در زمان طراحی یک مولفه، نهایت دقت را به کار میگیرند، زیرا قرار است از یک قطعه برای سالیان متمادی و روی صدها یا حتی میلیونها ماشین استفاده شود.
کاری که مهندسان نرمافزار هنگام کدنویسی انجام میدهند، الگوبرداری از دنیای واقعی و طراحی یک شی است. پس از آنکه یک شی بر مبنای یک نمونه اولیه طراحی شد، در ادامه برنامهنویسان به سراغ ساخت، پیکربندی و بهکارگیری شی میروند. در برخی موارد نیز اشیا با یکدیگر ترکیب میشوند تا شی بزرگتری به نام یک برنامه کاربردی به وجود آورند.
زمانی که طراحی آماده و یک شی بر مبنای آن ساخته شد، در ادامه کامپایلر شی ما را به کد DEX تبدیل میکند. در این حالت ما یک برنامه اندرویدی در اختیار داریم. در کاتلین، یکی از مفاهیم مهمی که داریم کلاس است. زمانی که یک کلاس به یک شی واقعی تبدیل میشود، ما با استفاده از یک شی یا یک نمونه از یک شی کلاسی که ساختهایم را فراخوانی میکنیم.
در شماره آینده مبحث فوق را ادامه میدهیم.
نویسنده: حمیدرضا تائبی