کاتلین یا جاوا؟

کاتلین برای اندرویدشاید به تازگی اسم کاتلین را زیاد شنیده باشید. اگر دقت کرده باشید کد های سمپل در سایت گوگل هم اول به زبان کالین هستند و بعد قابلیت تغییر به زبان جاوا دارند. ریپازیتوری هایی هم که به زبان کاتلین هستند به شدت در حال توسعه و بیشتر شدن هستند. میشود گفت که یادگیری کاتلین برای هم توسعه دهنده اندرویدی واجب است! به تازگی پروژه ای رو با کاتلین شروع کردم. تجربه خیلی خوبی بود. چرا به کاتلین مهاجرت کنیم؟قبل از شروع یادگیری زبان جدید بهتر است بدانیم چرا میخواهیم آنرا یاد بگیریم. باید آن را با سایر زبان ها و ابزار های موجود مقایسه کنیم و در صورتی که بهتر بود شروع به یادگیری و استفاده از آن کنیم.مقایسه کاتلین با جاواجاوا از دیرباز زبان برنامه نویسی برای سیستم عامل اندروید بوده است. الان هم خیلی از برنامه نویسان برای اندروید جاوا کد میزنند. خبر خوب این است که کاتلین با جاوا کاملا سازگار است.چون کاتلین هم روی jvm اجرا میشود. کد های کاتلین تبدیل به بایت کد هایی میشوند که jvm میتواند آنها را اجرا کند. میتوان در یک پروژه اندروید هم کد جاوا داشت هم کد کاتلین. حتی میشود از داخل کد کاتلین کد جاوا را صدا کرد و برعکس. این ویژگی به ما این امکان را میدهد که بتوانیم پروژه ای که در آن هستیم را تدریجی به زبان کاتلین ببریم.کاتلین در مقایسه با جاوا سینتکس راحت تری دارد. البته شاید در ابتدای کار کمی کار کردن با سینتکس کاتلین برایتان دشوار باشد ولی شک نکنید که در زمان کوتاهی متوجه خواهید شد که از جاوا خیلی ساده تر است. کاتلین نسبت به جاوا تعداد خط کد کمتری دارد. یعنی اگر بخواهید یک کار واحد را به زبان جاوا و کاتلین بنویسید کاتلین تعداد خط کد کمتری دارد.مقایسه تعداد خط کد جاوا و کاتلین به طور میانگینپرفورمنس و کارایی کاتلین نسبت به جاوا. میتوان گفت که کاتلین همان پرفورمنسی را دارد که جاوا دارد. چون کد های کاتلین هم دقیقا مانند جاوا بر روی jvm اجرا میشوند. برای اطلاعات بیشتر در این باره پیشنهاد میکنم این مقاله را بخوانید.یادگیری کاتلین بسیار ساده و استفاده از آن در اندروید بسیار ساده تر است! و خبر خوب این است که کسانی که جاوا بلدند میتوانند در مدت خیلی کوتاهی کاتلین را یاد بگیرند.برخی از ویژگی های کاتلینکاتلین به راحتی ما را از خطر null pointer exception حفظ میکند! کاتلین در مرحله کامپایل null pointer را بررسی میکند.در کاتلین دیگر متد getter و setter نداریم. با نام متغیر آنرا مقدار دهی میکنند. کاتلین یک زبان statically typed است. به این معنی که نوع متغیر ها(int, double, float) ثابت هستند و باید در زمان کامپایل معلوم باشند. دو شکل متغیر داریم. val متغیری که مقدارش ثابت است و قابل تغییر نیست و var متغیری که مقدارش قابل تغییر است.از ویژگی های جالب کاتلین میتوان به توابع افزوده یا extension function ها اشاره کرد. گاهی ما نیاز داریم عملکرد جدیدی را به یک کلاس اضافه کنیم. باید یک کلاس بسازیم که از کلاس مورد نظر ارث بری کند و بعد ویژگی های خود را اضافه کنیم. اما توابع افزوده به این شکل اند که ما میتوانیم ویژگی خود را به کلاس اضافه کنیم بدون آنکه نیاز باشد کلاس جدیدی بسازیم. مثلا میخواهیم متدی در کلاس ImageView باشد که آدرس عکس را بگیرد و آن را نمایش دهد. به این صورت عمل میکنیم: کاتلین کد زدن برای برخی از design pattern ها را برای ما ساده کرده است. مثلا برای ساخت یک کلاس singleton در جاوا اینطور عمل میکنیم در حالی که میتوانیم با کلید واژه object به راحتی یک کلاس singleton در کاتلین ایجاد کردکاتلین ویژگی های جالب و بسیار کاربردی دیگری دارد مثل sealed class و lambda و data class و ... که پیشنهاد میکنم از اینجا دربارشان بیشتر مطالعه کنید.به کاتلین مهاجرت کنیم؟اگر پروژه جدیدی میخواهید شروع کنید و یا پروژه کوچکی دارید که کمتر از ۳ ماه از توسعه ی آن میگذرد به کاتلین مهاجرت کنید. شک نکنید این کار بهتر است. یک فرصتی را تعیین کنید که کد های جاوا را به کاتلین تبدیل کنید. برای اینکار میتوانید از منوی کد گزینه Convert Java File to Kotlin File را انتخاب کنید. ولی بعضی اوقات نیاز است خودتان کد هایی که IDE تولید کرده را کمی تغییر دهید.(از تبدیل کردن کلاس های مدل خود شروع کنید)اگر پروژه تان کمی بزرگتر است و یا مدت زمان بیشتر از ۳ ماه از توسعه آن میگذرد باز هم به کاتلین مهاجرت کنید. اما به این شکل که ویژگی های جدیدی که پیاده میکنید را به زبان کاتلین بنویسید. سپس در یک فرصت مناسب بقیه کد های جاوا را هم به کاتلین تبدیل کنید. در ابتدای کار فقط کد ها را به کاتلین تبدیل کنید و سعی نکنید تغییر ساختار دهید تا از ویژگی های کاتلین استفاده کنید. پس از اینکه کل پروژه به کاتلین تغییر کرد میتوانید در صورت نیاز تغییری در ساختار پروژه دهید.اگر پروژه و تیم بزرگی دارید که بیشتر از ۶ ماه از توسعه آن میگذرد کمی کار سخت میشود. ابتدا کلاس های مدل خود را به کاتلین ببرید. بعد کلاس های تست را به کاتلین تبدیل کنید. با این کار همیشه مطمن خواهید بود که تغییر کدتان به کاتلین باگ یا نقصی در برنامه تان ایجاد نمیکند. اما همیشه یک نسخه جاوا از کدتان را داشته باشید. با وجود اینکه کاتلین زبان ایده آلی است ولی هنوز توسعه دهندگان ارشد جاوا در ایران بسیار بیشتر از توسعه دهندگان کاتلین هستند. ممکن است به همین راحتی یک برنامه نویس ارشد کاتلین را نتوانید پیدا کنید. برای اطلاعات بیشتر اینجا را مطالعه کنید.کاتلین به علت کاربرد خوبش مخصوصا در برنامه نویسی اندروید در این مدتی که نسخه stable آن عرضه شده طرفداران بسیاری پیدا کرده است. کاتلین را میتوان در سمت سرور و یا سمت کلاینت همراه با javascript ویا حتی همراه با c استفاده کرد. که بعدا در باره آنها بیشتر خواهم نوشت.