তুষারের ডায়েরি অ্যাপে Flutter এর বদলে কেনো Jetpack Compose বেছে নিলাম?

প্রথম কথা: কেন ফ্লাটার দিয়েই শুরু করেছিলাম?

ফ্লাটার আমার প্রথম ভালোবাসা ছিল ক্রস-প্ল্যাটফর্ম ডেভেলপমেন্টের জগতে। একটি কোডবেস দিয়ে আইওএস, অ্যান্ড্রয়েড, ওয়েব—সব প্ল্যাটফর্মে অ্যাপ ডেলিভারি দেওয়ার ম্যাজিক আমাকে আকর্ষণ করেছিল। প্রোটোটাইপ বানানো, MVP তৈরি, এমনকি ছোট প্রজেক্টে ফ্লাটারের পারফরম্যান্সও ছিল সন্তোষজনক।


ফ্লাটারে যে চ্যালেঞ্জগুলো সামনে এলো:

১. পারফরম্যান্স বটলনেক:

  • UI জ্যাংক: স্ক্রলে ভারী লিস্টভিউ (1000+ আইটেম) থাকলে ফ্রেম ড্রপ হতো, বিশেষ করে লো-এন্ড ডিভাইসে।
  • অ্যানিমেশন ল্যাগ: কাস্টম শেডার বা কমপ্লেক্স ট্রানজিশনে 60 FPS ধরে রাখা কঠিন হচ্ছিল।
  • মেমোরি ম্যানেজমেন্ট: কিছু ক্ষেত্রে Skia রেন্ডারিং ইঞ্জিন অতিরিক্ত মেমোরি ব্যবহার করছিল।

জেটপ্যাক কম্পোজ + কটলিনে সুইচ করার পজিটিভ কারণগুলো:

১. পারফরম্যান্সে বিশাল ইমপ্রুভমেন্ট

  • ন্যাটিভ পাওয়ার: জেটপ্যাক কম্পোজ সরাসরি অ্যান্ড্রয়েডের গ্রাফিক্স লেয়ার (Surface, Canvas) ব্যবহার করে। UI রেন্ডারিং হয় স্মুথ, বিশেষ করে LazyColumn/LazyRow এ 10,000 আইটেমেও জিরো ল্যাগ!
  • মেমোরি অপ্টিমাইজেশন: কম্পোজের “Recomposition” শুধু পরিবর্তিত UI অংশই আপডেট করে, পুরো উইজেট ট্রি রিবিল্ড করে না (ফ্লাটারের setState থেকে ভিন্ন)।

২. অ্যান্ড্রয়েড ইকোসিস্টেমের ইন্টিগ্রেশন

  • সরাসরি অ্যাক্সেস: জেটপ্যাক লাইব্রেরি (Navigation, Hilt, Room) কোনো মিডল লেয়ার ছাড়াই ব্যবহার করা যায়।

৩. ডিক্লারেটিভ UI

  • কম্পোজের মডেল: ফ্লাটারের উইজেট ট্রি এর চেয়ে কম্পোজের “স্মার্ট রিকম্পোজিশন” কোডকে করে তোলে আরো প্রেডিক্টেবল।

৪. টুলিং এবং ডিবাগিং সুবিধা

  • Android Studio এর ডেডিকেটেড সাপোর্ট: Layout Inspector, Recomposition Counts, Profiler সরাসরি পারফরম্যান্স মনিটর করতে সাহায্য করে।
  • Instant Preview: ফ্লাটারের হট রিলোডের চেয়ে কম্পোজের প্রিভিউ আরো স্টেবল এবং রিয়েল-টাইম।

ন্যাটিভে যা যা ব্যবহার করেছি:

তুষারের ডায়েরি অ্যাপে যে ন্যাটিভ টেকনোলজি ব্যবহার করেছি সেটা নিশ্চয়ই ইন্সটল করার মাধ্যমে ইতিমধ্যে বুঝে গেছেন। তো এখন অনেকের প্রশ্ন থাকতে পারে এখানে আমি কি কি ব্যবহার করেছি? চলুন বলা যাক।

  • ল্যাংগুয়েজ: কটলিন (Kotlin)
  • UI ফ্রেমওয়ার্ক: জেটপ্যাক কম্পোজ (Jetpack Compose)
  • ডিপেন্ডেন্সি ইনজেকশন: ড্যাগার হিল্ট (Dagger Hilt)
  • লোকাল ডাটাবেস: রুম (Room)
  • ইমেজ লোডিং: কয়েল (Coil)
  • নেটওয়ার্কিং: কেটর (Ktor)

কিছু মিসআন্ডারস্ট্যান্ডিং ক্লিয়ার করি:

  • ফ্লাটার “খারাপ” নয়: ক্রস-প্ল্যাটফর্ম অ্যাপ, প্রোটোটাইপিং, বা সিম্পল UI এর জন্য ফ্লাটার এখনো আমার পছন্দের টুল।
  • প্রজেক্টের কনটেক্সট জরুরি: আমার অ্যাপটি ছিল অ্যান্ড্রয়েড-স্পেসিফিক—যেখানে নেটিভ সুবিধা অপরিহার্য।

যারা ফ্লাটার থেকে সুইচ বিবেচনা করছেন, তাদের জন্য টিপস:

১. প্রজেক্ট স্কোপ বুঝুন: যদি অ্যান্ড্রয়েড/iOS এক্সক্লুসিভ ফিচার জরুরি হয়, নেটিভ ভাবুন।
২. রিসোর্স তৈরি করুন: Kotlin শেখা, Compose Tutorial (JetBrains Academy) শুরু করুন।
৩. হাইব্রিড অ্যাপ্রোচ: ফ্লাটারে লিখা বিদ্যমান মডিউলগুলিকে KMM (Kotlin Multiplatform) দিয়ে শেয়ার করুন!


শেষে বলি:

প্রযুক্তির জগতে কোনো ফ্রেমওয়ার্কই এক নাম্বার নয়—প্রজেক্টের চাহিদা এবং ডেভেলপার এক্সপেরিয়েন্সই সিদ্ধান্ত নেয়। ফ্লাটার আমাকে প্রোটোটাইপিং এবং র্যাপিড ডেভেলপমেন্ট শিখিয়েছে, আর জেটপ্যাক কম্পোজ শেখাচ্ছে পারফরম্যান্স অপ্টিমাইজেশনের মাস্টারি। উভয় টেকই আমার টুলবক্সের অ্যাসেট!

Spread the love

Leave a Comment