Skill

RxJava সেটআপ এবং প্রথম প্রোগ্রাম

আরএক্সজাভা (RxJava) - Java Technologies

272

RxJava সেটআপ এবং প্রথম প্রোগ্রাম লেখার জন্য নিচে ধাপে ধাপে গাইড দেওয়া হলো।


RxJava সেটআপ:

RxJava ব্যবহার করতে হলে Maven বা Gradle প্রজেক্টে ডিপেনডেন্সি যোগ করতে হয়।

1. Gradle প্রজেক্টে RxJava যুক্ত করা:

dependencies {
    implementation 'io.reactivex.rxjava3:rxjava:3.1.5' // সর্বশেষ সংস্করণ নিশ্চিত করুন
}

2. Maven প্রজেক্টে RxJava যুক্ত করা:

<dependency>
    <groupId>io.reactivex.rxjava3</groupId>
    <artifactId>rxjava</artifactId>
    <version>3.1.5</version> <!-- সর্বশেষ সংস্করণ নিশ্চিত করুন -->
</dependency>

3. Android প্রজেক্টে RxAndroid যুক্ত করা:

Android প্রজেক্টে RxJava এর সাথে RxAndroid প্রয়োজন হয়।

dependencies {
    implementation 'io.reactivex.rxjava3:rxjava:3.1.5'
    implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
}

RxJava প্রথম প্রোগ্রাম:

নিচে RxJava ব্যবহার করে একটি সহজ প্রোগ্রাম তৈরি করা হয়েছে যেখানে ডাটা এমিশন, ট্রান্সফর্মেশন এবং সাবস্ক্রিপশন দেখানো হয়েছে।

import io.reactivex.rxjava3.core.Observable;

public class RxJavaFirstProgram {
    public static void main(String[] args) {
        // Observable তৈরি করা
        Observable<String> observable = Observable.just("Hello", "RxJava", "World");

        // Observable এর অপারেশন এবং সাবস্ক্রিপশন
        observable
            .map(String::toUpperCase) // ডাটাকে uppercase-এ রূপান্তর
            .filter(data -> data.startsWith("H")) // শুধুমাত্র "H" দিয়ে শুরু হওয়া ডাটা ফিল্টার
            .subscribe(
                data -> System.out.println("Received: " + data), // ডাটা প্রিন্ট
                throwable -> System.out.println("Error: " + throwable), // এরর হ্যান্ডলিং
                () -> System.out.println("Emission Completed!") // ডাটা শেষ হওয়ার পর
            );
    }
}

আউটপুট:

Received: HELLO
Emission Completed!

RxJava এর গুরুত্বপূর্ণ অংশগুলোর ব্যাখ্যা:

  1. Observable:
    • এটি ডাটা এমিশন করে।
    • উদাহরণ: Observable.just() একটি নির্দিষ্ট ডাটা স্ট্রিম তৈরি করে।
  2. Operators:
    • ডাটা মডিফাই বা ট্রান্সফর্ম করার জন্য ব্যবহার করা হয়।
    • উদাহরণ:
      • map() ডাটার প্রতিটি আইটেম পরিবর্তন করে।
      • filter() ডাটার নির্দিষ্ট অংশ ফিল্টার করে।
  3. Subscription:
    • Observable এর ইমিট করা ডাটা গ্রহণ করে প্রসেসিং করা হয়।
    • তিনটি মেথড ব্যবহার করা হয়:
      • onNext() - নতুন ডাটা পাওয়া গেলে কাজ করে।
      • onError() - এরর হলে কাজ করে।
      • onComplete() - সমস্ত ডাটা ইমিট হলে কাজ করে।

RxJava এর Scheduler ব্যবহার করে অ্যাসিনক্রোনাস প্রোগ্রামিং:

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.schedulers.Schedulers;

