کاتلین در برابر جاوا! آیا باید از کاتلین برای توسعه اندروید استفاده کنیم؟

دیروز داشتم میچرخیدم در وب و به یک مطلب جالبی برخورد کردم که این سوال را مطرح میکرد که برای توسعه اندرویید باید از جاوا استفاده کنیم یا کاتلین؟ چندین وبلاگ را چک کردم و دیدم که موضوع گسترده‌ایه و موافق و مخالف های زیادی داره و هرکدوم هم دلایل خودشون را دارند. اما قبل از اینکه اصلا بخوایم راجع به اینکه جاوا یاد بگیریم یا کاتلین میتونیم این سوال را مطرح کنیم که چرا توسعه اندروید را یاد بگیریم؟!

پاسخ به این سوال میتونه این باشه که دور تا دور ما را ابزارهایی گرفتند که بستر آن‌ها سیستم عامل اندرویید یا iOS هست. تلویزیون‌ها، ماشین‌ها، تلفن‌های همراه و یک عالمه چیز دیگه و خوب توی این بازی اندرویید با ۲ میلیارد کاربر فعال در ماه - تایید یا رد نمیکنم - بیشترین میزان گستردگی سیستم عامل را داره. بنابراین شما اگر توسعه اندرویید را یاد بگیرید قادر خواهید بود به جمع ۳.۳ میلیارد اپلیکیشنی که توی گوگل پلی هست بپیوندید. و طبیعتا چون نیاز بازار دنیا و ایران هم هست درآمد خوبی کسب کنید.

اما داستان جاوا و کاتلین چیه؟

خوب سال‌های سال جاوا به خاطر ویژگی‌های اصلی مثل شی‌گرا بودن، سادگی و قابلیت انتقال و امنیت برای توسعه برنامه های اندروییدی مورد استفاده قرار گرفته. و خوب اندرویید هم با اتکا به جاوا تقریبا روی هر پلتفورمی قابل اجرا بوده و همچنان هم زبان بسیار قدرتمندی برای توسعه اپ موبایل اندروییدی هست.

اما موضوعی که وجود داره اینه که جاوا هم مثل هر زبان کامپایلری دیگه‌ای محدودیت های خودش را داره:

  • توی نسخه های قدیمی مثل Java SE 8 و Java SE 7 که از قضا اغلب برنامه‌نویس‌ها هم از اون استفاده میکنند، تولید خطا میکنه.
  • برنامه‌نویس‌هایی که از جاوا برای توسعه اندرویید استفاده میکنند از نبود برخی از ویژگی‌ها مثل استریم‌ها، لامبدا، متد رفرنس و ... شاکی هستند.
  • یک مشکل اساسی میلیارد دلاری توی جاوا روش هندل کردن null در برنامه است که توی قسمت ۴ کاتلین راجع بهش صحبت کردیم: NullPointerException.
http://vrgl.ir/3tDYs
  • و نکته آخر اینکه برای انجام یک کار خیلی ساده توی جاوا باید کلی کد بزنید :)

خوب حالا راه حل چیه؟ کاتلین :)

سال ۲۰۱۱ که مغزهای پشت JetBrains در روسیه کم کم به این نتیجه رسیدن که این داستان‌های جاوا داره دردسر ساز میشه تصمیم گرفتند یک زبانی را ارایه کنند که بهترین های جاوا و سایر زبان‌های برنامه‌نویسی بعلاوه کمبودهای جاوا را درخودش داشته باشه. عالیه نه؟

خروجی این تفکر شد زبان کاتلین. یک زبان متن باز، با بررسی نوع‌ها در زمان کامپایل و قابل اجرا روی ماشین مجازی جاوا. محبوبیت این زبان هم دلایل زیر میتونه باشه:

  • کد کمتری میزنید و برنامه‌های کوچکتری- با همان عملکرد معادل در جاوا - و با کد خواناتر توسعه میدید.
  • با کدهای جاوایی که زدید همخوانی داره. در نتیجه میتونید جاوا را با کاتلین قاطی کنید.
  • فریمورک جاوا را بازپیاده‌سازی نکرده. و از ویژگی‌هایی مثل سیستم ساخت دوری کرده چون نمونه‌های متن بازش هستن.
  • اپ ها کمتر کرش میکنند چون مشکل NullPointerException را هندل کرده در زمان توسعه زبان.
  • و این اطمینان را داده که اندرویید استادیو ۳ کاتلین را ۱۰۰ درصد پشتیبانی میکنه.
  • و از همه مهمتر اینکه گوگل در کنفرانس Google I/O 2017 زبان کاتلین را به عنوان زبان رسمی توسعه اندرویید اعلام کرد.

خلاصه اینکه اگر تجربه قبلی در توسعه اندرویید ندارید کاتلین برای شماست :) ولی اگر از دوستان جاوایی هستید :) کاتلین یک چیز جدیده. یادگرفتنش براتون سخت نیست و زندگی را راحت‌تر میکنه.

البته یچیزی را هم بگیم سوء تفاهم نشه: معنی این حرفهایی که زدیم این نیست که جاوا در غروب خودشه و این حرفا؛ خیر. همچنان زبان بسیار قدرتمندیه و بسیاری از ابزارها در حوزه‌های مختلف با این زبان توسعه داده شده که زندگی بدون آنها بسیار سخت میبود!

اما خوب اینکه کاتلین در حوزه توسعه موبایل - و خوب در آینده در بسیار دیگر از حوزه‌ها حتی iOS - خیلی از مشکلات و محدودیت‌ها را برطرف کرده میتونه این زبان را برای کسانی که میخوان شروع کنن یا قصد یادگرفتن یک زبان جدید را دارن گزینه بسیار ایده‌الی بکنه.