Java Serialization की मूल बातें
Serializable लागू करें, ObjectOutputStream से objects को streams में लिखें और उन्हें वापस पढ़ें।
Java Serialization की मूल बातें, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Java में सीरियलाइज़ेशन क्या है
सीरियलाइज़ेशन किसी ऑब्जेक्ट की स्थिति को बाइट स्ट्रीम में बदलता है, ताकि उसे डिस्क पर सहेजा, नेटवर्क पर भेजा या डेटाबेस में संग्रहीत किया जा सके। डीसीरियलाइज़ेशन इस प्रक्रिया को उलट देता है।
Serializable मार्कर इंटरफ़ेस
किसी क्लास को सीरियलाइज़ करने के लिए java.io.Serializable लागू करें। इसमें कोई विधियाँ नहीं होतीं — यह JVM को संकेत देता है कि इस क्लास के इंस्टेंस सीरियलाइज़ किए जा सकते हैं।
import java.io.Serializable;
public class User implements Serializable {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override public String toString() { return name + " / " + age; }
}ObjectOutputStream से ऑब्जेक्ट लिखना
एक FileOutputStream को ObjectOutputStream में लपेटें और सीरियलाइज़ करने के लिए writeObject() कॉल करें।
import java.io.*;
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("user.ser"))) {
oos.writeObject(new User("Alice", 30));
System.out.println("Serialized successfully");
}ObjectInputStream से ऑब्जेक्ट पढ़ना
एक FileInputStream को ObjectInputStream में लपेटें और डीसीरियलाइज़ करने के लिए readObject() कॉल करें। परिणाम को अपेक्षित प्रकार में बदलें।
import java.io.*;
try (ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("user.ser"))) {
User u = (User) ois.readObject();
System.out.println("Deserialized: " + u);
}ऑब्जेक्ट ग्राफ़ का सीरियलाइज़ेशन
सीरियलाइज़ किए गए ऑब्जेक्ट द्वारा संदर्भित सभी ऑब्जेक्ट को भी Serializable लागू करना होगा, अन्यथा रनटाइम पर NotSerializableException फेंका जाता है।
public class Order implements Serializable {
private User customer; // User must be Serializable
private List<String> items;
public Order(User customer, List<String> items) {
this.customer = customer;
this.items = items;
}
}NotSerializableException
यदि ऑब्जेक्ट ग्राफ़ में कोई फ़ील्ड सीरियलाइज़ करने योग्य नहीं है और उसे transient के रूप में चिह्नित नहीं किया गया है, तो Java लिखने के समय NotSerializableException फेंकता है।
// Thread is NOT Serializable
public class Task implements Serializable {
private Thread worker; // throws NotSerializableException!
// Fix: mark as transient
private transient Thread worker2;
}ऑब्जेक्ट ग्राफ़ और साझा संदर्भ
Java सीरियलाइज़ेशन के दौरान ऑब्जेक्ट की पहचान को ट्रैक करता है। यदि दो फ़ील्ड एक ही ऑब्जेक्ट का संदर्भ देती हैं, तो केवल एक प्रति लिखी जाती है और डीसीरियलाइज़ेशन के बाद दोनों फ़ील्ड उसी इंस्टेंस की ओर संकेत करती हैं।
संग्रहों का सीरियलाइज़ेशन
ArrayList, HashMap और LinkedList जैसे मानक संग्रह पहले से ही Serializable लागू करते हैं, इसलिए उनके तत्व सीरियलाइज़ करने योग्य होने पर वे भी सीरियलाइज़ हो जाते हैं।
List<String> names = new ArrayList<>(List.of("Alice", "Bob"));
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("names.ser"))) {
oos.writeObject(names);
}वंशानुक्रम और सीरियलाइज़ेशन
यदि कोई अधिवर्ग Serializable है, तो उसके सभी उपवर्ग भी सीरियलाइज़ करने योग्य होते हैं। यदि अधिवर्ग NOT सीरियलाइज़ करने योग्य है, तो अधिवर्ग के फ़ील्ड सहेजे नहीं जाते; डीसीरियलाइज़ेशन के लिए अधिवर्ग में बिना आर्ग्युमेंट वाला कंस्ट्रक्टर होना आवश्यक है।
बाइट स्ट्रीम की जाँच
सीरियलाइज़ की गई बाइट स्ट्रीम की शुरुआत मैजिक बाइट्स 0xACED 0x0005 से होती है। फ़ॉर्मैट को समझने के लिए आप इसे हेक्स संपादक से देख सकते हैं या SerialVer टूल से डिकोड कर सकते हैं।
सुरक्षा चेतावनी
Java डीसीरियलाइज़ेशन हमलों का एक ज्ञात माध्यम है। बिना सत्यापन के अविश्वसनीय स्रोतों से प्राप्त डेटा को कभी भी डीसीरियलाइज़ न करें। बाहरी डेटा के लिए JSON, प्रोटोबफ़ या हस्ताक्षरित एनवेलप को प्राथमिकता दें।
त्वरित जाँच
कौन-सी मेथड किसी ऑब्जेक्ट को स्ट्रीम में सीरियलाइज़ करती है?
पुनरावलोकन
Java सीरियलाइज़ेशन में ObjectOutputStream / ObjectInputStream का उपयोग होता है। वर्गों को Serializable लागू करना आवश्यक है। अविश्वसनीय डेटा को सीरियलाइज़ करने से बचें — नए कोड के लिए आधुनिक विकल्पों को प्राथमिकता दें।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 104
- पाठ
- 374
अक्सर पूछे जाने वाले प्रश्न
क्या “Java Serialization की मूल बातें” पाठ निःशुल्क है?
हाँ—“Java Serialization की मूल बातें” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Java Serialization की मूल बातें” में मैं क्या सीखूँगा?
Serializable लागू करें, ObjectOutputStream से objects को streams में लिखें और उन्हें वापस पढ़ें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Java Serialization की मूल बातें” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Java Serialization की मूल बातें
- transient Fields और serialVersionUID
- Custom Serialization: writeObject और readObject
- आधुनिक विकल्प: JSON और Protocol Buffers