public class RxJavaWithScheduler {
    public static void main(String[] args) throws InterruptedException {
        Observable<Integer> observable = Observable.just(1, 2, 3, 4, 5);

        observable
            .subscribeOn(Schedulers.io()) // ব্যাকগ্রাউন্ড থ্রেডে কাজ শুরু
            .observeOn(Schedulers.single()) // সিঙ্গেল থ্রেডে কাজ শেষ
            .map(num -> num * 10) // ডাটাকে প্রসেস করা
            .subscribe(
                item -> System.out.println("Received: " + item + " on Thread: " + Thread.currentThread().getName()),
                throwable -> System.out.println("Error: " + throwable),
                () -> System.out.println("All items emitted!")
            );

        // প্রধান থ্রেডকে কিছুক্ষণ অপেক্ষা করানো
        Thread.sleep(2000);
    }
}

আউটপুট (উদাহরণ):

Received: 10 on Thread: single
Received: 20 on Thread: single
Received: 30 on Thread: single
Received: 40 on Thread: single
Received: 50 on Thread: single
All items emitted!

এগুলো দিয়ে আপনি RxJava ব্যবহার শুরু করতে পারবেন এবং এর মাধ্যমে অ্যাসিনক্রোনাস প্রোগ্রামিং-এর শক্তিশালী সুবিধা পেতে পারবেন।

Content added By

Maven বা Gradle ব্যবহার করে RxJava লাইব্রেরি আপনার প্রোজেক্টে সংযুক্ত করা খুব সহজ। নিচে Maven এবং Gradle উভয়ের জন্য ধাপে ধাপে নির্দেশনা দেওয়া হলো।


১. Gradle ব্যবহার করে RxJava সংযুক্ত করা

আপনার প্রোজেক্টের build.gradle ফাইলের dependencies সেকশনে নিচের ডিপেনডেন্সি যুক্ত করুন:

dependencies {
    implementation 'io.reactivex.rxjava3:rxjava:3.1.7' // সর্বশেষ সংস্করণ ব্যবহার করুন
}

এরপর Gradle প্রকল্পটি পুনরায় সিঙ্ক করুন (Sync)।


২. Maven ব্যবহার করে RxJava সংযুক্ত করা

আপনার প্রোজেক্টের pom.xml ফাইলের dependencies সেকশনে নিচের ডিপেনডেন্সি যুক্ত করুন:

<dependencies>
    <dependency>
        <groupId>io.reactivex.rxjava3</groupId>
        <artifactId>rxjava</artifactId>
        <version>3.1.7</version> <!-- সর্বশেষ সংস্করণ ব্যবহার করুন -->
    </dependency>
</dependencies>

এরপর Maven প্রকল্পটি আপডেট করুন।


৩. RxJava এর সর্বশেষ সংস্করণ খুঁজে বের করা

RxJava এর সর্বশেষ সংস্করণ নিশ্চিত করার জন্য Maven Central বা RxJava GitHub Releases পৃষ্ঠায় গিয়ে চেক করুন।


৪. RxJava ব্যবহার করার জন্য মূল ডিপেনডেন্সি

RxJava এর পাশাপাশি, যদি আপনি RxAndroid বা RxJava এর সাথে অন্য কোনো প্লাগইন বা লাইব্রেরি ব্যবহার করতে চান (যেমন RxKotlin, RxAndroid), সেগুলোর ডিপেনডেন্সিও একইভাবে যুক্ত করতে হবে।

উদাহরণস্বরূপ, RxAndroid এর জন্য Gradle এ:

dependencies {
    implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
}

৫. একটি ছোট টেস্ট কোড

RxJava ইনস্টলেশনের পরে এটি সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে নিচের উদাহরণটি চালান:

import io.reactivex.rxjava3.core.Observable;

public class RxJavaTest {
    public static void main(String[] args) {
        Observable.just("Hello", "RxJava", "World")
                  .subscribe(System.out::println);
    }
}

এটি চালালে আউটপুট হবে:

Hello
RxJava
World

এতে বোঝা যাবে যে, RxJava সঠিকভাবে সংযুক্ত হয়েছে।

Content added By

Eclipse বা IntelliJ IDEA-তে RxJava প্রজেক্ট তৈরি করার জন্য আপনাকে নিচের ধাপগুলো অনুসরণ করতে হবে।


