Serialization এর ধারণা এবং প্রয়োজনীয়তা

Java Technologies - অ্যাপাচি কমন্স আইও (Apache Common IO) Data Serialization এবং Deserialization |
141
141

Data Serialization এবং Deserialization হল একটি ডেটা স্টোরেজ বা ট্রান্সমিশন প্রক্রিয়া যা Java এ অবজেক্টগুলিকে বাইট স্ট্রিমে রূপান্তর (serialize) এবং আবার বাইট স্ট্রিম থেকে অবজেক্টে রূপান্তর (deserialize) করে। Apache Commons IO লাইব্রেরি এই প্রক্রিয়াকে সহজ এবং কার্যকরী করার জন্য প্রয়োজনীয় সরঞ্জাম সরবরাহ করে, বিশেষ করে স্ট্রিমের সাথে কাজ করার সময়।

যদিও Apache Commons IO সরাসরি serialization/deserialization এর জন্য কোনো নির্দিষ্ট API সরবরাহ না করলেও, আপনি Java IO বা Java NIO এর মাধ্যমে object serialization এবং deserialization করতে পারেন, এবং Commons IO লাইব্রেরির IOUtils বা ObjectInputStream এবং ObjectOutputStream ব্যবহার করতে পারেন।

এখানে আমরা Java IO ক্লাসের মাধ্যমে data serialization এবং deserialization এর ধারণা এবং ব্যবহার দেখব।

১. Data Serialization

Serialization হল একটি প্রক্রিয়া যেখানে একটি অবজেক্টকে বাইট স্ট্রিমে রূপান্তর করা হয় যাতে সেটি একটি ফাইল বা নেটওয়ার্কের মাধ্যমে সংরক্ষণ বা ট্রান্সফার করা যায়। এর মাধ্যমে অবজেক্টের অবস্থা সংরক্ষণ করা সম্ভব হয়।

ObjectOutputStream ব্যবহার করে Serialization করা

ObjectOutputStream ব্যবহার করে একটি অবজেক্টকে file বা stream এ serialize করা হয়।

উদাহরণ: Object Serialization

import java.io.*;

class Person implements Serializable {
    private String name;
    private int age;

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

    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
}

