যখন আপনি জাভাতে কোন বস্তুকে সিরিয়ালাইজ করেন, তখন আপনি ডেটাকে বাইট স্ট্রীমে রূপান্তর করেন যা পরে মূল ডেটার কপিতে রূপান্তরিত হয়। যদি এটি বিভ্রান্তিকর মনে হয়, তাহলে নিম্নলিখিত পদে সিরিয়ালাইজেশনের কথা ভাবুন। আপনি একটি নথিতে কাজ করছেন এবং তারপরে এটি আপনার হার্ড ড্রাইভে সংরক্ষণ করুন। আপনি, কথা বলার পদ্ধতিতে, ডেটা সিরিয়ালাইজ করছেন যাতে আপনি পরে সেই কপিটি পুনরুদ্ধার করতে পারেন। সিরিয়ালাইজেশন নেটওয়ার্কগুলিতে ডেটা স্থানান্তরকে অনেক সহজ এবং আরও দক্ষ করে তোলে।
কোনো বস্তুকে সিরিয়াল করার আগে আপনি জাভার বুনিয়াদি বোঝা গুরুত্বপূর্ণ। আপনি যদি প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন পাস্কাল এবং C এর পুরোনো সংস্করণ ব্যবহার করে থাকেন, তাহলে আপনি জানতে পারবেন যে অবজেক্ট সিরিয়ালাইজেশন ছাড়াই একজন প্রোগ্রামারকে ডেটা সংরক্ষণ এবং লোড করার জন্য একটি পৃথক I/O টেক্সট ফাইল তৈরি করতে হবে। জাভাতে অবজেক্ট সিরিয়ালাইজেশন বাইপাস করে এই টেক্সট ফাইলটি ডেটা সঞ্চয় করে, সময় বাঁচায় এবং প্রোগ্রামিং খরচ বাঁচায়। নিম্নলিখিত নিবন্ধে জাভাতে একটি বস্তুর ক্রমানুসারে ধাপ রয়েছে। এই নিবন্ধের নমুনা কোডটি জাভা ডেভেলপারস অ্যালমানাক 1.4 এর সৌজন্যে ব্যবহার করা হয়েছে।
ধাপ
ধাপ 1. জাভা কোডিং অবজেক্ট খুলুন যার জন্য সিরিয়ালাইজেশন প্রয়োজন অথবা স্ক্র্যাচ থেকে একটি তৈরি করুন।
ধাপ 2. জাভাতে যে বস্তুটি আপনি সিরিয়াল করতে চান তা নির্বাচন করুন।
এই উদাহরণে, আমরা সেই বস্তুকে "MyObject" বলব।
ধাপ 3. java.io. Serialize ইন্টারফেস বাস্তবায়নের জন্য MyObject ক্লাস তৈরি করে জাভাতে অবজেক্ট সিরিয়ালাইজেশন সক্ষম করুন।
কোডের শুরুতে নিচের কোড লাইনটি যোগ করুন, "পাবলিক ক্লাস MyObject" লাইন প্রতিস্থাপন করুন। পাবলিক ক্লাস মাইঅবজেক্ট java.io. Serializable
ধাপ 4. এখন আপনার অবজেক্ট সিরিয়ালাইজযোগ্য, এর মানে হল যে এটি একটি আউটপুট স্ট্রিম দ্বারা লেখা যেতে পারে, যেমন:
-
নিম্নলিখিত কোড লাইনগুলি ব্যাখ্যা করে যে কিভাবে একটি ফাইল বা ডিস্কে MyObject (বা কোন সিরিয়ালাইজযোগ্য বস্তু) লিখতে হয়।
চেষ্টা করুন {
// একটি ফাইলে ডেটা অবজেক্ট সিরিয়ালাইজ করুন
ObjectOutputStream out = new ObjectOutputStream (new FileOutputStream ("MyObject.ser"));
out.writeObject (বস্তু);
out.close ();
// একটি বাইট অ্যারেতে ডেটা অবজেক্ট সিরিয়ালাইজ করুন
ByteArrayOutputStream bos = নতুন ByteArrayOutputStream ();
আউট = নতুন ObjectOutputStream (bos);
out.writeObject (বস্তু);
out.close ();
// ক্রমিক বস্তুর বাইট পান
বাইট buf = bos.toByteArray ();
} ধরা (IOException e) {
}
ধাপ 5. এটি এভাবে পড়তে পারে:
-
চেষ্টা করুন {FileInputStream door = new FileInputStream ("name_of_file.sav"); ObjectInputStream রিডার = নতুন ObjectInputStream (দরজা); MyObject x = নতুন MyObject (); x = (MyObject) reader.nextObject ();} catch (IOException e) {e.printStackTrace ();}
পদক্ষেপ 6. জাভা প্রোগ্রামের মধ্যে সিরিয়ালাইজড অবজেক্ট কোডটি কার্যকর করুন যাতে এটি কার্যকরভাবে কাজ করে (alচ্ছিক)।
ধাপ 7. জাভাতে সিরিয়ালাইজড বস্তুটি সংরক্ষণ করুন এবং বন্ধ করুন।
পরামর্শ
- জাভা এসই ডেভেলপমেন্ট কিট 6-এ ক্রমিকীকরণ বর্ধন আপনাকে অবজেক্টস্ট্রিমক্লাস ব্যবহার করার অনুমতি দেয় যে কোনও অ-সিরিয়ালাইজযোগ্য শ্রেণীর বস্তুগুলি পরিচালনা করার জন্য কোনও পদ্ধতি সন্ধান করুন।
- বড় বস্তুর গাছগুলিতে পড়া এবং লেখার সময় উন্নত করতে, উদাহরণস্বরূপ ভেরিয়েবলের জন্য "ক্ষণস্থায়ী" কীওয়ার্ড ব্যবহার করুন যাতে সিরিয়ালাইজেশনের প্রয়োজন হয় না। এটি কর্মক্ষমতা বৃদ্ধি করবে যাতে আপনি আর সিরিয়ালাইজেশন প্রক্রিয়ায় অপ্রয়োজনীয় ডেটা পড়ছেন এবং লিখছেন না।
সতর্কবাণী
- জাভা প্রায় বার্ষিক ভিত্তিতে তাদের বিকাশকারীর কিটের একটি নতুন সংস্করণ নিয়ে আসে। নতুন সংস্করণগুলিতে আপগ্রেড এবং পরিবর্তনগুলি অন্তর্ভুক্ত করা হয়েছে যে কিভাবে আপনি জাভাতে একটি বস্তুকে সিরিয়ালাইজ করতে পারেন। অতএব, আপনি যে সংস্করণটি ব্যবহার করছেন তার পরিবর্তনগুলি পর্যবেক্ষণ করা গুরুত্বপূর্ণ।
- বস্তুগুলিকে সিরিয়াল করার সময়, আপনি ডেটা স্ট্রিম এনক্রিপ্ট করতে পারবেন না। অতএব, প্রয়োজনে ডেটা সুরক্ষার জন্য আপনাকে অন্যান্য অ্যাপ্লিকেশন বা সেকেন্ডারি নেটওয়ার্ক পরিবহন প্রক্রিয়ার উপর নির্ভর করতে হবে।
- বর্তমানে কোন বিকল্প নেই যা আপনাকে একটি এলোমেলো অ্যাক্সেস ফাইলে বস্তু লিখতে দেয়। পরিবর্তে, আপনি বাইট অ্যারে ইনপুট আউটপুট স্ট্রিমগুলিকে প্লেসহোল্ডার হিসাবে ব্যবহার করতে পারেন যা থেকে বস্তুগুলি পড়তে এবং লিখতে হয়। যাইহোক, নিশ্চিত করুন যে পুরো বস্তুটি বাইট অ্যারে স্ট্রীমে আছে বা প্রক্রিয়াটি ব্যর্থ হবে।