توسعهدهندگان OpenJDK شروع به پر کردن شکاف با جاوا 8 کردهاند، اما اندروید از تمام ویژگیهای جاوا8 استفاده نمیکند. توسعهدهندگان هنوز از نسخههای قدیمیتر جاوا، یعنی جاوا 6 و 7 استفاده میکنند و قصد ندارد پیشرفت چندانی در آینده کند. این جایی است که Kotlin میآید؛ این زبان نسبتا جدید و منبع باز (open source) بر اساس ماشین مجازی جاوا (JVM)، با مهندسان نرمافزار اندروید روبهرو است.
زبانهای JVM دیگری وجود دارند که شما میتوانید سعی کنید از آنها در اندروید استفاده کنید، اما کاتلین یکپارچگی را با Android Studio ارائه میدهد.
به همین دلایل است که اکنون زمان شروع استفاده از این زبان مدرن، پیچیده و کاربردی برای پروژههای توسعه اندروید میباشد.
مشکل استفاده از جاوا چیست؟
شما احتمالا چندین سال از جاوا استفاده کردهاید (شاید دههها)، بنابراین با آن بسیار آشنا هستید. شما گوشه گوشه زبان را میشناسید، و همچنین موارد مستند نشدهای وجود دارد که فقط جاواکاران قدیمی با سالها تجربه با آنها مواجه شدهاند.
بنابراین وقتی زبان جدیدی میآید و دیگران به شما میگویند که به آن سوئیچ کنید، احتمالا تردید خواهید داشت. اکثر مردم اینگونه هستند، به ویژه کسانی که سالهای زیادی با جاوا کار کرده و رابطه دوستانهای با آن داشتهاند.
شاید در ابتدا علاقهای به سوئیچ کردن از جاوا به زبان دیگری را نداشته باشید، اما وقتی کار با کاتلین را شروع کنید متوجه تصویر بزرگتری خواهید شد، و دیدگاه و ذهنتان در رابطه با آن تغییر خواهد کرد. در اینجا چند دلیل را برای شما میآورم:
جاوا قدیمی است... خیلی قدیمی
جاوا یکی از زبانهای قابل استفاده است که به دورانهای خیلی قبل بازمیگردد. اما امروزه وقتی از جاوا در اندروید استفاده میکنیم، حتی از مواردی مثل لامبداها و استریمها پشتیبانی نمیکند.
برخی راههای شخص ثالث برای حل برخی از این ویژگیها با استفاده از ابزارهایی مثل RetroLambda، Streams backport و ThreeTenABP وجود دارد، اما استفاده از آنها عذابآور است.
Android Nougat اقدام جدیی را برای پشتیبانی از برخی ویژگیهای جاوا8 با استفاده از کامپایلر Jack ساخته است، اما بسیاری از آنها فقط در صورتی قابل استفاده هستند که شما minSdkVersion 24 را هدف قرار دهید؛ کاری که شما نباید انجام دهید.
خطاها در جاوا
یکی از بزرگترین معایب جاوا شیوه مدیریت "null" است که منجر به NulPointerException (NPE) میشود، که به عنوان اشتباه میلیارد دلاری شناخته شده است.
امروزه NPE یکی از رایجترین دلایل سقوط (Crash) برنامههای اندروید است. درحقیقت غیرممکن است برنامهای بدون یک NullPointerException تولید شود (اگر شما این کار را انجام دادهاید به ما بگویید، ما خیلی مشتاق هستیم بدانیم چطور از آن اجتناب کردهاید).
و "nullability" (قابلیت خالی بودن) یک مشکل بزرگ دیگر برای اندروید است. Null یک روش بسیار کارآمد و ساده برای نشان دادن عدم وجود مقدار است و اندروید از آن در فریمورکها و APIهای خود استفاده میکند. خوب نیست که جاوا آن را برای توسعهدهندگان جهت مدیریت آن بسیار دشوار میسازد.
مشکل سوم مربوط به این واقعیت است که برنامهنویسان اغلب شیوه پیادهسازی کلاسهای داخلی غیراستاتیک و کلاسهای داخلی anonymous، که همیشه یک مرجع ضمنی را برای کلاسهای خارجی نگه میدارند را نادیده میگیرند. با انجام این کار، توسعهدهندگان برنامههای خود را در معرض نشت حافظه قرار میدهند.
طولانینویسی و تشریفات
مساله دیگری که وجود دارد این است که توسعهدهندگان کد تمیز و مختصر را دوست دارند. کد کوتاه زمان کمتر برای نوشتن و زمان کمتر برای خواندن را صرف میکند و کمتر در معرض خطا است. اما با جاوا شما باید کد زیادی بنویسید تا حتی سادهترین کارها را انجام دهید. اگر توسعهدهنده اندروید باشید، احتمالا آن را تجربه کردهاید.
تشریفات قابل توجهی در APIهای جاوا وجود دارد، و اندروید حتی این موارد را با مجبور کردن توسعهدهندگان برای طی کردن مراحل زیاد، با ترتیبی خاص برای انجام کارهای مختلف مثل دسترسی به پایگاه داده وخیمتر میسازد.
اگر بتوانید بسیاری از این فرآیندها را ساده کنید، تجربه و بهرهوری خود را به عنوان توسعهدهنده اندروید به طور قابل توجهی بهبود بخشیدهاید.
کاتلین برای رهایی از این مشکلات:
جاوا تنها زبانی نیست که برای ساخت برنامههای اندروید میتوانید از آن استفاده کنید. به غیر از جاوا کاتلین یک زبان open-source و statically-typed است که توسط JetBrains توسعه یافته است.
JetBrains یکی از محبوبترین IDEها، IntelliJ IDEA و همچینین Android Studio را ایجاد کرده است که گوگل آن را به عنوان IDE استاندارد برای توسعه اندروید معرفی کرده است. JetBrains از کاتلین برای تولید محصولات خود استفاده میکند، بنابراین بعید است که این زبان را ناگهان رها کند.
کاتلین 100% با جاوا سازگار است
این اولین چیزی بود که من در مورد کاتلین دوست داشتم. شما میتوانید کد جاوا را از کاتلین و برعکس به صورت یکپارچه فراخوانی کنید. هم کاتلین و هم جاوا bytecode مشابهی را تولید میکنند، بنابراین هیچ نگرانی وجود ندارد که شما چیزی را که کاملا با کاتلین متفاوت است را جابهجا کنید.
این بدان معناست که شما میتوانید از کاتلین در پروژههای موجود خود، در کنار همان جاوا قدیمی، به صورت همزمان استفاده کنید. همانطور که شروع به آشنایی با ساختار و سینتکس کاتلین میکنید، شروع به نوشتن بخشهای کوچک و ساده برنامه خود کنید (که به هر حال فوقالعاده ساده است).
این ترکیب کد جاوا و کاتلین در پروژهها به خوبی کار میکند. قابلیت همکاری آنها واقعا یک نعمت است.
NullPointerExceptions کمتر
زمان سرمایهگذاری زیاد برای NPEها، جهت محافظت از کد با بررسی خالی نبودن در هر جایی، کار زمانگیر و خستهکنندهای است.
با کاتلین دیگر لازم نیست نگران NPEها باشید، زیرا امنیت null در سیستم کاتلین در نظر گرفته شده است. کاتلین NPEها را در زمان کامپایل میگیرد به جای آنکه آنها را در زمان اجرا crash کند.
چگونه این کار در عمل انجام میشود؟ به طور پیشفرض، تمام متغیرها non-null هستند. اگر شما یک متغیر " nullable" را میخواهید، برای آن یک "؟" بگذارید.
IDE عالی و پشتیبانی ابزار
شما خیلی کم نگران پشتیبانی مداوم هستید، زیرا یک شرکت خیلی معتبر پشت آن قرار دارد. JetBrains متخصص در ایجاد برخی از IDEهای مورد استفاده در جهان است.
در اندروید استودیو تمام کاری که باید برای دریافت پشتیبانی first-class Kotlin انجام دهید، نصب این پلاگین است. ساده است. همچنین پلاگین Eclipse را نیز ارائه میدهد.
همه ویژگیهای IDEی اندروید استودیو کاملا در کاتلین کار میکنند. شما میتوانید کد جاوا و کاتلین را در همان پروژه ترکیب کرده و تطبیق دهید، و همه چیز هنوز هم عالی عمل میکند.
یکی دیگر از ویژگیهای شگفتانگیزی که پلاگین کاتلین برای اندروید استودیو به ارمغان میآورد "تبدیل فایل جاوا به کاتلین" است. فقط فایل جاوای قدیمی خود را به آن دهید و با یک کلیک آن را به فایل کاتلین معادل تبدیل کنید.
نوشتن کد کمتر
با استفاده از کاتلین میتوانید به طور قابل توجهی کمتر از آنچه که تا به حال با جاوا کد میزدید، کدنویسی را انجام دهید. خطوط کمتر کد به معنی اندازه فایلهای کوچکتر برای کاتلین، در مقایسه با معادل همان کد برای جاوا است.
زمانی که سینتکس کاتلین را درک کنید، به راحتی قابل خواندن است. این زبان همانند جاوا طولانی نیست. کاتلین مختصر و کوتاه است و بسیاری از کدهایی که توسعهدهندگان باید هر روز بنویسند را کاهش میدهد.
کاتلین یک زبان سازمانی است
کاتلین همانند یک کودک نوپا نیست. اگرچه تا سال 2015 آماده نبود، اما چند سال پیش از آن وجود داشت. JetBrains آن را برای حل مشکلات توسعه عملی و واقعی توسعه داد، و برخلاف سایر زبانهای مبتنی بر JVM، کاتلین از یک زمینه علمی و پژوهشی نمیآید. این زبان با ذهنیتی سازمانی ساخته شده است.
همیشه وسوسهانگیز است که هر چیزی را از ابتدا بازسازی یا دوباره پیادهسازی کنیم. JetBrains میتوانست این کار را با کاتلین انجام دهد، اما این کار را نکرد. هدف آن ایجاد چیزی انقلابی نبود، بلکه چیزی را فراهم کرد که برای توسعهدهندگان سازمانی مدرن قابل استفاده و آشنا باشد.
خودتان آن را امتحان کنید
کاتلین میتواند زندگی شما را به عنوان یک توسعهدهنده اندروید آسانتر کند. ابزارهای جدید توسعهدهندگان را قادر میسازند تا بخشهایی عالی ایجاد کنند.
وقت آن است که خودتان آن را امتحان کنید. اندروید استودیو را باز کنید، پلاگین کاتلین را دانلود کنید (با اندروید استودیو کار میکند، نه فقط با IntelliJ IDEA) و لذت کار کردن با آن را تجربه کنید.
نظرات کاربران در رابطه با این دوره