public class SerializationExample {
    public static void main(String[] args) {
        Person person = new Person("John Doe", 30);

        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            // Serialize the object to a file
            out.writeObject(person);
            System.out.println("Object has been serialized!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে:

  • Person ক্লাসটি Serializable ইন্টারফেস ইমপ্লিমেন্ট করছে, যা এটিকে serialize করার জন্য উপযুক্ত করে তোলে।
  • ObjectOutputStream ব্যবহার করে অবজেক্টটি person.ser ফাইলে serialize করা হয়েছে।

আউটপুট:

Object has been serialized!

২. Data Deserialization

Deserialization হল একটি প্রক্রিয়া যেখানে একটি বাইট স্ট্রিমকে পুনরায় একটি অবজেক্টে রূপান্তর করা হয়।

ObjectInputStream ব্যবহার করে Deserialization করা

ObjectInputStream ব্যবহার করে একটি ফাইল বা স্ট্রিম থেকে অবজেক্টকে deserialize করা হয়।

উদাহরণ: Object Deserialization

import java.io.*;

public class DeserializationExample {
    public static void main(String[] args) {
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {
            // Deserialize the object from the file
            Person person = (Person) in.readObject();
            System.out.println("Deserialized Object: " + person);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

এখানে:

  • ObjectInputStream ব্যবহার করে person.ser ফাইল থেকে অবজেক্টটি deserialize করা হয়েছে।

আউটপুট:

Deserialized Object: Person[name=John Doe, age=30]

৩. Apache Commons IO এর সাহায্যে Serialization এবং Deserialization

যদিও Apache Commons IO সরাসরি serialization/deserialization সমর্থন করে না, তবে Commons IO লাইব্রেরির IOUtils ব্যবহার করে আপনি স্ট্রিমে ডেটা কপি বা ট্রান্সফার করতে পারেন যা serialization/deserialization এর সাথে একত্রে ব্যবহার করা যায়।

উদাহরণ: IOUtils ব্যবহার করে Object Serialization এবং Deserialization

import org.apache.commons.io.IOUtils;
import java.io.*;

class Person implements Serializable {
    private String name;
    private int age;

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

    public String toString() {
        return "Person[name=" + name + ", age=" + age + "]";
    }
}

public class IOUtilsSerializationExample {
    public static void main(String[] args) {
        Person person = new Person("John Doe", 30);

        // Serialize the object to a byte array
        try (ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
             ObjectOutputStream objectStream = new ObjectOutputStream(byteStream)) {

            // Write object to byte array
            objectStream.writeObject(person);

            // Using IOUtils to write the byte array to a file
            IOUtils.write(byteStream.toByteArray(), new FileOutputStream("person.ser"));
            System.out.println("Object has been serialized using IOUtils!");

        } catch (IOException e) {
            e.printStackTrace();
        }

        // Deserialize the object from the file
        try {
            byte[] data = IOUtils.toByteArray(new FileInputStream("person.ser"));
            try (ObjectInputStream objectStream = new ObjectInputStream(new ByteArrayInputStream(data))) {
                Person deserializedPerson = (Person) objectStream.readObject();
                System.out.println("Deserialized Object: " + deserializedPerson);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে:

  • IOUtils.write() মেথডের মাধ্যমে byte[] ডেটা ফাইলে লেখা হয়েছে।
  • IOUtils.toByteArray() মেথডের মাধ্যমে ফাইল থেকে byte[] ডেটা পড়া হয়েছে এবং তারপর তা deserialize করা হয়েছে।

আউটপুট:

Object has been serialized using IOUtils!
Deserialized Object: Person[name=John Doe, age=30]

৪. Data Serialization এবং Deserialization এর সুবিধা

  1. ডেটার স্থায়িত্ব: অবজেক্টগুলি serialize করে আপনি সেগুলিকে ফাইল বা নেটওয়ার্কের মাধ্যমে সংরক্ষণ করতে পারেন, যা পরবর্তীতে deserialize করে পুনরায় ব্যবহার করা যায়।
  2. ডেটার ট্রান্সফার: অবজেক্টের ডেটা নেটওয়ার্ক বা অন্যান্য প্রক্রিয়ার মাধ্যমে সহজে ট্রান্সফার করা যায়।
  3. পারফরম্যান্স উন্নতি: বড় আকারের ডেটা স্টোরেজ বা ট্রান্সমিশন করার জন্য serialization/deserialization দ্রুত এবং কার্যকরী পদ্ধতি।
  4. সীমিত অবজেক্ট স্টোরেজ: শুধুমাত্র প্রয়োজনীয় অবজেক্টগুলো সংরক্ষণ করা সম্ভব হয়, যা মেমরি ব্যবস্থাপনায় সাহায্য করে।

সারাংশ

Data Serialization এবং Deserialization হল অবজেক্টকে বাইট স্ট্রিমে রূপান্তর এবং পুনরায় অবজেক্টে রূপান্তর করার একটি গুরুত্বপূর্ণ প্রক্রিয়া। Apache Commons IO সরাসরি এই প্রক্রিয়ার জন্য API সরবরাহ না করলেও, Java IO এর ObjectInputStream এবং ObjectOutputStream এর মাধ্যমে আপনি সহজেই এই প্রক্রিয়া পরিচালনা করতে পারেন এবং IOUtils ব্যবহার করে ফাইলের মধ্যে ডেটা কপি বা ট্রান্সফার করতে পারেন। Serialization এবং Deserialization ব্যবহারের মাধ্যমে আপনি অবজেক্টগুলিকে স্টোর করতে এবং ট্রান্সফার করতে সক্ষম হবেন, যা সফটওয়্যারের কার্যকারিতা এবং স্থায়িত্বে সহায়তা করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion