فهرست
1 - مقدمه
2 - مبانی کاتلین
3 - کد نویسی مقدماتی کاتلین
3.4 ) عبارت های شرطی در کاتلین
3.5 ) اضافه کردن پگیج ها در کاتلین و خلاصه بخض سوم
4 - توابع
4.2 ) تابع با پارامترهای پیشفرض و نامیده شده
4.3 ) تابع با پرامترهای نامحدود و خلاصه بخش چهارم
5 - کلاس ها
5.3 ) visibility modifier ها در کاتلین
5.6 ) Object ها در کاتلین و خلاصه بخش پنج
6 - ارث بری
6.2 ) کارکردن با کلاس های abstract در کاتلین
6.3 ) کلاس های interface در کاتلین
6.4 ) نگاه کوتاه به generic ها و خلاصه بخش شش
7 - کارکردن با Null ها
7.1 ) null safety و خلاصه بخش هفت
8 - نکات اضافه
8.4 ) کار کردن با exception ها
8.6 ) annotation ها در کاتلین و خلاصه بخش هشت
9 - نگاه functionalای
9.2 ) عبارت های لاندا در کاتلین
9.4 ) عبارت های الحاقی در کاتلین و خلاصه بخش نهم
10 - قابلیت همکاری و Interoperability
10.2 ) صحبت کردن با جاوا از کاتلین
10.3 ) کار کردن با null ها از جاوا
10.4 ) صحبت کردن با کاتلین از جاوا
10.5 ) توابع و خصیصه های درجه اول
10.6 ) توابع الحاقی کاتلین از جاوا
10.7 ) همکاری با جاوا 7 و 8 و خلاصه بخش دهم
11 - کتابخانه استاندارد
11.1 ) کتابخانه استاندارد کاتلین و کارکردن با کالکشن ها در کاتلین
11.2 ) مرور کوتاه بر روی filtering و mapping و flatmapping در کاتلین
چرا کاتلین
خب اول باید شروع کنیم بگیم چرا کاتلین و چرا اصلا باید سمت این زبان برنامه نویسی بریم. ابتدا باید بگیم که پروژه کاتلین در سال 2010 توسط شرکت JetBrains شروع شد. در اون زمان ما نیاز به یک زبونی داشتیم که
- مختصر،پرمعنا، ابزار های جانبی زیادی باشه براش و بتونه کنار و با زبون های برنامه نویسی دیگه فعالیت کنه و خب همینطور که میدونید ما ابزار هایی برای انواع مختلف سیستم عامل ها و زبان ها درست کردیم به مانند IntelliJ برای توسعه جاوا، ReSharper برای .Net و همچنین PHPStorm و PyCharm و ابزار های مختلف دیگه برای زبان های متفاوت دیگه ساخته شدند و هنوز بیشتر کدی که زده شده، حداقل در قسمت IDE بیشتر برروی Java بوده است و خب ما دنبال زبون متفاوتی بودیم که بسیاری از کدهای تکراری و اضافه ی جاوا رو برامون حذف کنه.
قبل از شروع باید یک توضیح ارائه کنیم که چرا باید سراغ این زبون بریم؟ ابتدا باید بگیم که پروژه کاتلین در سال 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++ استفاده کنیم.