RMI কি?

Java RMI এর পরিচিতি - জাভা আরএমআই (Java RMI) - Java Technologies

392

Java Remote Method Invocation (RMI) হল জাভার একটি প্রযুক্তি যা একটি জাভা প্রোগ্রাম থেকে অন্য একটি রিমোট জাভা প্রোগ্রামের মেথড কল করতে সক্ষম করে, যেন সেই মেথড একই JVM-এ চলমান। এটি জাভার ডিস্ট্রিবিউটেড কম্পিউটিং (Distributed Computing) মডেলের একটি গুরুত্বপূর্ণ অংশ।

RMI মূলত একটি Distributed Object Application তৈরির জন্য ব্যবহৃত হয় এবং এটি Java-to-Java Communication এর জন্য বিশেষভাবে ডিজাইন করা হয়েছে।


RMI এর মূল বৈশিষ্ট্য

  1. Distributed Computing:
    • RMI এর মাধ্যমে বিভিন্ন সিস্টেমে চলমান প্রোগ্রাম একে অপরের সাথে যোগাযোগ করতে পারে।
  2. Object Serialization:
    • RMI জাভার Serialization API ব্যবহার করে ডেটা এবং অবজেক্ট স্থানান্তর করে।
  3. Automatic Stub and Skeleton Generation:
    • RMI Stub এবং Skeleton এর মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ সহজ করে।
  4. Protocol Abstraction:
    • RMI নিচু স্তরের প্রটোকল পরিচালনা করে (যেমন TCP/IP), যা ডেভেলপারকে উচ্চ স্তরের লজিক তৈরিতে সাহায্য করে।

RMI এর কাজের প্রক্রিয়া

RMI এর মাধ্যমে এক JVM (Java Virtual Machine) থেকে অন্য JVM-এ অবজেক্ট মেথড কল করা যায়। এর কাজের প্রক্রিয়াটি নিচের ধাপে বিভক্ত:

  1. Stub এবং Skeleton:
    • Stub: ক্লায়েন্ট প্রোগ্রামের প্রতিনিধিত্বকারী। এটি রিমোট মেথড কলের জন্য ব্যবহৃত হয়।
    • Skeleton: সার্ভার-সাইড ক্লাস যা Stub থেকে রিকোয়েস্ট গ্রহণ করে এবং রিমোট অবজেক্টে পাঠায়। (Java 5 এবং তারপরে Skeleton বাদ পড়েছে।)
  2. RMI Registry:
    • RMI Registry হল একটি সার্ভার যেখানে রিমোট অবজেক্ট রেজিস্টার করা হয়। এটি ক্লায়েন্টের জন্য রিমোট অবজেক্টের রেফারেন্স সরবরাহ করে।
  3. Serialization এবং Deserialization:
    • অবজেক্ট ডেটা নেটওয়ার্কের মাধ্যমে স্থানান্তর করতে Serialization ব্যবহার করা হয়।
  4. Communication Protocol:
    • RMI কমিউনিকেশন করতে JRMP (Java Remote Method Protocol) ব্যবহার করে।

RMI এর একটি উদাহরণ

Step 1: Interface তৈরি করা

import java.rmi.Remote;
import java.rmi.RemoteException;

// Remote Interface
public interface Hello extends Remote {
    String sayHello(String name) throws RemoteException;
}

Step 2: Server-Side Implementation

import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;

public class HelloImpl extends UnicastRemoteObject implements Hello {
    protected HelloImpl() throws RemoteException {
        super();
    }

    @Override
    public String sayHello(String name) throws RemoteException {
        return "Hello, " + name + "!";
    }
}

Step 3: Server Application

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class Server {
    public static void main(String[] args) {
        try {
            LocateRegistry.createRegistry(1099); // RMI Registry শুরু করা
            Hello hello = new HelloImpl();
            Naming.rebind("rmi://localhost:1099/HelloService", hello);
            System.out.println("Server is ready.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Step 4: Client Application

import java.rmi.Naming;

public class Client {
    public static void main(String[] args) {
        try {
            Hello hello = (Hello) Naming.lookup("rmi://localhost:1099/HelloService");
            System.out.println(hello.sayHello("Alice"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RMI এর সুবিধা

  1. প্ল্যাটফর্ম নিরপেক্ষতা:
    • RMI জাভার Write Once, Run Anywhere নীতির সঙ্গে সামঞ্জস্যপূর্ণ।
  2. Distributed Object Communication:
    • জাভা অবজেক্টগুলো সহজে রিমোট সার্ভারে শেয়ার করা যায়।
  3. Security Model:
    • RMI জাভার Security Manager ব্যবহার করে নিরাপত্তা নিশ্চিত করে।
  4. Automatic Garbage Collection:
    • RMI ব্যবহার করে ডিস্ট্রিবিউটেড অবজেক্টের জন্য গার্বেজ কালেকশন চালায়।

RMI এর সীমাবদ্ধতা

  1. Java-to-Java Communication:
    • শুধুমাত্র জাভা ভিত্তিক অ্যাপ্লিকেশনগুলোর মধ্যে কাজ করে।
  2. Performance Overhead:
    • Serialization এবং Deserialization এর জন্য অতিরিক্ত প্রসেসিং প্রয়োজন।
  3. Firewall Issues:
    • RMI ফায়ারওয়ালের মধ্যে কাজ করতে সমস্যা হতে পারে।
  4. Complex Setup:
    • RMI এর সঠিকভাবে কাজ করার জন্য Stub, Registry, এবং Proper Networking Setup দরকার।

Java RMI একটি শক্তিশালী টুল যা ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। এটি জাভার সহজ Object-Oriented Programming Model এর উপর ভিত্তি করে কাজ করে। যদিও এর কিছু সীমাবদ্ধতা রয়েছে, RMI এখনও Java-to-Java Remote Communication এর জন্য একটি জনপ্রিয় সমাধান।

Content added By
Promotion

Are you sure to start over?

Loading...