কম্পিউটার টিউটোরিয়াল

Android ডেভেলপমেন্টে Java থেকে Kotlin-এ স্থানান্তর: দক্ষতা বাড়িয়ে অ্যাপগুলো ভবিষ্যত-প্রুফ করুন

Kotlin গত ২ বছরে একটি বিশাল ব্রেকথ্রু, এটি সব জায়গায় ট্রেন্ডিং টপিক এবং এর জনপ্রিয়তা এখনো বাড়ছে। এবং এটা অফিশিয়ালি যেকোনো{Suspect: "official"} যে Google Kotlinকে Android App Development-এর অফিশিয়াল ভাষা বানাতে পুশ করেছে।

তবুও, এখনো অনেক লোক Android ডেভেলপমেন্টের জন্য Kotlin-এর চেয়ে Java পছন্দ করেন, কেন? এর প্রধান কারণ হচ্ছে মানুষ এখনো তাদের প্রধান ভাষা Java থেকে Kotlin-এ পরিবর্তন করতে কমফরটেবল নন, মানুষ নতুন জিনিসে পরিবর্তন হওয়া ভয় পায়।

এখনই Kotlin শুরু করুন, সহজ পথে

বাস্তবে, Java থেকে Kotlin-এ স্যুইচ করা খুব সহজ, একটি অত্যন্ত ফ্লেক্সিবল ভাষা হওয়ায়, আপনি সহজে Kotlin কোড করতে পারেন কিন্তু ইডিয়োমেটিক্যালি, সেটি Java!

Android ডেভেলপমেন্টে Java থেকে Kotlin-এ স্থানান্তর: দক্ষতা বাড়িয়ে অ্যাপগুলো ভবিষ্যত-প্রুফ করুন
দেখতে Kotlin-এ, কিন্তু আসলে এটা Java। কিন্তু আমি আশ্বস্ত করছি, সব কিছু ঠিক থাকবে!!

তাহলে এখানে Java থেকে Kotlin-এ স্যুইচ করার সময় লক্ষ্য রাখার কিছু বিষয়:

১. Java Interoperability
Kotlin Java-র সাথে পুরোপুরি ইন্টারঅপারেবল এবং উল্টোদিকেও। এর মানে কী, এর মানে আপনার Kotlin আপনার Java কোড কল করতে পারে, এতে অ্যাপ মাইগ্রেশন খুব সহজ হয়ে যায়, আপনি ইতিমধ্যে Java-তে আধা কোড করেছেন? কোথাও না, Kotlin কোড করুন।

২. আর প্রিমিটিভ ডেটা টাইপ নেই
মনে আছে Java-তে int নাকি Int বেছে নেওয়া আপনাকে আধা দিন লাগত? Kotlin-এ আর প্রিমিটিভ ডেটা টাইপ নেই, সব কিছু অবজেক্টে মোড়ানো হয়েছে।

৩. কিছুটা পরিবর্তিত সিনট্যাক্স (তবে চিন্তা করবেন না, ক্যাচ আপ করা সহজ)
ভেরিয়েবল, ফাংশন এবং ক্লাস ডিক্লেরেশনের মতো কিছু সিনট্যাক্স কিছুটা পরিবর্তন হয়েছে, কিন্তু আপনি যদি Java-এর মতো OOP ব্যাকগ্রাউন্ড থেকে আসেন, তবে এটি কোনো ইস্যু হবে না। আরো, void কীওয়ার্ড এবং সেমিকোলন (';') সরিয়ে ফেলা হয়েছে, সেই সেমিকোলন সরানোর জন্য ধন্যবাদ Kotlin!!
আমি আপনাকে Android ক্লাসের সাথে বেসিক উদাহরণ দেখাব:

//Inheritance and implementation is using ':' now class BasicActivity : AppCompatActivity() { //variables declaration is now variable name first then type var a :Int = 10 //var is for mutable val b :Int = 15 //val is for immutable /*lateinit keyword must be added for initialisation of non- primitive type without initial value in Kotlin*/ lateinit var someTextView:TextView //Also, no more new keyword here var gameList:List<Integer> = ArrayList() //overriding is using keyword instead of override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_basic) } } 

৪. Type inference
Kotlin টাইপ ইনফারেন্স দিয়ে আপনার জীবন সহজ করে দেবে ভেরিয়েবলগুলির জন্য:

var a = 5 //will automatically infer this as integer var b = "John" // will automatically infer this as String 

৫. Null safety checks
Kotlin নাল পয়েন্টার এক্সেপশন এড়াতে নাল সেফটি চেকিং প্রদান করেছে। প্রতিটি ভেরিয়েবল যা নাল মান রিটার্ন করতে পারে সেটি চিহ্নিত হবে (এবং চিহ্নিত করতে হবে) ?  সাইন দিয়ে।

var a:String? = null var b:String = null //not allowed 

