কটলিন কি?
কটলিন হলো ওপেন সোর্স, স্ট্যাটিক্যালি টাইপ (statically-typed) এবং জেনারেল পারপাস প্রোগ্রামিং ল্যাঙ্গুয়েজ। এটা JVM এর উপর রান করে। যে সব ক্ষেত্রে জাভা ল্যাঙ্গুয়েজ ব্যবহার করা যায় সেসব ক্ষেত্রে কটলিনও ব্যবহার করা যায়। যেমন: এন্ড্রয়েড এ্যাপ ডেভলপমেন্ট, সার্ভার সাইড সফটওয়্যার ডেভলপমেন্ট, ডেস্কটপ সফটওয়্যার ইত্যাদি। কটলিন ডেভলপমেন্টের প্রধান আন্দ্রে ব্রেস্লাভ (Andrey Breslav) এর মতে এটা শক্তিশালী অবজেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজ যা জাভার চেয়ে ভালো কিন্তু জাভার সাথে সম্পূর্ণ কোড বিনিময় (interoperable) করতে পারে।
কটলিনের অফিসিয়াল সাইট হলো: https://kotlinlang.org/
সোর্স কোড পাবেন গিটহাবে: https://github.com/JetBrains/kotlin
কটলিনের ইতিহাস:
কটলিন ডেভলপ করেছে জেটব্রেইনস(JetBrains)। ১ বছর ডেভলপমেন্টের পর ২০১১ সালের জুলাইয়ে জেটব্রেইনস কটলিন প্রজেক্ট উন্মোচন করে। ২০১২ সালের ফেব্রুয়ারীতে এ্যাপাচি ২ লাইসেন্সের অধীনে কটলিন প্রজেক্টের সোর্স কোড সকলের জন্য উন্মুক্ত করা হয়।
কটলিন নামটি এসেছে রাশিয়ার একটি দ্বীপের নাম (কটলিন আইসল্যান্ড) থেকে। জাভা ল্যাঙ্গুয়েজের নামকরণও একটি দ্বীপের নাম থেকেই করা হয়েছিল। জাভা হলো ইন্দোনেশিয়ার একটি দ্বীপের নাম।
কটলিন প্রথম স্ট্যাবল রিলিজ (v1.0) হয় ২০১৬ সালের ফেব্রুয়ারিতে। এন্ড্রয়েড এ্যাপ ডেভলপমেন্টের জন্য ২০১৭ সালের গুগল I/O তে কটলিনকে অফিসিয়ালি সাপোর্টেড ল্যাঙ্গুয়েজ হিসেবে ঘোষনা করা হয়। ২০১৯ সালের মে মাসে কটলিনকে এন্ড্রয়েড ডেভলাপের জন্য অধিক পছন্দের ল্যাঙ্গুয়েজ হিসেবে ঘোষনা দেয়া হয়। গুগল তার নতুন নতুন এপিআই, ডকুমেন্টেশন, উদাহরণগুলিতে কটলিনকে অগ্রাধিকার দিচ্ছে। তাই নতুন এন্ড্রয়েড প্রজেক্ট শুরু করার সময় কটলিনেই শুরু করা উচিত।
কটলিনের বৈশিষ্ট্য:
কটলিনের কিছু বিশেষ বৈশিষ্ট্য রয়েছে যা নিচে আলোচনা করা হলো:
- নাল সেফটি: কটলিন নাল সেফ ল্যাঙ্গুয়েজ। কটলিনে নাল পয়েন্টার এক্সেপশন (NullPointerException) নিয়ন্ত্রণ করার জন্য চমৎকার ব্যবস্থা রয়েছে।
- কোড বিনিময় বা শেয়ার (Interoperable): কটলিন কোডের মধ্যে জাভার কোড কল করা যায় আবার কটলিনের কোড জাভার কোডে কল করা যায়। এজন্য একই প্রজেক্টে জাভা ও কটলিন দুটিই ব্যবহার করা যায়।
- সংক্ষিপ্ত: কটলিন বাড়তি কোড কমিয়ে দেয়। জাভার চেয়ে অনেক কম কোড লিখতে হয়।
- স্মার্ট কাস্ট (Smart cast): এটা অপরিবর্তনশীল ডাটাগুলির ধরণ নির্ধারণ করে এবং স্বয়ংক্রিয়ভাবে সঠিক মান এ্যাসাইন করাতে পারে।
- এক্সটেনশন ফাংশন: কটলিন এক্সটেনশন ফাংশন এবং প্রোপার্টি সাপোর্ট করে। যার ফলে কোন পুরাতন ক্লাসের মধ্যে নতুন ফিচার যুক্ত করা যায় সেই ক্লাসের কোডের পরিবর্তন না করেই।
- টুল ফ্রেন্ডলি: যে কোন জাভার আইডিইতে (IDE) কিংবা কোন টেক্সট এডিটরে কোড লিখে টার্মিনালে বা কমান্ড লাইনে রান করানো যায়।
- কম্পাইল করার সময়: এটার ভাল কর্মক্ষমতা এ দ্রুত কম্পাইল করার দক্ষতা রয়েছে।