تاریخچه ی کاتلین
اولین بار کاتلین در سال ۲۰۱۰ در گیت هاب ایجاد شد، سپس در سال ۲۰۱۱ JetBrains از پروژه ی کاتلین برای JVM رو نمایی کرد؛ سپس در سال ۲۰۱۲ پروژه ی کاتلین تحت مجوز Apache 2 متن باز اعلام شد. اولین نسخه ی کاتلین یعنی کاتلین ۱.۰ در سال ۲۰۱۶ منتشر شد.
شرکت گوگل در سال ۲۰۱۷ پشتیبانی خود از کاتلین رو اعلام کرد و سپس در سال ۲۰۱۹ گوگل کاتلین رو به عنوان زبان ترجیحی مورد استفاده برای توسعه ی اپ های اندرویدی معرفی کرد.
معرفی کاتلین
کاتلین یک زبان کراس پلتفرم، سطح بالا و با اهداف عمومی بر پایه ی جاواست؛ کد های کاتلین پس از کامپایل قابل اجرا بر روی ماشین مجازی جاوا (JVM) هستند.
کامپایلر کاتلین
کامپایلر کاتلین میتونه کد های کاتلین رو به سه فرمت زیر تبدیل کنه:
۱- کد های قابل تفسیر برای JVM
۲- کد های JavaScript برای توسعه ی فرانت اند و فول استک
۳- فایل های قابل اجرا در پلتفرم هایی از قبیل ویندوز، مک، لینوکس، ios و اندروید.
ویژگی ها
میخوایم بعضی از ویژگی های زبان کاتلین رو بررسی کنیم؛ این ویژگی ها ممکنه با بعضی از زبان های برنامه نویسی مشترک باشن.
اجرای کد های کاتلین در JVM
کد های کاتلین توسط JVM قابل اجرا هستند از این رو استفاده از زبان کاتلین در کنار زبان جاوا در یک پروژه ی واحد امکانپذیر است.
عدم نیاز به نقطه ویرگول
در پایان هر statement نیازی به نوشتن نقطه ویرگول نداریم.
استفاده از Unit به جای void
در کاتلین همه چیز دارای مقدار است حتی توابع؛ در این زبان کلاس Unit جایگزین void شده.
تعریف متغیر ها
متغیر های کاتلین با کلید واژه های var یا val، اسم، نوع و مقدار متغیر مانند زیر تعریف میشن
var number: Int = 23
val number1: Double = 12.5
پشتیبانی از برنامه نویسی تابعی
در زبان کاتلین علاوه بر شی گرایی از قوانین تابعی نیز به خوبی پشتیبانی میشه. میتونید توابع اکستنشن، مرتبه ی بالا، خطی، عبارت لامبدا و توابع بی نام را در این زبان تعریف کنید.
کلاس ها
کلاس های معمولی در کاتلین به طور پیشفرض final هستند و برای ارث بری از یک کلاس باید از کلیدواژه ی open هنگام تعریف کلاس پدر استفاده کنیم.
open class Parent{
//something goes here
}
class Child: Parent{
//...
}
توجه
کلاس های abstract در کاتلین به صورت پیشفرض open هستند و نیازی به تعریف کلیدواژه ی open براشون نداریم.
دیتا کلاس ها
در کاتلین برای تعریف کلاس هایی که getter و setter دارن، با تعریف کلاس به عنوان data class متد های getter و setter به صورت خودکار ساخته میشن و از نوشتن متد های تکراری و خسته کننده ی getter و setter خلاص میشیم.
data class MyDataClass(val t0: Type0, val t2: Type2, ...)
کاتلین یک زبان Null Safe
کاتلین یک زبان Null Safe است؛ در کاتلین بهجای زمان اجرا، زمان کامپایل Null بودن یک متغیر بررسی میشه. این کار از بروز استثناهایی مثل NullPointerException جلوگیری میکنه.
وقتی که بخوایم به کامپایلر اعلام کنیم متغیر امکان داره Null باشه از ? هنگام تعریف متغیر استفاده میکنیم و هنگامی که بخوایم از Null نبودن متغیر دفاع کنیم از !! استفاده میکنیم.
var number: Int? = null
var number1: Int = null //خطای کامپایل
number = 32
println(number!!.toString())
پشتیبانی از الگوی Delegation
زبان کاتلین به صورت نیتیو از الگوی دلیگیشن (Delegation) پشتیبانی میکنه.
خلاصه
- زبان برنامه نویسی کاتلین بر پایه ی جاوا ساخته شده.
- کامپایلر کاتلین کد های کاتلین رو میتونه به JVM، JavaScript، پلتفرم های ویندوز، لینوکس، مک، ios و اندروید تبدیل کنه.
- زبان کاتلین علاوه بر ویژگی شی گرایی یک زبان تابعی نیز است.
- برای ارث بردن از یک کلاس باید کلاس رو با کلیدواژه ی open تعریف کنیم.
- برای تعریف کلاس هایی که برای ذخیره ی داده هستند میتونیم از کلیدواژه ی data هنگام تعریف کلاس استفاده کنیم.
- کاتلین یک زبان Null safe است.
- در کاتلین به طور نیتیو از الگوی Delegation پشتیبانی میشه.