آشنایی با زبانهای برنامهنویسی موبایل
موبایلهای هوشمند به بخشی از زندگی روزمرهی با تبدیل شدهاند. بسیاری از کارهای روزانهی ما به واسطهی اپلیکیشنها انجام میشود. در واقع دنیا دارد به سمتی میرود که اهمیت گوشیهای هوشمند و اپلیکیشنها روز به روز بیشتر میشود. از زاویهی دیگر، اهمیت این موضوع این است که دنیا روز به روز نیاز بیشتری به توسعهدهنده و برنامهنویس موبایل پیدا میکند. از همین رو بسیاری به دنبال یادگیری زبانهای برنامهنویسی موبایل هستند تا بتوانند به عنوان یک توسعهدهنده فعالیت کنند. قابل انکار نیست که این شغل در حال حاضر از نظر درآمدی، موقعیت فوقالعاده مناسبی دارد. البته به شرط این که در آن همه فن حریف باشید.
با توجه به صحبتهایی که کردیم، ممکن است شما بخواهید یک آشنایی اولیهای با زبانهای برنامهنویسی موبایل پیدا کنید و ببینید که آیا میتوانید در این زمینه فعالیت کنید یا نه. یا این که ممکن است به هر دلیلی بخواهید با زبانهای اصل برنامهنویسی موبایل آشنا شوید. این مقاله آموزشی دقیقاً با همین هدف نوشته شده. در این نوشتار در مورد انواع زبانهای برنامهنویسی موبایل برای سیستم عاملهای مختلف صحبت میکنیم.
انواع اپلیکیشنهای موبایل
از زاویه دید برنامهنویس، اپلیکیشنهای موبایل به چهار دسته تقسیم میشوند:
- اپلیکیشنهای موبایل نیتیو (Native): اپلیکیشنهای نیتیو اپلیکیشنهایی هستند که به صورت خاص برای یک سیستم عامل خاص نوشته میشوند. به طور مثال، یک اپلیکیشن نیتیو در سیستم عامل اندروید، به صورت صد در صدی به وسیلهی زبانهایی نوشته شده که توسط این سیستم عامل پشتیبانی میشود.
- اپلیکیشنهای موبایل کراسپلتفرم (Cross Platform): اپلیکیشنهای موبایل کراسپلتفرم (یا بین پلتفرمی) اپلیکیشنهایی هستند که با یک زبان نوشته میشوند و بر روی همهی پلتفرمها اجرایی میگردند. این اپلیکیشنها در واقع کدهای خود را از طریق چارچوبهایی که به وجود آمده، در سیستم عاملهای مختلف به کدهای نیتیو تبدیل میکنند و اجرا میشوند. در چارچوبهای کراس پلتفرم، میتوان از زبانهای بسیار متنوعی استفاده کرد و کدهای نوشته شده را بر روی موبایل اجرا کرد.
- اپکلیشنهای بر پایه وب (Mobile Web): اپلیکیشنهای بر پایه وب نوع خاصی از اپلیکشن هستند که در یک دامنه خاص (سایت) و به زبانهای معمول در وب نوشته میشوند. کاربران موبایل میتوانند با استفاده از دامنه یا آدرس اینترنتی سایت، به آن اپلیکیشن دسترسی داشته باشند. با وجود این که این نوع اپها به معنای واقعی کلمه اپلیکیشن نیستند و بر روی موبایل نصب نمیشوند، اما یکی از شیوههایی هستند که توسعهدهندگان برای ارائه اپهای خود از آن استفاده میکنند. این نوع برنامهنویسی وب نیز خود به دو دسته تقسیم میشود.
- برنامهنویسی وب ریسپانسیو (Responsive web programming): در نوع ریسپانسیو، شما سایت را به گونهای میسازید که کاربران بتوانند با دستگاههای مختلف به آن دسترسی داشته باشند و سایت نیز با همهی آن دستگاهها، انطابق کامل دارد.
- برنامهنویسی وب پراگرسیو (Progressive web programming): در این نوع برنامهنویسی، سایت به گونهای طراحی میشود که کاملاً شبیه به یک اپلیکیشن موبایل است. یعنی ممکن است در حالتی که از طریق لپتاپ نیز سایت را باز میکنید، با یک محیطی شبیه به اپلیکیشن موبایل مواجه شوید.
- اپلیکیشنهای موبایل هیبرید (Hybrid Apps): اپلیکیشنهای هیبرید، در واقع نوعی اپلیکیشن وب هستند که بر بستر نیتیو نوشته شدهاند. در واقع میتوان گفت این نوع اپ، ترکیبی از دو نوع قبلی است. محدودیتهای آن نسبت به مدل وب کمتر و نسبت به مدل نیتیو همچنان بیشتر است.
توسعه اپلیکیشنها برای سیستم عامل iOS
سیستم عامل iOS، یک سیستم عامل اختصاصی از شرکت اپل (Apple) است که برای دستگاههای موبایل هوشمند این کمپانی (آیفون) و تبلتهایش (آیپد) عرضه شده است. اپهایی برای سیستم عامل iOS نوشته میشود، قابلیت اجرا شدن بر روی آیفونها و آیپدها را دارا خواهند بود. بنابراین در هنگام نوشتن اپ، باید به تفاوتهای دستگاهها و مدلهای مختلف آیفون و آیپد تسلط داشته باشید تا بتوانید یک اپ ریسپانسیو خوب که در همهی آنها به خوبی اجرا میشود، طراحی کنید.
برای این که بتوانید برای iOS اپ طراحی کنید، باید دارای یک توسعهدهنده اپل (Apple developer account) باشید و برنامه Xcode IDE را نیز بر روی کامپیوتر مک خود نصب کنید. نوشتن و دیباگ کردن یک اپلیکیشن iOS بر روی کامپیوتری که دارای سیستم عامل ویندوز است، تقریباً امکانپذیر نیست. Xcode دارای همهی ابزارهای لازم برای توسعه اپ است: از کیت توسعه نرمافزار (SDK) گرفته تا ویرایشگر کد، کامپایلر کد، شبیهساز و دیباگر.
اپهای iOS را میتوان بر روی کیتهای توسعه نرمافزار این سیستم عامل و با استفاده از زبانهای آبجکتیو سی (Objective C) و سوییفت (Swift) نوشت.
آبجکتیو سی (Objective C)
آبجکتیو سی یکی از نخستین زبانهای برنامهنویسی موبایل بود که اپل از آن برای توسعه اپهای iOS پشتیبانی میکرد. آبجکتیو سی یک زبان برنامهنویسی شیگرا (Object oriented یا OO) است که از زبانهای برنامهنویسی سی (C) و اسمالتاک (SmallTalk) مشتق شده. انتقادات زیادی نسبت به این زبان برنامهنویسی وجود دارد و بسیاری معتقدند که خواندن و دیباگ کردن کدهای این زبان کار بسیار دشواری است. با این حال آبجکتیو سی تا سالهای زیادی به صورت گسترده استفاده میشد. بعد از معرفی زبان سوییفت (Swift) توسط اپل، استفاده از زبان آبجکتیو سی در توسعه اپهای iOS به شدت کاهش یافته است.
سوییفت (Swift)
اپل زبان برنامهنویسی سوییفت را در سال ۲۰۱۴ میلادی معرفی کرد و از سال ۲۰۱۵ میلادی، امکان توسعه اپهای iOS در Xcode به وسیله این زبان فراهم شد. با ارائه یک بهروزرسانی عظیم در سال ۲۰۱۶ و عرضه نسخه سوم سوییفت ( v 3.0)، این زبان به صورت رسمی به عنوان زبان اصلی توسعه iOS شناخته شد و آبجکتیو سی کنار رفت. البته همچنان امکان استفاده از آبجتیو سی وجود دارد و میتوان از هر دو زبان استفاده کرد. استفاده از لایبرریهای (library) آبجکتیو سی همچنان در سوییفت امکانپذیر است. با این حال اپل به صورت مشهود تصمیم گرفته تا سوییفت را به عنوان زبان اصلی توسعه اپهایش به رسمیت بشناسد. سوییفت نسبت به آبجکتیو سی، سادهتر و فشردهتر است و یادگیریاش نیز آسانتر است. بنابراین توسعهدهندگان سوییفت مشکل خاصی برای تغییر زبان از آبجکتیو به سوییفت نداشتند.
توسعه اپلیکیشنها برای سیستم عامل اندروید
اندروید یک سیستم عامل متنباز است که توسط گوگل توسعه داده و عرضه شده است. گوگل بر روی دستگاههای موبایل خودش (معروف به پیکسل) از این سیستم عامل استفاده میکنند. همچنین بسیاری از تولیدکنندگان بزرگ موبایل در دنیا مثل سامسونگ، هواآوی و شیائومی نیز در موبایلها و تبلتهای تولیدیشان از اندروید استفاده میکنند. از آنجایی که تولیدکنندگان زیادی از اندروید استفاده میکنند، دستگاههای مجهز به اندروید در اندازهها و با ویژگیهای متنوعی عرضه میشوند.
برای توسعه اپلیکیشنهای اندروید، به کیت توسعه نرمافزار، دیباگر و ابزارهای مربوطه احتیاج دارید. اندروید استودیو معروفترین محیط نرمافزاری توسعه اندروید است که به صورت رایگان توسط خود گوگل عرضه شده است. با این حال نرمافزارهای دیگری مثل Netbeans و IntelliJ Idea نیز در این زمینه وجود دارد. شما میتوانید در هر سیستم عاملی (مک، ویندوز و لینوکس) به توسعه اندروید بپردازید.
زبانهای اصلی توسعه اندروید، جاوا (Java) و کاتلین (Kotlin) هستند.
جاوا (Java)
در سال ۲۰۰۸ و همزمان با عرضه اولین اندروید، جاوا به عنوان زبان اصلی توسعه آن معرفی شد. جاوا یک زبان برنامهنویسی شیگراست که در سال ۱۹۹۵ و توسط میکروسیستمز (Microsystems) توسعه داده شده. این کمپانی در حال حاضر در اختیار شرکت اوراکل (Oracle) است. این زبان برنامهنویسی شیگرا، در مقایسه با زبانی مثل C++ بسیار محبوب بود و به همین دلیل در پلتفرم اندروید نیز از آن استفاده شد. منتقدان جاوا معتقدند که در این زبان، برای انجام دادن سادهترین کارها نیز باید کدهای زیادی نوشته شود و درک برخی مفاهیم آن دشوار است. با این حال، تا زمان ارائه زبان کاتلین، جاوا به عنوان تنها زبان اصلی توسعه اندروید شناخته میشد و توسعهدهندگان به صورت گسترده از آن استفاده میکردند.
در سال ۲۰۱۹ ورق برگشت و به گفته گوگل، از آن موقع به بعد، کاتلین زبان اصلی توسعه اندروید شناخته میشود.
کاتلین (Kotlin)
در سال ۲۰۱۷ میلادی، گوگل اعلام کرد که از زبان برنامهنویسی کاتلین نیز به عنوان یک زبان برای توسعه اندروید پشتیبانی میکند. زبان کاتلین با جاوا انطباقپذیری کامل دارد و میتوان از لایبرریهای جاوا در کاتلین نیز استفاده کرد. به صورت خلاصه میتوان گفت که کاتلین، نسخهی تر و تمیزتر و جمعوجورترِ جاواست. ضمن این که برای کسانی که با جاوا کد میزنند، یادگیری کاتلین بسیار ساده خواهد بود.
توسعه اپلیکیشنها برای iOS و اندروید
همان گونه که در معرفی انواع اپ گفتیم، در نوع نیتیو، شما فقط برای یک سیستم عامل خاص برنامه مینویسید. بنابراین برای توسعه اپ در دو سیستم عامل iOS و اندروید، باید به صورت جداگانه کد نوشت. اما ممکن است بخواهیم تا برای هر دوی این سیستم عاملها اپلیکیشن تولید کنیم، اما منابع لازم برای کدنویسی اختصاصی برای هر یک را نداشته باشیم. خبر خوب این است که فناوریهایی نیز وجود دارد که میتوانید به وسیلهی آنها اپلیکیشنی طراحی کنید که هم در iOS اجرا میشود و هم در اندروید.
بسیاری از کمپانیها سعی کردهاند تا چارچوبهای جدیدی به وجود بیاورند که توسعهدهندگان بتوانند از طریق آنها، اپلیکیشنهای برای iOS و اندروید به صورت همزمان تولید کنند. این چارچوبها دارای محیطهای توسعه (IDE) خاص خودشان هستند. برخی اوقات این چارچوبهای جدید، دارای شبیهسازهای اختصاصی خودشان نیز هستند. اما در اکثر مواقع، باید به صورت همزمان، کیت توسعه نرمافزاری این سیستم عاملها را در اختیار داشته باشید. در ادامه برخی از این چارچوبها را معرفی میکنیم.
HTML5 و Apache Cordova
Apache Cordova پروژهای را استارت زد که در آن شما میتوانستید در مرورگر خود یک صفحه خاص به نام Webview را فراخوانی کنید. از طریق Webview شما میتوانید با زبانهای HTML و جاوااسکریپت (JS) کد بنویسید و سپس آن را در هر سیستم عاملی اجرا کنید. این ابزار شما را قادر میسازد تا یک کد بنویسید و بتوانید آن را هم بر روی iOS و هم بر روی اندروید اجرا کنید. با این حال انتقادات زیادی به این نوع رویکرد برنامهنویسی وجود دارد. چرا که محدودیتهای زیادی در آن وجود دارد.
C# و Xamarin
سی شارپ یا C# یک زبان برنامهنویسی شیگراست که توسط مایکروسافت توسعه داده شده است. چارچوب Xamarin که آن هم در اختیار مایکروسافت است، به شما اجازه میدهد تا از سی شارپ در چارچوب دات نت (.NET) استفاده کنید و سپس آن را بر روی پلتفرم iOS یا اندروید اجرا کنید. محبوبترین محیط نرمافزاری برای توسعه سی شارپ و Xamarin، برنامه ویژوال استودیو کد (Visual Studio Code) است که توسط مایکروسافت عرضه شده.
توسعه اپلیکیشن بر پایه وب
میتوان از طریق وب و مرورگر نیز بر روی موبایلها، اپلیکیشنهایی را اجرا کرد. با وجود این که این نوع اپها به معنای واقعی کلمه اپلیکیشن محسوب نمیشوند (چون در مرورگر اجرا میشوند) اما میتوان از این روش نیز برای توسعه اپ استفاده کرد. در این روش، شما در واقع یک سایت میسازید و از زبانهای HTML، جاوا اسکرپیت و CSS استفاده میکنید. وبسایت شما بر روی یک دامنه خاص قرار میگیرد. کاربران موبایل با باز کردن آن دامنه، به وبسایتی برمیخورند که محیطش بیشتر شبیه به یک اپلیکیشن است.
بسیاری از اپلیکیشنهای ایرانی، به خاطر محدودیتهای وضع شده اپل علیه اپهای ایرانی، مجبور شدند تا نسخههای وب اپلیکیشنهای خود را توسعه دهند. بنابراین اگر از آیفون یا آیپد استفاده میکنید، احتمال زیادی وجود دارد که از نسخه وب برخی اپلیکیشنها استفاده کرده باشید. این اپلیکیشنها دقیقاً بر همین منوالی که گفتیم، نوشته شدهاند.
دوره آموزشی آشنایی با زبانهای برنامهنویسی موبایل
در این مقالهی آموزشی سعی کردیم تا شما را با برخی از مهمترین زبانهای برنامهنویسی موبایل آشنا کنیم. شکی نیست که اگر بخواهید به عنوان یک توسعه دهنده موبایل به فعالیت بپردازید، باید زمان زیادی را صرف یادگیری و تمرین زبانهای مختلف برنامهنویسی کنید. میتوانید یک پلتفرم خاص (اندروید یا iOS) را انتخاب کنید و صرفاً برای یکی از آنها یادگیری را آغاز کنید. بعداً میتوانید به صورت اختصاصی فقط اپلیکیشنهای آن سیستم عامل خاص را توسعه دهید یا به یادگیری سیستم عامل دیگر نیز بپردازید. با توجه به این که نرم افزارهای توسعه و شبیهسازی اندروید کاملاً رایگان هستند، معمولاً شروع کار با اندروید سادهتر است و به همین خاطر بسیاری کار خود را با اندروید آغاز میکنند.
برای آموزش کامل برنامهنویسی موبایل میتوانید در دوره «آموزش برنامه نویسی موبایل» در دانشگاه تهران شرکت کنید. لینک شرکت در این دوره:
دوره برنامه نویسی موبایل اندروید
ضمن این که برای شما یک ویدئوی آموزشی رایگان برای آشنایی با برنامهنویسی موبایل نیز آماده کردیم که از طریق این لینک میتوانید آن را تماشا کنید.