এছাড়া এটি নাল সেফটি কল প্রদান করে নাল-পয়েন্টার এক্সেপশন এড়াতে (Java Billon Dollar Mistakes)

//not allowed, a might be null a.function() // this will not throw null pointer, instead will continue the flow a?.function() //force function call, can cause NPE, use this only if 100% sure that this value will not be null a!!.function()

৬. আর static keyword নেই
Static keyword এখন Object keyword দিয়ে রিপ্লেস করা হয়েছে, ক্লাস এবং মেথড দুটির জন্য, আরও স্পেসিফিক্যালি মেথডের জন্য Companion Object।

৭. Switch case মডিফাইড
Switch case এখন একটি নতুন কীওয়ার্ডে মডিফাইড হয়েছে, যাকে when বলা হয়। যা ক্লিনার এবং আরও ফ্লেক্সিবল দেখায়:

when (x) { 1 -> println("One") 2 -> print("Two") else -> print("Others") }

৮. আর চেকড এক্সেপশন নেই
মনে আছে Java-তে আপনি কিছু অপারেশন বা কাস্টিং করলে, এবং লাল ওয়ার্নিং আসে এবং আপনাকে এক্সেপশন চেকিং যোগ করতে বলে? এটা Kotlin-এ সরিয়ে ফেলা হয়েছে। এখন, আপনার IDE আপনাকে কোনো এক্সেপশন করতে বাধ্য করবে না!!

Java-তে ইডিয়োমেটিক্যালি Kotlin কোড করার জন্য যা দরকার সেটি এর জন্য এতটুকু। এখন Kotlin-এ যাওয়া কঠিন নয়, ঠিক না? এখন Kotlin Java থেকে সে kadar ভিন্ন মনে হয় না।

Kotlin দ্বারা প্রদত্ত ফিচার

Android ডেভেলপমেন্টে Java থেকে Kotlin-এ স্থানান্তর: দক্ষতা বাড়িয়ে অ্যাপগুলো ভবিষ্যত-প্রুফ করুন

এখন, Kotlin এবং Java কীভাবে আলাদা সেটি দেখার পর, আমাদের Kotlin দ্বারা প্রদত্ত ফিচারগুলো এবং কীভাবে ধীরে ধীরে Kotlin-কে Kotlin-র পদ্ধতিতে করা যায় সেটি দেখতে হবে:

১. Flexibility
Kotlin-এ আমার পছন্দের প্রধান কারণ হল ভাষার ফ্লেক্সিবিলিটি। আপনি কি OOP পিউрист? আপনি কি ফাংশনাল প্রোগ্রামিং ট্রাই করতে চান যা বর্তমানে হট টপিক? এবং কোডিং গড-এর প্রেমে, আপনি Kotlin-এ দুটোই করতে পারেন! FP যা সকল ফিচার প্রদান করে না সত্ত্বেও, এটি সাপোর্ট করার জন্য যথেষ্ট ভালো।

২. Lambda Support
হ্যাঁ, আমি জানি Java 8 এখন ল্যাম্বডা সাপোর্ট করে, কিন্তু Kotlin এই বিষয়ে প্রথমে এসেছিল এবং এটি খুব ভালো কাজ করে। অবশ্য, ল্যাম্বডা ফাংশন ব্যবহার করতে ট্রানজিশন করা প্রথমে কঠিন হবে, কিন্তু বলা মতে, Kotlin সেটাতে খুব ফ্লেক্সিবল। তাই হে, আপনার ইচ্ছা!
Android লাইব্রেরির কিছু ল্যাম্বডা সাপোর্ট এনেবল করেছে, উদাহরণস্বরূপ View.OnClickListener (আপনি যদি Android ব্যাকগ্রাউন্ড থেকে আসেন, আমি নিশ্চিত এই মেথড আপনাকে খুব পরিচিত):

val randomButton : Button //using lambda function as argument randomButton.setOnClickListener{v -> doRandomStuff(v) }

৩. Data Class
Kotlin Model/Entity ক্লাসের একটি সাবস্টিটিউট প্রদান করেছে, যাকে Data class বলা হয়। এটি রিডান্ডেন্ট সেটার গেটার দরকার নেই এবং ইন-বিল্ট equal মেথড এবং toString ফাংশন আছে যেটি আপনাকে তৈরি করতে হয় না। এটি ব্যবহার করাও খুব সহজ:

