Online Ethical Hacking Course

Apply Now
Java Tutorial in Hindi

जावा सीरीयलाइजेशन और डीसीरीयलाइजेशन: अंतर और उदाहरण

Table of Contents

  • परिचय
  • जावा में सीरीयलाइजेशन क्या है? (Serialization in Java in Hindi)
  • ObjectOutputStream क्लास के तरीके
  • जावा में सीरीयलाइजेशन का उदाहरण
  • जावा सीरीयलाइजेशन के बारे में याद रखने योग्य बातें
  • जावा में सीरीयलाइजेशन के लाभ
  • जावा में डीसीरीयलाइजेशन क्या है? (Deserialization in Java in Hindi)
  • जावा में डीसीरीयलाइजेशन का उदाहरण
  • जावा में डीसीरीयलाइजेशन के लाभ
  • ObjectInputStream क्लास के मेथड्स
  • जावा में Serialization और Deserialization में अंतर

जावा Serialization और Deserialization से संबंधित प्रश्न

जब आप किसी ऑब्जेक्ट की स्थिति को किसी फ़ाइल में सहेजना चाहते हैं, उसे नेटवर्क पर transmit करना चाहते हैं, या डेटाबेस में संग्रहीत करना चाहते हैं तो सीरीयलाइजेशन आवश्यक है। यह आपको ऑब्जेक्ट को बनाए रखने और उन्हें विभिन्न जावा एप्लीकेशन या यहां तक कि विभिन्न प्रोग्रामिंग भाषाओं के बीच साझा करने में सक्षम बनाता है।
किसी क्लास को serializable बनाने के लिए, आपको java.io.Serializable इंटरफ़ेस लागू करना होगा। यह बिना किसी मेथड के एक मार्कर इंटरफ़ेस है, लेकिन यह जावा रनटाइम को संकेत देता है कि क्लास को serialized किया जा सकता है।
यदि कोई क्लास serializable नहीं है, तो उस क्लास के उदाहरण को serialize करने का प्रयास करने पर java.io.NotSerializableException आ जाएगी। क्लास को Serializable करने योग्य बनाने के लिए, आपको Serializable इंटरफ़ेस लागू करना होगा।
transient fields एक वर्ग के फ़ील्ड हैं जिन्हें आप सीरीयलाइजेशन प्रोसेस से बाहर करना चाहते हैं। किसी फ़ील्ड को transient के रूप में चिह्नित करके, आप यह संकेत दे रहे हैं कि इसका वैल्यू क्रमबद्ध नहीं किया जाना चाहिए। जब ऑब्जेक्ट को डिसेरिएलाइज़ किया जाता है, तो transient fields को उनके डिफ़ॉल्ट वैल्यू पर सेट किया जाएगा।
जावा में स्टेटिक फ़ील्ड serialized नहीं हैं। केवल उदाहरण वेरिएबल serialized हैं। जब किसी ऑब्जेक्ट को serialized किया जाता है, तो उसके स्टेटिक फ़ील्ड serialized डेटा में शामिल नहीं होते हैं।
सीरियलवर्जनयूआईडी एक सीरीयलाइजेबल क्लास में एक विशेष स्टेटिक फील्ड है। इसका उपयोग सीरीयलाइज़्ड डेटा के लिए वर्शन जानकारी प्रदान करने के लिए किया जाता है। जब आप किसी ऑब्जेक्ट को डीसेरिएलाइज़ करते हैं, तो जावा यह सुनिश्चित करने के लिए सीरियलवर्जनयूआईडी का उपयोग करता है कि डीसेरिएलाइज़ेशन पक्ष पर क्लास वर्शन क्रमबद्धता के दौरान उपयोग किए गए वर्शन से मेल खाता है। यदि वे मेल नहीं खाते हैं, तो एक InvalidClassException thrown कर दिया जा सकता है।
जावा सीरीयलाइजेशन विकल्प हैं, जैसे JSON, XML, प्रोटोकॉल बफ़र्स और अपाचे एवरो। ये फॉर्मेट अक्सर अधिक flexible, language-agnostic होते हैं, और जावा के built-in serialization mechanism की तुलना में बेहतर प्रदर्शन प्रदान कर सकते हैं।
नेटवर्क पर Sensitive या untrusted data ट्रांसफरिंग करने के लिए जावा सीरीयलाइजेशन की recommended नहीं की जाती है। यह सुरक्षा मुद्दों के प्रति Sensitive हो सकता है, जैसे कि डीसीरीयलाइजेशन कमजोरियाँ, जहाँ malicious डेटा कोड निष्पादन का कारण बन सकता है। untrusted sources से प्राप्त किसी भी डिसेरिएलाइज़्ड डेटा को validate और sanitize महत्वपूर्ण है।
वर्शन संबंधी समस्याओं को संभालने के लिए, आप अपनी sorted class में एक सीरियलवर्जनयूआईडी को स्पष्ट रूप से परिभाषित कर सकते हैं। जब क्लास की परिभाषा बदलती है, तो पहले से serialized data के साथ compatibility बनाए रखने के लिए तदनुसार सीरियलवर्जनयूआईडी को अपडेट करें। इसके अतिरिक्त, JSON या XML जैसे बाहरी फॉर्मेट का उपयोग करने पर विचार करें, जो डेटा structures के वर्शन और विकास के लिए बेहतर समर्थन प्रदान करते हैं।
Did you find this article helpful?