ابتدا باید بگیم که پروژه کاتلین در سال 2010 توسط شرکت JetBrains شروع شد. در اون زمان نیاز به یک زبون احساس میشد که هم مختصر و هم پرمعنا باشه و هم ابزار های زیادی براش موجود باشه. و هم بتونه با زبون های دیگه ارتباط برقرار کنه و همکاری داشته باشه. خب همینطور که میدونید جاوا یک زبونیه که طرفدار زیادی داره و در عین حال مشکلاتی هم داره. مثلا کد ها مختصر نیستن و البته خیلی از ویژگی های زبان های برنامه نویسی مدرن رو شامل نشده چرا که ما به دنبال یک زبون برنامه نویسی مدرنی هستیم که بتونه مشکلات برنامه نویسی توسعه دهنده ها رو که هرروزه باهاش دست و پنجه نرم میکنن رو رفع کنه. پس شروع به توسعه کاتلین کردیم. همچنین کاتلین لایسنس Apache 2 رو داره. کاتلین یک statically typed language هست ( کلمه بهتری جایگزینش پیدا نکردم ) کاتلین از زبون های به مانند Java,Scala,C#,groovy الهام گرفته شده. کاتلین دو قسمت رو هدف قرار داده.یکی JVM و دیگری JS . کد کاتلینی که شما میزنین مستقیم توسط JVM قابل استفاده است و همچنین کدتون قابلیت تبدیل به JavaScript رو هم داره بدین معنی که شما میتونین هم قسمت سمت سرور و هم قسمت سمت مرورگر رو با کاتلین بنویسین.یکی از هدف های این زبون اینه که بتونیم توی سیستم عامل های مختلف اجراش کنیم والبته این شرکت بخش دیگه ای رو هم دارن روش کار میکنن به نام Kotlin/Native (خیلیا دوست دارن بهش بگن KotN ) که به ما این قابلیت رو میده تا کد کاتلینمون بتونه به طور Native برروی پلتفرم های مختلف کار کنه.به عنوان مثال iOS و یا macOS و حتی IoT و Embedded Systemها . همینطور که گفتیم این زبون این قابلیت رو داره که بتونه با جاوا همکاری کنه، این بدین معنیه که کد شما هم در کد جاوا قابل استفاده است و هم کد جاواتون داخل فایل کاتلین. به عبارت دیگه تموم لایبری هایی که برای زبون Java نوشته شده میتونه توی این زبون هم مورد استفاده قرار بگیره. این زبون از Build سیستم هایی مثل Gradle و Maven هم استفاده میکنه. همینطور که شاید خبر داشته باشین کاتلین رسما توسط شرکت گوگل برای برنامه نویسی اندروید قابل استفاده است و این خیلی خبر خوبی برای توسعه دهنده هاست چراکه میتونن با خیلی از ویژگی های Java 1.8 که نمیتونستن قبلا در اندروید استفاده کنند کار کنن. چون این زبون از زبون های دیگه ای به مانند Java و C# و … الهام گرفته شده، خیلی هم مثل همون زبون هاست. به این معنی که زمان یادگیری سینتکس رو کاهش میده و شما در طی چند روز متوجه میشین که زبون به شدت ساده ای هست. یکی از خوبیای این زبون اینه که نیازی نداریم که این همه کدی که دهه هاست در زبون جاوا زده شده رو دور بندازیم. البته که JNI هم در این زبون پشتیبانی میشه و پس ما میتونیم از توابع C و C++ استفاده کنیم.