Serialization এবং Externalization উভয়ই অবজেক্টকে বাইট স্ট্রিমে রূপান্তর করে ডেটাবেস বা মেমোরিতে সংরক্ষণের প্রক্রিয়া। java.io.Serializable ইমপ্লিমেন্ট করা ক্লাস সিরিয়ালাইজ করা যায়। Externalization অ্যাপ্লিকেশনের আশুলিয়ة অনুযায়ী কাস্টম সিরিয়ালাইজেশনের জন্য ব্যবহৃত হয়। Externalization, Serializable-কে এক্সটেন্ড করে।
Serialization এবং Externalization-এর তুলনা
| ক্রমিক নং | বিষয় | Serialization | Externalization |
|---|---|---|---|
| ১ | ইন্টারফেস | Serialization একটি মার্কার ইন্টারফেস (কোনো মেথড নেই) | Externalization-এ readExternal এবং writeExternal দুটি মেথড রয়েছে |
| ২ | ইমপ্লিমেন্টেশন লজিক | JVM-কে দায়িত্ব দেয়, readObject/writeObject ব্যবহার করে | অ্যাপ্লিকেশনের কন্ট্রোল, readExternal/writeExternal ওভাররাইড করে |
| ৩ | ভেরিয়েবল উপেক্ষা | transient ভেরিয়েবল JVM উপেক্ষা করে | প্রোগ্রামার নিজের লজিক লিখে ভেরিয়েবল উপেক্ষা করতে পারে |
| ৪ | পারফরম্যান্স | রিফ্লেকশন ব্যবহার করে, তুলনামূলক ধীর | ইমপ্লিমেন্টেশন পূর্ন কন্ট্রোল, তুলনামূলক দ্রুত |
| ৫ | ইনহেরিট্যান্সের সাথে সিরিয়ালাইজেশন | ১. সুপারক্লাস সিরিয়ালাইজেবল না হলে সাবক্লাস সিরিয়ালাইজ হতে পারে ২. সাবক্লাস না হলে সুপারক্লাস অটো সিরিয়ালাইজেবল |
Externalizable-এও একই নিয়ম প্রয়োগ করা যায় |
Externalizable উদাহরণ
class ExternalizableExample implements Externalizable {
Integer id;
@Override
public void writeExternal(ObjectOutput out) throws IOException {
out.writeInt(id);
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
this.id = in.readInt();
}
}
Serializable উদাহরণ
class SerializableExample implements Serializable {
private static final long serialVersionUID = 5081877L;
String name;
}
কোনটি ব্যবহার করবেন?
- Serializable: সাধারণ কেসে, কম কোড লিখতে হলে
- Externalizable: কাস্টম ফরম্যাট, পারফরম্যান্স ক্রিটিক্যাল, ভার্সন কন্ট্রোল দরকার হলে