Object Serialization এবং Deserialization এর ধারণা কী?

Java I/O (Input/Output) সম্পর্কিত প্রশ্নাবলী - জাভা ইন্টারভিউ প্রশ্ন (Java Interview Questions) - Java Technologies

321

Object Serialization এবং Deserialization Java এর একটি গুরুত্বপূর্ণ প্রক্রিয়া যা অবজেক্টগুলোকে স্টোর (বা ট্রান্সমিট) এবং পুনরুদ্ধার করতে ব্যবহৃত হয়। এই দুটি প্রক্রিয়া মূলত Java I/O (Input/Output) এর অংশ এবং এটি Java's Object Serialization API ব্যবহার করে সম্পাদিত হয়।


1. Object Serialization

Object Serialization হল একটি প্রক্রিয়া যার মাধ্যমে একটি অবজেক্টকে একটি বাইট স্ট্রিমে রূপান্তরিত করা হয়, যাতে সেই অবজেক্টটি ফাইল, ডাটাবেস বা নেটওয়ার্কে সংরক্ষণ বা পাঠানো সম্ভব হয়। এই প্রক্রিয়া মূলত একটি অবজেক্টকে byte stream এ রূপান্তরিত করে, যা পরে অন্য জায়গায় (যেমন ফাইল বা নেটওয়ার্ক) সংরক্ষণ করা যায়।

Object Serialization এর সুবিধা:

  • Storage: অবজেক্টগুলিকে ফাইল বা ডাটাবেসে সংরক্ষণ করা।
  • Communication: অবজেক্টগুলিকে নেটওয়ার্কের মাধ্যমে পাঠানো।
  • Persistence: অবজেক্টের স্থায়িত্ব (long-term storage) নিশ্চিত করা।

Object Serialization এর জন্য কী করতে হয়:

  1. অবজেক্টের ক্লাসকে Serializable ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।
  2. ObjectOutputStream ব্যবহার করে অবজেক্টটি স্টোর করতে হবে।

Example:

import java.io.*;

