Rx Java এবং Reactive programming (পর্ব এক)

Rx জাভা শুরু করার আগে আমাদের প্রথমেই যে জিনিসটির ব্যাপারে জানতে হবে তা হল Reactive programming কি, কেন দরকার এবং কিভাবে এটি কাজ করে ?

Reactive programming কি?

গতানুগতিক ডেফিনিশন দেয়ার আগে আমরা ছোট দুইটি উদাহরণ থেকে জিনিসটি বুঝার চেষ্টা করি।

১)কোন এক প্রোগ্রামে আমরা প্রথমে লিখলাম ধরুন
a=b+c। এর মানে হল a তে b আর c এর যোগফল এসাইন হবে। এখন যদি “a=b+c;” এই স্টেটমেন্টের পরে আমরা যতই b অথবা c এর মান পরিবর্তন করি না কেন তাহলে কিন্তু কখনোই আর a এর মান পরিবর্তন হবে না যতক্ষণ না পর্যন্ত আবার “a=b+c” স্টেটমেন্টটি আবার লিখ তা re-excuite করা হয়।কিন্তু Reactive programming এ b অথবা c এর মান প্রোগ্রামের যেকোনো জায়গায় যেকোন সময় যদি পরিবর্তিত হয় তাহলে a এর মানও স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়ে যাবে।এইটি সম্ভব হয়েছে b এবং c এর মান “observe” করে।এই টার্মটি মনোযোগ সহকারে খেয়াল রাখুন যা পরবর্তীতে আমাদের কাজে লাগবে।

২)আবার ধরা যাক একটি array data stream হিসাবে কাজ করছে মানে এতে আমরা ডাটা ইনপুট দিব এবং আউটপুট নিব।এখন যদি আমরা চাই arrayটি থেকে শুরু জোড় সংখ্যাগুলো নিব আর বিজোড় সংখ্যাগুলোকে নেয়া থেকে বিরত থাকবো তাহলে গতানুগতিক প্রোগ্রামিংয়ে আমরা তা সাধারণত loop অথবা if else কন্ডিশন দিয়ে করে ফেলতাম কিন্তু Reactive programming এ আমরা তা সম্পূর্ণ ভিন্ন উপায়ে করতে পারবো যা আমরা পরবর্তীতে দেখব।

Reactive প্রোগ্রামিং কিভাবে কাজ করে?

এখন মুল সংজ্ঞায় আসি।Reactive প্রোগ্রামিং মুলত হল event ভিত্তিক asynchronous প্রোগ্রামিং।

synchronous এবং asynchronous programming কি?

synchronous programming :
synchronous প্রোগ্রামিংয়ে একটা কাজ শেষ হবার পর আরেকটি কাজ শুরু হয়।

উদাহরণস্বরুপ: আপনি বাসের লাইনে দাঁড়িয়েছেন।আপনার সামনের কেউ বাসে না উঠা পর্যন্ত আপনাকে অপেক্ষা করতে হবে (যদি আপনি নেতা হন তাহলে অন্য বিষয়😜)।এখানেই মুলত আপনি কাজটি করেছেন synchronously।

asynchronous programming :asynchronous প্রোগ্রামিংয়ে একটি কাজ শেষ না হয়েও আপনি চাইলে অন্য অনেক কাজ পাশাপাশি শেষ করতে পারবেন।

উদাহরণস্বরুপ: একটু আগে বাসের লাইনের উদাহরণ দিয়েছিলাম। আপনি ধরুন এলাকার লোকাল নেতা।😂।তো আপনি কি বাসের লাইনে অপেক্ষা করবেন?হেডম দেখিয়ে লাইনের সবাইকে পাশ কাটিয়ে বাসে উঠে পড়বেন।এখানে আপনি যা করলেন তা হল asynchronous task।

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

কেন দরকার এই Reactive programming?

মানুষ সব সময় গতি চায়।আপনি হয়তো চাইবেন না ফেসবুকে একটি পোস্ট দিয়ে ২-৩মিনিট অপেক্ষা করতে পোস্টটি পাবলিশ হবার আগ পর্যন্ত।Asynchronously যেহেতু reactive programming কাজ করে তার মানে হল সে প্রতিটি কাজ তার নিজস্ব Thread এর ভিতরেই করে (জাভার Thread ব্যাপারে ধারনা না থাকলে এখানে ক্লিক করুন )।অনেকগুলো কাজ এখানে এক সাথে হয়ে থাকে বলে সফটওয়্যার ব্যবহারকারীর কাছে তা অনেক ভাল user experience হয়ে দাঁড়ায় কেননা কারন একটি কাজ সে যখন করতে থাকে তখন background এ তার অনেক গুলো কাজ চলতে থাকে যা তার মুল কাজের উপর কোন প্রভাব ফেলে না।এখন যদি এই কাজগুলো synchronously হত তাহলে কিন্তু এক একটি কাজ শেষ হবার পর আরেকটি কাজ শুরু হত এতে করে অনেক সময় লাগবো প্রতিটি এপ্লিকেশনে যা ব্যবহারকারীর কাছে অনেক bad user experience হত।

আজ এতটুকুই।আগামী পর্বে আমরা Rx জাভার মুল আলোচনায় যাবো।

(অন্যকে শেখানো আমার পরোক্ষ উদ্দেশ্য।মূল উদ্দেশ্য নিজে শেখা ।তাই ভূলভ্রান্তি হলে দয়া করে সবাই কমেন্ট করে জানাবেন।এতে করে আমারো শেখার পথ সুগম হবে।)

ফেসবুক এ শেয়ার করুন

Leave a Reply

Your email address will not be published. Required fields are marked *