data class Person( val id:String, val name:String = "John Doe" //Default Value ) //Initialisation block var person = Person("id","Not John")

৪. Extension Functions
Kotlin এক্সটেনশন ফাংশন ব্যবহার করার অনুমতি দেয়, যা কোড আরও পঠনীয় করে। এছাড়া, এটি আপনাকে ক্লাসটি মডিফাই না করেই একটি ক্লাসে ফাংশনালিটি যোগ করতে সক্ষম করে:

fun Int.superOperation(anotherInt:Int):Int { val superNumber = this * anotherInt + anotherInt return superNumber } //you can now call the functions val someNumber = 5 val superNumber = someNumber.superOperation(10) //65

৫. Named and Default Arguments
C#-এর মতো, Kotlin তার মেথডের জন্য নেমড এবং ডিফল্ট প্যারামিটার সাপোর্ট করে। এটি প্রতিটি আর্গুমেন্টে মান পাস করার দরকার সম্পূর্ণ সরিয়ে ফেলে। আপনি সিলেক্ট করতে পারেন আপনি কোন মান মডিফাই করতে চান, এবং वोইলা! আপনার ১০টি ফাংশন কলের জন্য একই নির্দিষ্ট মান পাস করার ঝামেলা আর নেই!

//variable declaration fun someOperations(var x: Int, var y:Int, var z:Int = 1){ return x+y+z } someOperations(1,2) //return 4 someOpeartions(y = 1, x = 1) //return 3

৬. Referential Equality
Kotlin রেফারেনশিয়াল ইকোয়ালিটি ('===')-ও সাথে আসে, এটি চেক করবে দুটি ভেরিয়েবল বর্তমানে একই অবজেক্টকে রেফার করছে কিনা।

var a = 10 var b = 10 a == b //true a === b //true also, primitive type object equation will only check its value data class Person (val name: String) val p1 = Person("John") val p2 = Person("John") p1 == p2 //true p1 === p2 //false

৭. Smart casting
instance of ব্যবহার করার বদলে, Kotlin এখন কাস্টিং বা টাইপ চেকিং-এর জন্য সহজ এবং আরও পঠনীয় সিনট্যাক্স প্রদান করে:

//type checking //kotlin smart cast mechanism will also automatically change the object into corresponding type if it passes the type checking if (shape is Circle) { println(“it’s a Circle”) shape.radius //automatically be casted as Circle } else if (shapeObject is Square) { println(“it’s a Square”) } else if (shapeObject is Rectangle) { print(“it’s a Rectangle”) }

Kotlin-এ as কীওয়ার্ডও আছে এক্সপ্লিসিট কাস্টিং এনেবল করার জন্য:

//It's considered unsafe since it behaves simillarly like static casting var anotherShape = shape as Circle //This can be used instead for safe casting var safeShape = shape as? Circle

৮. Coroutines
অ্যাসিনক্রোনাস কল Java-তে সবসময় একটি ঝামেলা। থ্রেড বানাতে কোড স্পেসের অনেক অংশ নেয় এবং কোডকে অপাঠ্য করে তোলে। Coroutines ট্র্যাডিশনাল থ্রেড অপারেশন রিপ্লেস করতে বানানো হয়েছে, একটি ক্লিন এবং রবাস্ট কোড দিয়ে:

import kotlinx.coroutines.* fun main() { // launch a new coroutine in background and continue GlobalScope.launch { // non-blocking delay for 1 second (default time unit is ms) delay(1000L) // print after delay println("World!") } // main thread continues while coroutine is delayed println("Hello,") // block main thread for 2 seconds to keep JVM alive Thread.sleep(2000L) }

Coroutines আরও জটিল অপারেশন সাপোর্ট করে যেমন Job Joining, Channel,             Shared Context and Parents। বিস্তারিত এবং আরও ব্যবহার এখানে পড়ুন।

উপসংহার

সংক্ষেপে, Kotlin ব্যবহার শুরু করা খুব সহজ, আপনি Kotlin কোড করতে পারেন খুব সাদৃশ্যে Java কোড করার মত। আরো, Kotlin অনেক ফিচার দিয়েছে যা Java ব্যবহার করার চেয়ে আপনাকে এজ দিতে পারে।

নিশ্চিত, Java এখনো силாக চলছে। কিন্তু কিছু নতুন শিখতে শুরু করা কখনো ভুল নয়। প্রোগ্রামার হিসেবে, আমাদের জীবনপর्यন্ত শিখতে থাকতে হবে এবং কখনো শিখা বন্ধ করব না। Kotlin-এ সবচেয়ে ভালো জিনিস হল Java থেকে মাইগ্রেট করা কতটা সহজ।

পড়ার জন্য ধন্যবাদ। আশা করি আপনি উপভোগ করবেন এবং উम्मीদ করি এটি ভালো কাজে আসবে! Kotlin এক্সপ্লোর করার শুভকামনা, আবার দেখা হবে।


  1. থার্ড পার্টি অ্যাপ ছাড়া অ্যান্ড্রয়েড ডিভাইস স্পিড আপ করার ৪ সহজ উপায়

  2. আপনার অ্যান্ড্রয়েড ডিভাইসে ট্রাই করার ৬ Xposed মডিউল

  3. কোটলিন অ্যান্ড্রয়েড অ্যানিমেশনকে অ্যাক্সেসিবল করা: একটি প্র্যাক্টিক্যাল গাইড

  4. আপনার অ্যান্ড্রয়েড ডিভাইস সুরক্ষিত করার ৮টি প্রমাণিত ধাপ