تا قبل از عرضهٔ زبان Kotlin، به طور معمول دولوپرهای اندروید از زبان Java برای نوشتن اپهای اندرویدی استفاده میکردند؛ زبانی با قدمت زیاد و یک اکوسیستم شناختهشده، اما همواره دولوپرهایی که از زبان جاوا برای نوشتن برنامههایشان استفاده میکنند از اینکه نمیتوانند از آخرین بهروزرسانیها و جدیدترین فیچرها استفاده کنند، احساس کمبود میکنند. در همین راستا، در این مقاله قصد داریم ببینیم که چگونه میتوان از زبانهای و پلتفرمهای دیگر به عنوان جایگزینی برای زبان جاوا برای اپنویسی اندروید استفاده کرد.
پیش از هر چیز، نیاز به توضیح است که یک راهحل برای برنامهنویسان این است که از تکنیکهای مختلفی برای تبدیل کدهای اچتیامال، سیاساس و جاوااسکریپت برای کدنویسی اپهای اندرویدی استفاده کنند اما در این پُست قصد نداریم تا هیچکدام از این گزینههای برنامهنویسی هیبریدی را بررسی کرده و آتش جنگ مقایسه بین دو تکنیک برنامهنویسی نیتیو و هیبریدی را شعلهور کنیم، بلکه در این مقاله قصد داریم تا زبانهایی را مورد بررسی قرار دهیم که امکان استفاده از آنها به عنوان روشی نیتیو برای توسعهٔ اپلیکیشنهای اندرویدی وجود دارد (چنانچه علاقمند به کسب اطلاعات بیشتر در این مورد هستید، میتوانید به مقالهٔ برنامهنویسی Native یا Cross-platform مراجعه نمایید.)
NDK
تا پیش از عرضهٔ زبان کاتلین، به نظر میرسد که کمپانی گوگل با انتخاب جاوا به عنوان زبان رسمی اپنویسی اندروید تصمیم خوبی گرفته بود اما در عین حال با وجود اینکه این زبان از محبوبیت خوبی برخوردار بود و همچنین ویژگی پرتابل بودن را نیز داشت، امکان استفاده از زبانهایی همچون C یا ++C را به توسعهدهندگان نمیداد. NDK که مخفف Native Development Kit است، راهکار خلاص شدن از این دست محدودیتها است به طوری که با استفاده از آن، برنامهنویس از امکان استفاده از ویژگیهای سختافزاری مشخصی برخوردار خواهد شد. در واقع، NDK برای برنامهنویسانی در نظر گرفته شده است که میخواهند از لایبرریهایی استفاده کنند که برای C یا ++C نوشته شدهاند.
برای استفاده از مجموعه API و لایبرریهای اندروید، معمولاً برنامهنویسان باید کد C یا ++C خود را با استفاده از کدی که اصطلاحاً Wrapper نامیده میشود، به کد اصلی به اصطلاح Bind کرده و توابع موجود در لایبرری خود را با استفاده از این واسط مورد استفاده قرار دهند. گرچه در گذشته بهتر بود که از NDK در توسعهٔ اپلیکیشن استفاده نشود، اما با توجه به بهبودهای حاصل شده در پلتفرم اندروید، میتوان از این کیت برای افزایش سرعت اپلیکیشنها استفاده کرد (در بعضی از موارد مانند توسعهٔ گیم حتی بهتر است که از NDK استفاده شود زیرا نسبت به جاوا، به مراتب سریعتر است.)
Xamarin
زامارین که در بدو امر Mono نامیده میشد و در حال حاضر تحت این عنوان شرکت مایکروسافت مالک آن است، امکان برنامهنویسی با زبان #C برای برنامهنویسی تحت چندین پلتفرم را فراهم میکند که اندروید هم یکی از آنها است (البته این در حالی است که از NDK برای کامپایل کردن کدهای #C استفاده میکند، ولی به شما امکان استفاده از ایپیآیها و کامپوننتهای نیتیو را نیز میدهد.)
Go
گو زبانی است که در سال 2009 در گوگل متولد شد و ابزاری برای این زبان به بازار عرضه شده تحتعنوان Gomobile که امکان بیلد کردن اپهای اندرویدی نوشته شده با زبان گو را به دولوپر میدهد.
Dart.js
Dart زبانی است که در سال 2011 در کمپانی گوگل کلید خورد. دارت به نوعی یک زبان کامپایلی به حساب میآید که کد نوشته شده با آن بر روی ماشین مجازی مخصوص این زبان اجرا میشود؛ درست شبیه زبان جاوا. Dart.js قابلیتی است که در لایبرری استاندارد زبان Dart گنجانده شده که امکان تعامل با کدهای JS را به دولوپر میدهد.
برای برنامهنویسی موبایل، مجموعهای از ابزارها و افزونهها برای این زبان وجود دارند که Flutter نام دارد که از ویجتها و کامپوننتهای نیتیو یا حتی WebView استفاده نمیکند بلکه در عوض این زبان از متد خاص خود برای رِندر نمودن صفحه استفاده میکند (Flutter با این هدف پیش آمده است که کارها را تا حد امکان ساده کند. علاوه بر این، پلاگینهایی همراه با این ابزار برای نرمافزارهای Atom و Intellij آمده است.)
Swift
زبان سوئیفت اپل که جایگزینی برای Objective-C است را میتوان برای توسعهٔ اپهای اندرویدی نیز مورد استفاده قرار داد. به طور مثال، ابزارهایی همچون RemObjects یا Scade این امکان را به دولوپر میدهند که با سوئیفت برای اندروید کدنویسی نمایند.
Rust
زبان برنامهنویسی Rust که یک زبان کامپایلی است، محصول بنیاد موزیلا است که رشد چشمگیری در سالهای گذشته داشته است به طوری که این زبان لقب محبوبترین زبان برنامهنویسی را از جانب استک اورفلو در سال 2016 از آنِ خود کرد.
این زبان برای سیستمهای پیچیدهای طراحی شده است که نیاز دارند چندین پراسس را در یک زمان اجرا کنند؛ اما این زبان اساساً برای برنامهنویسی موبایل ساخته نشده است، اما این موضوع هرگز باعث نمیشود که برنامهنویسان و توسعهدهندگان دست از کدنویسی اپهای موبایل با این زبان بردارند. در واقع، به منظور کدنویسی اپهای اندرویدی با زبان Rust ابتدا نیاز به نصب NDK خواهید داشت؛ سپس نیاز به نصب rustup خواهید داشت و از آن پس به سادگی قادر به کدنویسی با زبان Rust در محیط اندروید استودیو خواهید بود.
Kotlin
اگر بهتر بخواهیم این زبان را به طور خلاصه توصیف کنیم، میتوانیم بگوییم جایگزینی برای جاوا. با این زبان به خوبی میتوان در اندروید استودیو کدنویسی کرد و سینتکس آن برای برنامهنویسان جاوا آشنا به نظر میرسد، البته این در حالی است که ویژگیهای زبانهای مدرن را نیز شامل میشود. همچنین شما میتوانید کد آن را به کد جاوااسکریپت کامپایل نمایید، که ویژگی خوبی برای افرادی است که میخواهند اپلیکیشنهای مالتیپلتفرم بسازند که برای آشنایی بیشتر با این زبان، میتوانید به مقالهٔ درآمدی بر زبان رقیب جاوا (کاتلین) برای توسعهٔ اپهای اندرویدی مراجعه نمایید.
حال نوبت به نظرات شما است تا تجربیات خود را با دیگر کاربران به اشتراک بگذارید. آیا تا به حال با یکی از زبانهای معرفیشده در این مقاله برای اپنویسی اندروید برنامهنویسی کردهاید؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.