برنامه نویسی اندروید با کاتلین – راهنمای شروع به کار


این مقاله برای کسانی مناسب است که میخواهند شروع به یادگیری کاتلین بکنند و پیشزمینهای از برنامهنویسی برای اندروید نیز دارند، اما نمیدانند از کجا باید آغاز کنند؛ با ما همراه باشید تا برنامه نویسی اندروید با کاتلین را بیاموزید. فهرست مطالبی که در این راهنما میآموزیم به شرح زیر است:
- کاتلین چیست؟
- چرا باید از کاتلین در اندروید استفاده کرد؟
- ساختار درونی کاتلین چگونه است؟
- جاوا چه تفاوتی با کاتلین دارد؟
- قابلیتهای موجود کاتلین کدام هستند؟
کاتلین چیست؟
«کاتلین» (Kotlin) یک زبان برنامهنویسی چندمنظوره، متن-باز و با نوعبندی استاتیک برای JVM، مرورگر، نیتیو و اندروید است که قابلیتهای برنامهنویسی شیءگرا و برنامهنویسی تابعی را با هم ترکیب میکند.
در جولای سال 2011 میلادی JetBrains از پروژه کاتلین که زبانی برای HVM بود رونمایی کرد و پس از آن نیز یک سال تحت توسعه بود.
یکی از اهداف بیان شده برای کاتلین این بود که به اندازه جاوا سریع کامپایل شود. در فوریه سال 2012 میلادی، جتبرینز پروژه را تحت لایسنس آپاچی 2 اوپنسورس کرد.
چرا برنامه نویسی اندروید با کاتلین توصیه میشود؟
نام زبان برنامهنویسی کاتلین از جزیرهای به همین نام در نزدیکی سنت پترزبورگ میآید. «آندری بریسلاو» (Andrey Breslav) اعلام کرده است که تیم تصمیم گفته است نام این زبان را همانند جاوا که نام خود را از جزیرهای در اندونزی گرفته است، از روی این جزیره اخذ کند.
کاتلین به طور رسمی از سوی گوگل برای توسعه موبایل روی اندروید پشتیبانی میشود. از زمان انتشار اندروید استودیو 3.0 در اکتبر 2017، کاتلین به عنوان جایگزین برای کامپایلر استاندارد جاوا در آن گنجانده شده است. کامپایلر کاتلین اندروید به کاربر امکان میدهد که بین بایتکد سازگار با جاوا 6 یا 8 انتخاب کند.
از 7 می 2019، کاتلین به زبان ترجیحی گوگل برای توسعه اپلیکیشنهای اندروید تبدیل شده است. یا به زبان سادهتر گوگل به توسعه دهندگان میگوید بهتر است برنامه نویسی اندروید با کاتلین انجام شود.
- سازگاری: کاتلین با JDK6 سازگار است، از این رو دستگاههای قدیمی از گردونه عقب نمیمانند.
- عملکرد: کاتلین از نظر عملکردی با جاوا برابری میکند.
- همکنشپذیری: کاتلین 100% با جاوا از جمله با «حاشیهنویسیها» (annotations) همکنش پذیر است.
- زمان کامپایل: در بیلدهای تمیز مقداری سربار وجود دارد، اما در بیلدهای افزایشی کمی سریعتر است.
- منحنی یادگیری: یادگیری کاتلین به خصوص برای کسانی که به زبانهای مدرن عادت دارند، آسان است. مبدل جاوا به کاتلین در IntelliJ یا اندروید استودیو این یادگیری را هر چه بیشتر تسهیل میکند. میتوان از ترکیبی از کاتلین و جاوا نیز در یک پروژه استفاده کرد، بنابراین میتوانید زمان خود را صرف یادگیری کاتلین بکنید و زمانی که کاملاً مطمئن بودید از آن استفاده عملی بکنید.
ساختار داخلی کاتلین چگونه است؟
کاتلین نیز دقیقاً مانند جاوا یک زبان کامپایل شونده است. این بدان معنی است که پیش از آن که بتوانید کد کاتلین را اجرا کنید، باید آن را کامپایل کنید. در ادامه به توضیح چگونگی فرایند کامپایل شدن و ابزارهای مختلفی که این فرایند را تسهیل میکنند میپردازیم.
کد منبع کاتلین به طور معمول در فایلهایی با پسوند kt. نگهداری میشود. کامپایلر کاتلین کد منبع را آنالیز میکند و فایلهای class. را تولید میکند که دقیقاً همانند کاری است که کامپایلر جاوا انجام میدهد. در ادامه فایلهای .class تولید شده، بستهبندیشده و با استفاده از رویه استاندارد برای نوع اپلیکیشنی که روی آن کار میکنید، اجرا میشوند.
تفاوتهای جاوا با کاتلین کدام هستند؟
در این بخش برخی از تفاوتهای جاوا با کاتلین را به صورت عملی نمایش میدهیم.
پرینت کردن در کنسول
Java System.out.print("Amit Shekhar"); System.out.println("Amit Shekhar"); Kotlin print("Amit Shekhar") println("Amit Shekhar")
ثابتها و متغیرها
*var (Mutable variable)
*val (Immutable variable)
Java String name = "Amit Shekhar"; final String name = "Amit Shekhar"; Kotlin var name = "Amit Shekhar" val name = "Amit Shekhar"
انواع داده
منظور از نوع داده، نوع و اندازه دادههایی مرتبط با متغیرها و تابعها است. نوع داده برای اعلان موقعیت حافظهی متغیر که قابلیتهای داده را تعیین میکند استفاده میشود. در کاتلین همه چیز یک شیء است. معنی این حرف آن است که میتوانیم تابع عضو و مشخصههای روی هر متغیر را فراخوانی کنیم.
- Number
- Character
- Boolean
- Array
- String
انتساب مقدار تهی
Java String otherName; otherName = null; Kotlin var otherName: String? otherName = null
بررسی تهی بودن یک مقدار
الحاق رشتهها
ایجاد خط جدید در یک رشته
عملگر سهتایی
عملگرهای بیتی
بررسی نوع و تبدیل نوع
شرایط چندگانه (Switch Case)
حلقه for
کلکسیونها
تعریف متدها
تعداد آرگومانهای متغیر
تعریف متدها با return
قابلیتهای موجود در کاتلین کدام هستند؟
در این بخش برخی از قابلیتهایی که صرفاً در کاتلین وجود دارند را معرفی میکنیم.
مقداردهی اولیه با تأخیر (lazy Initialization)
مقداردهی با تأخیر (by lazy) در مواردی که مشغول پیادهسازی مشخصههای فقط-خواندنی هستیم که به صورت با تأخیر در کاتلین اجرا میشوند مفید خواهد بود. by lazy { … } مقداردهی اولیه خود را جایی انجام میدهد که مشخصه اولین بار استفاده میشود و نه در زمان اعلان کردن آن.
class Demo { val myName: String by lazy { "John" } }
مقداردهی کند
مقداردهی کند متغیرها به این معنی است که توسعهدهندگان قبل از دسترسی به متغیر آن را جایی در کد مقداردهی اولیه میکنند.
class Demo { val myName: String by lazy { "John" } }
کلاس داده
ما به طور مکرر کلاسهایی میسازیم که کاری به جز نگهداری دادهها ندارند. در چنین کلاسهایی برخی کارکردهای استاندارد غالباً به صورت مکانیکی از دادهها مشتق میشوند. در کاتلین، این کار در کلاس داده اجرا میشود و به صورت دادهای علامتگذاری میشود.
data class Developer(val name: String, val age: Int)
زمانی که یک کلاس به صورت کلاس داده علامتگذاری شود، نیاز نیست که تابعهای زیر را مانند جاوا در آن پیادهسازی یا ایجاد کنیم:
- ()hashCode
- ()equals
- ()toString
- ()copy
کامپایلر به صورت خودکار این موارد را به صورت داخلی ایجاد میکند و بدین ترتیب کد تمیزتری خواهیم داشت.
کلاسهای مهر و موم شده
کلاسهای مهر و موم شده برای نمایش سلسله مراتب کلاس محدودشده استفاده میشوند که در آنها شیء یا مقدار تنها یک نوع میتواند داشته باشد و از این رو با نوع ثابتی در سلسله مراتب مواجه هستیم. کلاسهای مهر و موم شده به طور مکرر در موارد مختلفی که میدانیم مقدار مفروضی دارای صرفاً گزینههای محدودی است، استفاده میشوند.
تابعهای اکستنشن
تابعهای اکستنشن در کاتلین به ما امکان میدهند که کارکرد یک کلاس را با افزودن قابلیتهای جدید بسط دهیم. این کلاس لزوماً نباید به ما تعلق داشته باشد، بلکه میتواند کتابخانه شخص ثالث باشد و همچنین الزامی به ارثبری از کلاس وجود ندارد.
به این ترتیب به انتهای این مقاله میرسیم و امیدواریم از آن بهره کافی را برده باشید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی اندروید
- مجموعه آموزشهای برنامهنویسی
- گنجینه برنامه نویسی اندروید (Android)
- اپلیکیشن آنی اندروید (Android Instant App) چیست؟ — از صفر تا صد
- پروفایل کردن اپلیکیشن ها با اندروید استودیو — به زبان ساده
==
سلام،
لطفا کمکم کنید هر کاری میکنم در اندروید استودیو با زبان کاتلین موفق نمیشم اجرای کد اشیاء رو به طور خودکار داشته باشم.