کاتلین چیست

کاتلین یک زبان برنامه نویسی جدید و قدرتمند است که توسط شرکت JetBrains ساخته شده است و یک زبان منبع باز محسوب می‌شود که ویژگی‌های برنامه نویسی شی گرا و ماژولار را با یک دیگر ترکیب کرده است. نام کاتلین برگرفته از جزیره ای به همین نام در اطراف سن پتزربوگ گرفته شده است. کاتلین از سال 2011 معرفی شده و در حقیقت زبان جدیدی محسوب نمی‌شود اما پس از آنکه در کنفرانس Google I/O در سال 2017 به عنوان یک زبان رسمی برای توسعه اندروید معرفی شد، باعث شد کاتلین بر سر زبان‌ها بیفتد و افراد زیادی سراغ یادگیری آن بروند. در ابتدا برخی از مزایای کاتلین را بررسی می‌کنیم.

 

مزایا

  • یادگیری کاتلین بسیار ساده است: کاتلین یک زبان برنامه نویسی functional بوده که یادگیری آن به سادگی امکان پذیر است. ساختار کاتلین بسیار شبیه به زبان جاواست که این موضوع به خصوص برای برنامه نویسان جاوا خبر خوبی است، زیرا می‌توانند به سرعت آن را فراگرفته و در پروژه‌های بعدی خود از آن استفاده کنند. استفاده از کاتلین می‌تواند کد شما را خواناتر و قابل فهم تر کند.
  • کاتلین می‌تواند به JavaScript یا JVM bytecode کامپایل شود. دقیقاً مشابه جاوا، کاتلین نیز می‌تواند به فرمت bytecode کامپایل شود. روش کار به این صورت است که ابتدا کد ما به بایت کد که یک زبان قابل فهم برای ماشین مجازی جاوا (JVM) است کامپایل شده و سپس JVM برنامه را در ماشین مقصد اجرا می‌کند. با این کار برنامه می‌تواند مستقل از سیستم عامل اجرا شود.
  • کاتلین می‌تواند از تمام کتابخانه‌ها و فرم ورک های جاوا استفاده کند: شما می‌توانید از تمام کتابخانه‌ها و فرم ورک های زبان جاوا در کاتلین استفاده کنید که این یکی از مهم‌ترین ویژگی‌های کاتلین است.
  • جاوا به صورت خودکار قابل تبدیل به کاتلین است: ابزارهایی وجود دارد که می‌توانید به صورت خودکار کدهای جاوای خود را به کاتلین تبدیل کنید و به این ترتیب در وقت خود صرفه جویی کنید.
  • بازبینی کدها دیگر کار مشکلی نخواهد بود: کاتلین تمرکز زیادی بر روی خوانایی و قابل فهم بودن کدها دارد که این موضوع فرآیند بازبینی کدها را ساده می‌کند، بنابراین همه اعضای تیم می‌توانند کدها را بازبینی کنند حتی اگر با این زبان آشنایی نداشته باشند.

معایب

  • عدم پشتیبانی از برخی ویژگی‌های زبان جاوا: کاتلین از برخی ویژگی‌های زبان جاوا نظیر انواع Static ،Primitive Type ها یا انواع داده اولیه، عملگر شرطی سه تایی و … پشتیبانی نمی‌کند که البته تعداد آن‌ها زیاد نیست.
  • سرعت کامپایل: در برخی موارد کاتلین سریع‌تر از جاوا عمل می‌کند اما گاهی اوقات نیز به شکل قابل ملاحظه‌ای کندتر عمل می‌کند.

معماری کاتلین

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

کامپایلر کاتلین یک بایت کد برای اجرا در JVM تولید می‌کند که دقیقاً همان بایت کدی است که برای یک فایل جاوا با پسوند class. تولید می‌شود. به عبارت دیگر هر دو بایت کدِ تولید شده، بر روی JMV اجرا می‌شوند و این بدین معنی است که یک قابلیت تعاملی بین جاوا و کاتلین وجود دارد.
kotlin architecture
در صورتی که مقصد کاتلین زبان جاوا اسکریپت باشد، کامپایلر فایل kt. را به ES5.1 تبدیل می‌کند و یک کد سازگار با جاوا اسکریپت تولید می‌شود. به صورت پیش فرض کاتلین مانند جاوا با استفاده از JVM اجرا می‌شود و وابسته به آن است اما با قابلیت Kotlin/Native، کامپایلر کاتلین می‌تواند با استفاده از LLVM، برنامه‌های نوشته شده با کاتلین را بدون نیاز به ماشین مجازی نیز اجرا کند. در حال حاضر با توجه به مستندات JetBrains، ماشین‌های مقصد زیر پشتیبانی می‌شوند:

  • Mac OS X 10.10 and later (x86-64)
  • x86-64 Ubuntu Linux (14.04, 16.04 and later), other Linux flavours may work as well
  • Apple iOS (arm64), cross-compiled on MacOS X host
  • Raspberry Pi, cross-compiled on Linux host