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

Serialization এবং Externalizable Interface - জাভা আইও (Java.io Package) - Java Technologies

271

Java I/O প্যাকেজে Serialization এবং Externalizable দুটি খুব গুরুত্বপূর্ণ প্রযুক্তি যা object persistence এবং object transmission (অবজেক্টের স্থায়িত্ব এবং স্থানান্তর) এর জন্য ব্যবহৃত হয়। এটি সাধারণত Java objects কে byte streams-এ রূপান্তর করতে সহায়ক, যাতে এগুলিকে ফাইল সিস্টেমে সংরক্ষণ করা যায় বা নেটওয়ার্কের মাধ্যমে পাঠানো যায়।

Serialization:

Serialization হল একটি প্রক্রিয়া যার মাধ্যমে Java objects-কে byte stream (বাইটের ধারায়) রূপান্তরিত করা হয় যাতে এগুলিকে ফাইল সিস্টেমে সংরক্ষণ বা নেটওয়ার্কে পাঠানো যায়। এবং Deserialization হল অবজেক্টের পুনরায় byte stream থেকে অবজেক্টে রূপান্তর করা।

Serialization এর কাজ:

  • Java দ্বারা automatic serialization প্রদান করা হয় যদি একটি ক্লাস Serializable ইন্টারফেস ইমপ্লিমেন্ট করে।
  • Serializable ইন্টারফেস ইমপ্লিমেন্ট করার মাধ্যমে, Java জানে যে এটি অবজেক্টের ডেটা ফাইল সিস্টেমে বা নেটওয়ার্কে সেভ করতে পারবে।

Serializable উদাহরণ:

import java.io.*;

class Person implements Serializable {
    String name;
    int age;

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

public class SerializationExample {
    public static void main(String[] args) {
        Person person = new Person("John", 30);
        
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            out.writeObject(person); // অবজেক্টটি সিরিয়ালাইজ করা হচ্ছে
            System.out.println("Object Serialized");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Person ক্লাসটি Serializable ইন্টারফেস ইমপ্লিমেন্ট করেছে।
  • ObjectOutputStream এর মাধ্যমে person অবজেক্টটি person.ser ফাইলে সেভ করা হয়েছে।
  • writeObject() মেথড ব্যবহার করে অবজেক্টটি serialization করা হচ্ছে।

Externalizable:

Externalizable ইন্টারফেসটি Serializable এর একটি উন্নত সংস্করণ, যেখানে আপনি serialization এবং deserialization এর পুরো নিয়ন্ত্রণ করতে পারেন। এটি আপনাকে অবজেক্টের serialization process কাস্টমাইজ করার সুযোগ দেয়।

Externalizable এর কাজ:

  • Externalizable ইন্টারফেসে দুটি মেথড থাকে:
    1. writeExternal(ObjectOutput out): এটি অবজেক্টের ডেটা লিখে।
    2. readExternal(ObjectInput in): এটি অবজেক্টের ডেটা পড়ে।
  • এখানে আপনি সুনির্দিষ্টভাবে কি ডেটা serialization করতে চান তা কাস্টমাইজ করতে পারেন।

Externalizable উদাহরণ:

import java.io.*;

class Person implements Externalizable {
    String name;
    int age;

    public Person() {
        // Default constructor needed for Externalizable
    }

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

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(name);  // Only serialize name
        out.writeInt(age);      // Serialize age
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        name = (String) in.readObject(); // Deserialize name
        age = in.readInt();              // Deserialize age
    }
}

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

        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("personExternal.ser"))) {
            out.writeObject(person); // Serialize object using Externalizable
            System.out.println("Object Serialized using Externalizable");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Person ক্লাসটি Externalizable ইন্টারফেস ইমপ্লিমেন্ট করেছে।
  • writeExternal() এবং readExternal() মেথডগুলোর মাধ্যমে custom serialization এবং deserialization করা হচ্ছে।

Serialization এবং Externalizable এর মধ্যে পার্থক্য:

বিষয়SerializationExternalizable
কন্ট্রোলJava স্বয়ংক্রিয়ভাবে অবজেক্টের serialization পরিচালনা করে।ব্যবহারকারী serialization এবং deserialization কাস্টমাইজ করতে পারেন।
ক্লাস ইমপ্লিমেন্টেশনSerializable ইন্টারফেস ইমপ্লিমেন্ট করতে হয়।Externalizable ইন্টারফেস ইমপ্লিমেন্ট করতে হয়।
কাস্টম Serializationকাস্টম serialization সম্ভব নয়।কাস্টম serialization সম্পূর্ণরূপে সম্ভব (writeExternal এবং readExternal মেথড ব্যবহার করে)।
ডিফল্ট কনস্ট্রাক্টরডিফল্ট কনস্ট্রাক্টর প্রয়োজন নেই।ডিফল্ট কনস্ট্রাক্টর প্রয়োজন (যেহেতু readExternal ব্যবহার করা হয়)।
সিরিয়ালাইজেশন প্রক্রিয়াJava অবজেক্টের সমস্ত ফিল্ড সিরিয়ালাইজ করে।আপনি কী কী ফিল্ড সিরিয়ালাইজ করবেন তা নির্ধারণ করতে পারেন।
Performanceসাধারণত Serializable দ্রুত এবং সহজ।কাস্টম serialization এর জন্য কিছু অতিরিক্ত কার্যপ্রণালী থাকতে পারে।
চালনাঅধিকাংশ ক্ষেত্রেই সহজ এবং সরল।বেশি কাস্টমাইজেশন ক্ষমতা এবং জটিল হতে পারে।

সারসংক্ষেপ:

  1. Serialization:
    • এটি একটি সহজ উপায় যা Java objects কে byte stream-এ রূপান্তর করতে দেয়। এটি Serializable ইন্টারফেস ব্যবহার করে কাজ করে এবং সাধারণভাবে অধিকাংশ ক্লাসে ব্যবহার করা হয়।
  2. Externalizable:
    • এটি Serializable এর একটি উন্নত সংস্করণ যা Externalizable ইন্টারফেস ব্যবহার করে। এখানে আপনি serialization এবং deserialization এর পুরো নিয়ন্ত্রণ করতে পারেন এবং কাস্টমাইজ করতে পারেন।
  3. পার্থক্য:
    • Serialization সাধারণত ফাস্ট এবং সহজ, তবে Externalizable অধিক কাস্টমাইজেশন প্রদান করে, তবে এটি কিছু বেশি জটিল হতে পারে।

Serialization সাধারণত যখন আপনি ডেটা সংরক্ষণ বা স্থানান্তর করতে চান এবং আপনার ডেটার সম্পূর্ণ কাঠামো ব্যবহার করতে চান, তখন ব্যবহৃত হয়। অপরদিকে, Externalizable যখন আপনি বেশি কাস্টমাইজেশন চাচ্ছেন এবং ডেটা সংরক্ষণ বা স্থানান্তর করার সময় কিছু ডেটা বাদ দিতে চান, তখন এটি ব্যবহার করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...