1. IntelliJ IDEA তে RxJava প্রজেক্ট তৈরি করা

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

  • IntelliJ IDEA খুলুন এবং New Project নির্বাচন করুন।
  • Maven বা Gradle নির্বাচন করুন (RxJava এর জন্য ডিপেন্ডেন্সি ম্যানেজ করতে)।
  • জাভা SDK সিলেক্ট করুন এবং Finish ক্লিক করুন।

ধাপ ২: Maven/Gradle ডিপেন্ডেন্সি যোগ করুন

RxJava লাইব্রেরি ডাউনলোড করার জন্য আপনার pom.xml (Maven) অথবা build.gradle (Gradle) ফাইল আপডেট করুন।

Maven (pom.xml):

<dependencies>
    <dependency>
        <groupId>io.reactivex.rxjava3</groupId>
        <artifactId>rxjava</artifactId>
        <version>3.1.7</version>
    </dependency>
</dependencies>

Gradle (build.gradle):

dependencies {
    implementation 'io.reactivex.rxjava3:rxjava:3.1.7'
}

ধাপ ৩: ডিপেন্ডেন্সি রিফ্রেশ করুন

  • Maven: Reload All Maven Projects ক্লিক করুন।
  • Gradle: Sync Now ক্লিক করুন।

ধাপ ৪: RxJava কোড লিখুন এবং রান করুন

  • একটি নতুন Java ক্লাস তৈরি করুন।
  • নিচের মতো একটি উদাহরণ কোড লিখুন:
import io.reactivex.rxjava3.core.Observable;

public class RxJavaExample {
    public static void main(String[] args) {
        Observable<String> observable = Observable.just("Hello", "RxJava");
        
        observable.subscribe(
            item -> System.out.println("Received: " + item),
            error -> System.err.println("Error: " + error),
            () -> System.out.println("Done!")
        );
    }
}
  • Run এ ক্লিক করুন বা Shift + F10 চাপুন।

2. Eclipse এ RxJava প্রজেক্ট তৈরি করা

ধাপ ১: নতুন Maven প্রজেক্ট তৈরি করুন

  • Eclipse খুলুন এবং File > New > Maven Project নির্বাচন করুন।
  • Create a Simple Project অপশন সিলেক্ট করুন এবং Next ক্লিক করুন।
  • Group ID এবং Artifact ID প্রদান করুন এবং Finish ক্লিক করুন।

ধাপ ২: RxJava ডিপেন্ডেন্সি যোগ করুন

pom.xml ফাইল ওপেন করুন এবং RxJava ডিপেন্ডেন্সি যোগ করুন:

<dependencies>
    <dependency>
        <groupId>io.reactivex.rxjava3</groupId>
        <artifactId>rxjava</artifactId>
        <version>3.1.7</version>
    </dependency>
</dependencies>

ধাপ ৩: ডিপেন্ডেন্সি আপডেট করুন

  • Right-click প্রজেক্টে এবং Maven > Update Project নির্বাচন করুন।

ধাপ ৪: RxJava কোড লিখুন এবং রান করুন

  • src/main/java এর অধীনে একটি নতুন Java ক্লাস তৈরি করুন।
  • নিম্নলিখিত কোড লিখুন:
import io.reactivex.rxjava3.core.Observable;

public class RxJavaExample {
    public static void main(String[] args) {
        Observable<String> observable = Observable.just("Hello", "RxJava");
        
        observable.subscribe(
            item -> System.out.println("Received: " + item),
            error -> System.err.println("Error: " + error),
            () -> System.out.println("Done!")
        );
    }
}
  • ক্লাস ফাইলে Run As > Java Application নির্বাচন করুন।

নোটস:

  1. Gradle ব্যবহার করলে IntelliJ IDEA-তে কাজ আরও সহজ হবে।
  2. RxAndroid ব্যবহার করতে হলে rxandroid ডিপেন্ডেন্সিও যোগ করতে হবে।
  3. Eclipse এ JDK এবং Maven/Gradle সঠিকভাবে কনফিগার করা থাকতে হবে।

আপনি যদি সাহায্য করতে আরও কিছু জানতে চান, জানাবেন!

Content added By

RxJava-তে প্রথম প্রোগ্রাম বা "Hello Reactive World" লেখার জন্য আমরা একটি Observable তৈরি করব এবং সেটি থেকে data emit করব। একটি Observer এর মাধ্যমে emitted data consume করব। এর মাধ্যমে RxJava-এর বেসিক ধারণা বোঝা যাবে।

RxJava "Hello Reactive World" উদাহরণ

import io.reactivex.rxjava3.core.Observable;

public class HelloReactiveWorld {
    public static void main(String[] args) {
        // Step 1: একটি Observable তৈরি করা
        Observable<String> observable = Observable.just("Hello", "Reactive", "World");

        // Step 2: একটি Observer তৈরি করা এবং Observable-এ subscribe করা
        observable.subscribe(
            item -> System.out.println("Received: " + item), // onNext: যখন data emit হবে
            error -> System.err.println("Error: " + error),  // onError: কোনো error হলে
            () -> System.out.println("Completed!")           // onComplete: সব data emit হলে
        );
    }
}

প্রোগ্রামের ব্যাখ্যা

  1. Observable তৈরি করা
    • Observable.just("Hello", "Reactive", "World") ব্যবহার করে আমরা একটি Observable তৈরি করেছি যা data emit করবে।
  2. Observer তৈরি এবং Subscribe করা
    • observable.subscribe()-এর মাধ্যমে আমরা data গ্রহণ করার জন্য একটি Observer তৈরি করেছি।
    • onNext: Data emit হলে এটি কল হয়। এখানে আমরা প্রতিটি data প্রিন্ট করেছি।
    • onError: কোনো error হলে এটি কল হয়।
    • onComplete: সব data emit শেষ হলে এটি কল হয়।

আউটপুট

Received: Hello
Received: Reactive
Received: World
Completed!

এই প্রোগ্রামের বৈশিষ্ট্য

  • এটি একটি asynchronous প্রোগ্রাম হলেও খুব সহজে লেখা যায়।
  • Reactive Programming-এর মৌলিক ধারণা প্রদর্শন করে।
  • Functional programming স্টাইল ব্যবহারের মাধ্যমে কোড পরিষ্কার ও সহজ।

এই ছোট উদাহরণ দিয়ে আপনি RxJava-এর বেসিক ধারণা পেতে পারেন এবং ভবিষ্যতে complex asynchronous operations এর জন্য এটি ব্যবহার করতে পারেন।

Content added By

Reactive Streams এবং ReactiveX (Reactive Extensions) হল দুটি গুরুত্বপূর্ণ ধারণা যা RxJava-র ভিত্তি তৈরি করে। এরা উভয়ই asynchronous data streams এবং event-driven programming সহজ এবং কার্যকরী করার জন্য ডিজাইন করা হয়েছে। নিচে এদের ব্যাখ্যা দেওয়া হল।


Reactive Streams: ধারণা ও উদ্দেশ্য

Reactive Streams হল একটি specification (স্পেসিফিকেশন) যা asynchronous streams-এর জন্য standard backpressure পরিচালনার নিয়মাবলী নির্ধারণ করে। এটি বিভিন্ন ফ্রেমওয়ার্ক বা লাইব্রেরির মধ্যে interoperability (অন্তর্নিহিত সমর্থন) নিশ্চিত করার জন্য তৈরি।

মূল লক্ষ্য:

  1. Asynchronous Data Processing:
    • Non-blocking ভাবে data stream প্রসেস করা।
  2. Backpressure Management:
    • Producer (data provider) এবং Consumer (data receiver)-এর মধ্যে data flow rate নিয়ন্ত্রণ করা।
  3. Interoperability:
    • বিভিন্ন Reactive library বা framework-এর মধ্যে seamless integration।

Reactive Streams-এর প্রধান component:

  1. Publisher: ডাটা প্রকাশ করে।
  2. Subscriber: ডাটা গ্রহণ করে এবং প্রক্রিয়া করে।
  3. Subscription: Publisher এবং Subscriber-এর মধ্যে সংযোগ তৈরি করে।
  4. Processor: Publisher এবং Subscriber-এর মধ্যবর্তী middleware হিসেবে কাজ করে (data transformation বা manipulation-এর জন্য)।

উদাহরণ:

Reactive Streams-এর কাজের পদ্ধতি:

Publisher<Integer> publisher = subscriber -> {
    subscriber.onNext(1);
    subscriber.onNext(2);
    subscriber.onNext(3);
    subscriber.onComplete();
};

Subscriber<Integer> subscriber = new Subscriber<>() {
    @Override
    public void onSubscribe(Subscription s) {
        s.request(Long.MAX_VALUE); // All data requested
    }

    @Override
    public void onNext(Integer item) {
        System.out.println("Received: " + item);
    }

    @Override
    public void onError(Throwable t) {
        System.err.println("Error: " + t.getMessage());
    }

    @Override
    public void onComplete() {
        System.out.println("Done!");
    }
};

publisher.subscribe(subscriber);

ReactiveX: Reactive Extensions (Rx) ধারণা

ReactiveX (Reactive Extensions) হল একটি API এবং প্রোগ্রামিং মডেল যা asynchronous এবং event-driven programming-কে আরও সহজ করে তোলে। এটি মূলত functional programming-এর ধারণাগুলির উপর ভিত্তি করে কাজ করে।

ReactiveX-এর মূল বৈশিষ্ট্য:

  1. Declarative Programming:
    • Data streams এবং তাদের transformations সংজ্ঞায়িত করতে declarative syntax ব্যবহার করে।
  2. Data as Streams:
    • সবকিছুই data streams হিসেবে ধরা হয়। যেমন mouse clicks, database query, API response।
  3. Operators:
    • Streams প্রসেসিং এবং manipulation-এর জন্য বিশাল সংখ্যক operators (map, filter, reduce, flatMap ইত্যাদি)।
  4. Composability:
    • Complex asynchronous operations সহজেই compose এবং chain করা যায়।
  5. Thread Management:
    • Background threads পরিচালনা করার জন্য schedulers।

উদাহরণ:

RxJava ব্যবহার করে ReactiveX-এর ধারণা:

import io.reactivex.Observable;

public class ReactiveXExample {
    public static void main(String[] args) {
        Observable<Integer> observable = Observable.just(1, 2, 3, 4, 5);

        observable
            .filter(item -> item % 2 == 0) // শুধুমাত্র even numbers রাখবে
            .map(item -> item * 10)        // প্রত্যেক number 10 দিয়ে গুণ করবে
            .subscribe(
                item -> System.out.println("Received: " + item),
                error -> System.err.println("Error: " + error),
                () -> System.out.println("Done!")
            );
    }
}

আউটপুট:

Received: 20
Received: 40
Done!

Reactive Streams এবং ReactiveX-এর পার্থক্য

Reactive StreamsReactiveX (Reactive Extensions)
এটি একটি স্পেসিফিকেশনএটি একটি API এবং প্রোগ্রামিং লাইব্রেরি
Standard backpressure handling সরবরাহ করে।Advanced operators এবং streams প্রসেসিং সরবরাহ করে।
Minimalistic এবং Java 9-এর Flow API দ্বারা অনুপ্রাণিত।Rich API এবং functional programming বৈশিষ্ট্যযুক্ত।
Interoperability-এর উপর ফোকাস।Usability এবং flexibility-এর উপর ফোকাস।

RxJava: Reactive Streams এবং ReactiveX-এর সংযোগ

RxJava হল Reactive Streams specification অনুসরণ করে তৈরি করা একটি ReactiveX লাইব্রেরি। এটি Java এবং Android অ্যাপ্লিকেশনে asynchronous এবং event-driven programming সহজ করে।

  • Reactive Streams: এর মূল ভিত্তি হিসেবে কাজ করে।
  • ReactiveX: এর উচ্চ-স্তরের features এবং API সরবরাহ করে।

উদাহরণ:

Observable<Integer> observable = Observable.just(1, 2, 3, 4, 5);
observable.subscribe(System.out::println); // ReactiveX ধারণা ব্যবহার

উপসংহার

Reactive Streams এবং ReactiveX উভয়ই asynchronous এবং event-driven programming-কে কার্যকর ও সহজ করার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে। RxJava এই দুই ধারণার সমন্বয়ে একটি শক্তিশালী ফ্রেমওয়ার্ক, যা বিভিন্ন ক্ষেত্রে ব্যবহার করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...