class Student implements Serializable {
    String name;
    int age;

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class SerializationExample {
    public static void main(String[] args) {
        Student student = new Student("John", 20);

        try {
            // Create an ObjectOutputStream to write the object
            FileOutputStream fileOut = new FileOutputStream("student.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            
            // Serialize the student object
            out.writeObject(student);
            out.close();
            fileOut.close();
            
            System.out.println("Serialization completed!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • এখানে Student ক্লাসটি Serializable ইন্টারফেস ইমপ্লিমেন্ট করেছে, যার মাধ্যমে এটি সেরিয়ালাইজ করা যেতে পারে।

2. Object Deserialization

Object Deserialization হল একটি প্রক্রিয়া, যার মাধ্যমে একটি বাইট স্ট্রিম (যেটি পূর্বে সেরিয়ালাইজ করা হয়েছে) আবার একটি অবজেক্টে রূপান্তরিত হয়। এটি মূলত ObjectInputStream ব্যবহার করে করা হয়।

Object Deserialization এর সুবিধা:

  • Restoring State: অবজেক্টের পূর্বের অবস্থা পুনরুদ্ধার করা।
  • Remote Communication: নেটওয়ার্ক থেকে অবজেক্ট গ্রহণ করা এবং পুনরুদ্ধার করা।

Object Deserialization এর জন্য কী করতে হয়:

  1. ObjectInputStream ব্যবহার করে অবজেক্টটি পুনরুদ্ধার করতে হবে।

Example:

import java.io.*;

class Student implements Serializable {
    String name;
    int age;

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class DeserializationExample {
    public static void main(String[] args) {
        try {
            // Create an ObjectInputStream to read the object
            FileInputStream fileIn = new FileInputStream("student.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            
            // Deserialize the student object
            Student student = (Student) in.readObject();
            in.close();
            fileIn.close();
            
            // Output the deserialized object
            System.out.println("Name: " + student.name);
            System.out.println("Age: " + student.age);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
  • এখানে, student.ser ফাইল থেকে সেরিয়ালাইজড অবজেক্টকে ডেসিরিয়ালাইজ করে, Student অবজেক্টে রূপান্তর করা হয়েছে এবং তার মান প্রদর্শন করা হয়েছে।

Object Serialization এবং Deserialization এর মধ্যে পার্থক্য

FeatureSerializationDeserialization
DefinitionObject কে byte stream এ রূপান্তর করাSerialized byte stream কে Object এ রূপান্তর করা
PurposeObject কে সংরক্ষণ বা পাঠানোর জন্যSerialized object কে পুনরুদ্ধার করার জন্য
ProcessObjectOutputStream.writeObject()ObjectInputStream.readObject()
Class RequirementClass কে Serializable হতে হবেClass কে Serializable হতে হবে
UsageData Storage, Data TransmissionData Retrieval, Object Restoration

Serializable Interface

Serializable একটি মার্কার ইন্টারফেস, অর্থাৎ এটি কোনো মেথড ডিক্লেয়ার করে না, তবে এটি ক্লাসকে serializable করে তোলে। এটি Java Object Serialization এর জন্য অপরিহার্য।

  • যখন একটি ক্লাস Serializable ইন্টারফেস ইমপ্লিমেন্ট করে, তখন সেই ক্লাসের অবজেক্টকে সেরিয়ালাইজ বা ডেসিরিয়ালাইজ করা যায়।

Transient Keyword

কিছু সময় আপনি এমন ক্ষেত্র থাকতে পারেন যা অবজেক্ট সেরিয়ালাইজেশন প্রক্রিয়ায় অন্তর্ভুক্ত করতে চান না। এজন্য transient কীওয়ার্ড ব্যবহার করা হয়। এই কীওয়ার্ড দিয়ে চিহ্নিত ফিল্ডগুলো সেরিয়ালাইজেশন প্রক্রিয়ায় অন্তর্ভুক্ত হবে না।

Example:

class Employee implements Serializable {
    String name;
    transient int salary;  // This will not be serialized

    Employee(String name, int salary) {
        this.name = name;
        this.salary = salary;
    }
}
  • এখানে salary ফিল্ডটি transient হওয়ায় এটি সেরিয়ালাইজ হবে না।

Advantages of Serialization and Deserialization:

  1. Data Persistence: সেরিয়ালাইজেশন ডেটাকে ডাটাবেস বা ফাইলে দীর্ঘ সময়ের জন্য সংরক্ষণ করতে সাহায্য করে।
  2. Data Transmission: নেটওয়ার্ক বা ডিস্কের মাধ্যমে অবজেক্ট পাঠানো বা গ্রহণ করার জন্য সেরিয়ালাইজেশন ব্যবহার করা হয়।
  3. Cross-platform communication: Serialization এবং Deserialization এর মাধ্যমে একটি Java অ্যাপ্লিকেশন থেকে অন্য Java অ্যাপ্লিকেশনে ডেটা ট্রান্সফার করা যায়।
  4. Distributed Systems: সেরিয়ালাইজেশন ব্যবহৃত হয় ডিসট্রিবিউটেড সিস্টেমে (যেমন RMI বা Web Services) অবজেক্ট পাঠাতে।

Java তে Object Serialization এবং Deserialization হলো অবজেক্টগুলোকে byte stream এ রূপান্তরিত করে সংরক্ষণ বা পাঠানোর এবং পরে পুনরুদ্ধার করার প্রক্রিয়া। এটি ডেটার স্থায়িত্ব, ট্রান্সমিশন, এবং পুনরুদ্ধারের জন্য অপরিহার্য। Serializable ইন্টারফেস ব্যবহার করে অবজেক্টের সেরিয়ালাইজেশন এবং transient কীওয়ার্ড ব্যবহার করে অবজেক্টের কিছু ফিল্ড সেরিয়ালাইজেশন থেকে বাদ দেওয়া যায়।

Content added By
Promotion

Are you sure to start over?

Loading...