CodeGym /Java Blog /यादृच्छिक /जावा सीरियलायझेशन फॉरमॅट्स
John Squirrels
पातळी 41
San Francisco

जावा सीरियलायझेशन फॉरमॅट्स

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
हाय! चला क्रमवारीबद्दल बोलूया. तुम्हाला कदाचित आठवत असेल की आम्हाला सीरियलायझेशनचे धडे आधीच मिळाले आहेत. आणि म्हणून आम्ही केले :) येथे पहिले आहे आणि येथे दुसरे आहे. सीरियलायझेशन कसे कार्य करते, सीरियलायझेशन का आवश्यक आहे आणि सीरियलायझेशनसाठी Java कडे कोणती साधने आहेत हे तुम्हाला नीट आठवत नसेल, तर तुम्ही या धड्यांमधून जाऊ शकता. आजचा धडा सिद्धांत बद्दल असेल. आम्ही सीरियलायझेशन फॉरमॅट्सकडे जवळून पाहणार आहोत. प्रथम, क्रमवारी म्हणजे काय ते आठवूया. सीरियलायझेशन ही बाइट्सच्या क्रमाने ऑब्जेक्टची स्थिती संग्रहित करण्याची प्रक्रिया आहे. डिसिरियलायझेशन ही या बाइट्समधून ऑब्जेक्ट पुनर्संचयित करण्याची प्रक्रिया आहे. जावा ऑब्जेक्ट सीरियलाइज केले जाऊ शकते आणि नेटवर्कवर पाठवले जाऊ शकते (उदाहरणार्थ, दुसर्या संगणकावर). बाइट्सचा क्रम वेगवेगळ्या फॉरमॅटमध्ये दर्शविला जाऊ शकतो. सामान्य संगणक वापरातून तुम्ही या संकल्पनेशी परिचित आहात. उदाहरणार्थ, इलेक्ट्रॉनिक पुस्तक (किंवा एक साधा मजकूर दस्तऐवज) विविध स्वरूपांच्या गुच्छात लिहिले जाऊ शकते:
  • docx (मायक्रोसॉफ्ट वर्ड फॉरमॅट);
  • pdf (Adobe format);
  • mobi (सामान्यतः Amazon Kindle उपकरणांवर वापरले जाते);
  • आणि बरेच काही (ePub, djvu, fb2, इ.).
प्रत्येक बाबतीत, उद्देश एकच असल्याचे दिसते: मजकूर मानव-वाचनीय स्वरूपात सादर करा. तरीही, लोकांनी खूप वेगवेगळ्या स्वरूपांचा शोध लावला आहे. त्यांच्या कामाच्या तपशीलात न जाता, त्यांच्याकडे चांगली कारणे होती असे आपण गृहीत धरू शकतो. बाकीच्या तुलनेत प्रत्येक स्वरूपाचे स्वतःचे फायदे आणि तोटे आहेत. कदाचित या समान तत्त्वांचे अनुसरण करून विविध क्रमिक स्वरूप तयार केले गेले असतील? उत्कृष्ट अंदाज, विद्यार्थी! :) अगदी बरोबर आहे. वास्तविकता अशी आहे की वायरवर (किंवा वायरलेस पद्धतीने) डेटा पाठवणे अवघड व्यवसाय आहे आणि त्यात अनेक घटकांचा समावेश आहे. डेटा कोण पाठवत आहे? कुठे? काय व्हॉल्यूम? प्राप्तकर्ता मानव असेल की संगणक (म्हणजे डेटा मानव-वाचनीय असावा)? कोणते उपकरण डेटा वाचेल? अर्थात, या परिस्थिती वेगळ्या आहेत. 500 KB इमेज एका स्मार्टफोनवरून दुसऱ्या स्मार्टफोनवर पाठवणे ही एक गोष्ट आहे. आणि जर आपण 500 टेराबाइट्स व्यवसाय डेटा बद्दल बोलत असाल तर ही एक पूर्णपणे वेगळी गोष्ट आहे जी शक्य तितक्या लवकर संकुचित करणे आणि पाठवणे आवश्यक आहे. चला मुख्य क्रमिक स्वरूपांशी परिचित होऊ आणि त्या प्रत्येकाचे फायदे आणि तोटे विचारात घेऊया!

JSON

JavaScript ऑब्जेक्ट नोटेशन. तुम्हाला या फॉरमॅटबद्दल थोडी माहिती आधीच आहे! आम्ही या धड्यात याबद्दल बोललो , आणि आम्ही येथे JSON मध्ये अनुक्रमिकरण समाविष्ट केले . त्याचे नाव एका कारणाने मिळाले. JSON मध्ये रूपांतरित केलेले Java ऑब्जेक्ट प्रत्यक्षात JavaScript मधील ऑब्जेक्ट्ससारखे दिसतात. आमचे ऑब्जेक्ट समजून घेण्यासाठी तुम्हाला JavaScript माहित असणे आवश्यक नाही:

{
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
}
आम्ही एकच ऑब्जेक्ट पाठवण्यापुरते मर्यादित नाही. JSON स्वरूप ऑब्जेक्ट्सच्या अॅरेचे देखील प्रतिनिधित्व करू शकते:

[
 {
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
 },

 {
   "title": "Demons",
   "author": "Fyodor Dostoyevsky",
   "year": 1872
 },

 {
   "title": "The Seagull",
   "author": "Anton Chekhov",
   "year": 1896
 }
]
JSON JavaScript ऑब्जेक्ट्सचे प्रतिनिधित्व करत असल्यामुळे, ते खालील JavaScript डेटा फॉरमॅटला सपोर्ट करते:
  • तार
  • संख्या;
  • वस्तू;
  • अॅरे;
  • बूलियन्स (खरे आणि खोटे);
  • निरर्थक.
JSON चे फायदे काय आहेत?
  1. मानवी-वाचनीय स्वरूप. तुमचा अंतिम वापरकर्ता मानव असल्यास हा एक स्पष्ट फायदा आहे. उदाहरणार्थ, समजा तुमच्या सर्व्हरकडे फ्लाइट्सच्या वेळापत्रकासह डेटाबेस आहे. एक मानवी ग्राहक, त्याच्या संगणकावर घरी बसून, वेब अनुप्रयोग वापरून या डेटाबेसमधून डेटाची विनंती करतो. तो समजू शकेल अशा फॉरमॅटमध्ये तुम्हाला डेटा प्रदान करणे आवश्यक असल्यामुळे, JSON हा एक उत्तम उपाय आहे.

  2. साधेपणा. हे अगदी सोपे आहे :) वर, आम्ही दोन JSON फाइल्सचे उदाहरण दिले. आणि जरी तुम्ही JavaScript बद्दल ऐकले नसेल (जावास्क्रिप्ट ऑब्जेक्ट्स सोडा), तुम्ही तिथे वर्णन केलेल्या ऑब्जेक्ट्सची क्रमवारी सहज समजू शकता.
    संपूर्ण JSON दस्तऐवजीकरणामध्ये दोन चित्रांसह वेबपृष्ठ असते.

  3. व्यापक वापर. JavaScript ही प्रमुख फ्रंट-एंड भाषा आहे आणि तिच्या स्वतःच्या आवश्यकता आहेत. JSON वापरणे आवश्यक आहे. म्हणून, मोठ्या संख्येने वेब सेवा JSON डेटा एक्सचेंज फॉरमॅट म्हणून वापरतात. प्रत्येक आधुनिक IDE JSON स्वरूपना (IntelliJ IDEA सह) समर्थन देते. JSON सह कार्य करण्यास सक्षम करण्यासाठी सर्व प्रकारच्या प्रोग्रामिंग भाषांसाठी लायब्ररींचा समूह लिहिला गेला आहे.

उदाहरणार्थ, तुम्ही आधीच जॅक्सन लायब्ररीसह एका धड्यात काम केले आहे जिथे आम्ही Java ऑब्जेक्ट्स JSON मध्ये अनुक्रमित करायला शिकलो. परंतु जॅक्सन व्यतिरिक्त, आमच्याकडे, उदाहरणार्थ, GSON , जी Google ची एक अतिशय सोयीस्कर लायब्ररी आहे.

YAML

सुरुवातीला, YAML "अद्याप आणखी एक मार्कअप भाषा" साठी उभा होता. जेव्हा ते सुरू झाले, तेव्हा ते XML चे प्रतिस्पर्धी म्हणून स्थानबद्ध होते. आता, कालांतराने, YAML चा अर्थ "YAML मार्कअप भाषा नाही" असा झाला आहे. ते नक्की काय आहे? चला कल्पना करूया की संगणक गेममधील पात्रांचे प्रतिनिधित्व करण्यासाठी आपल्याला 3 वर्ग तयार करावे लागतील: योद्धा, दादागिरी आणि चोर. त्यांच्यात खालील वैशिष्ट्ये असतील: सामर्थ्य, चपळता, सहनशक्ती, शस्त्रांचा संच. आमच्या वर्गांचे वर्णन करणारी YAML फाइल कशी दिसेल ते येथे आहे:

classes:
 class-1:
   title: Warrior
   power: 8
   agility: 4
   stamina: 7
   weapons:
     - sword
     - spear
    
 class-2:
   title: Mage
   power: 5
   agility: 7
   stamina: 5
   weapons:
     - magic staff

 class-3:
   title: Thief
   power: 6
   agility: 6
   stamina: 5
   weapons:
     - dagger
     - poison
YAML फाइलमध्ये झाडाची रचना असते: काही घटक इतरांमध्ये नेस्ट केलेले असतात. आम्ही विशिष्ट संख्येच्या मोकळ्या जागा वापरून घरटे नियंत्रित करू शकतो, ज्याचा वापर आम्ही प्रत्येक स्तर दर्शविण्यासाठी करतो. YAML स्वरूपाचे फायदे काय आहेत?
  1. मानवी वाचनीय. पुन्हा, वर्णनाशिवाय YAML फाईल पाहिल्यास, आपण वर्णन केलेल्या वस्तू सहजपणे समजू शकता. YAML इतकी मानवी वाचनीय आहे की वेबसाइट yaml.org ही एक सामान्य YAML फाइल आहे :)

  2. कॉम्पॅक्टनेस. फाईल स्ट्रक्चर स्पेस वापरून तयार केले आहे: कंस किंवा अवतरण चिन्ह वापरण्याची आवश्यकता नाही.

  3. प्रोग्रामिंग भाषांसाठी मूळ डेटा स्ट्रक्चर्ससाठी समर्थन. JSON आणि इतर अनेक फॉरमॅटवर YAML चा मोठा फायदा म्हणजे तो विविध डेटा स्ट्रक्चर्सला सपोर्ट करतो. ते समाविष्ट आहेत:

    • !!नकाशा
      मुख्य-मूल्य जोड्यांचा एक अक्रमित संच ज्यात डुप्लिकेट असू शकत नाहीत;

    • !!omap की
      -व्हॅल्यू जोड्यांचा क्रमबद्ध क्रम ज्यात डुप्लिकेट असू शकत नाहीत;

    • !!जोड्या:
      की-व्हॅल्यू जोड्यांचा क्रमबद्ध क्रम ज्यामध्ये डुप्लिकेट असू शकतात;

    • !!
      एकमेकांच्या समान नसलेल्या मूल्यांचा अक्रमित क्रम सेट करा;

    • !!seq
      अनियंत्रित मूल्यांचा क्रम;

    यापैकी काही रचना तुम्ही Java वरून ओळखू शकाल! :) याचा अर्थ प्रोग्रामिंग भाषांमधील विविध डेटा स्ट्रक्चर्स YAML मध्ये अनुक्रमित केल्या जाऊ शकतात.

  4. अँकर आणि उपनाम वापरण्याची क्षमता

    हे मार्कर तुम्हाला YAML फाइलमधील काही घटक ओळखण्याची परवानगी देतात आणि नंतर ते वारंवार येत असल्यास उर्वरित फाइलमध्ये त्याचा संदर्भ घ्या. & हे चिन्ह वापरून अँकर तयार केला जातो आणि उपनाव * वापरून तयार केला जातो .

    समजा आमच्याकडे लिओ टॉल्स्टॉयच्या पुस्तकांचे वर्णन करणारी फाइल आहे. प्रत्येक पुस्तकासाठी लेखकाचे नाव लिहू नये म्हणून, आम्ही फक्त लिओ अँकर तयार करतो आणि जेव्हा गरज असेल तेव्हा उपनाव वापरून त्याचा संदर्भ देतो:

    
    books:
     book-1:
       title: War and Peace
       author: &leo Leo Tolstoy
       year: 1869
    
     book-2:
       title: Anna Karenina
       author: *leo
       year: 1873
    
     book-3:
       title: Family Happiness
       author: *leo
       year: 1859
    

    जेव्हा ही फाईल पार्स केली जाते, तेव्हा "लिओ टॉल्स्टॉय" हे मूल्य योग्य ठिकाणी बदलले जाते जेथे आमचे उपनावे आहेत.

  5. YAML इतर फॉरमॅटमध्ये डेटा एम्बेड करू शकते. उदाहरणार्थ, JSON:

    
    books: [
            {
              "title": "War and Peace",
              "author": "Leo Tolstoy",
              "year": 1869
            },
    
            {
              "title": "Anna Karenina",
              "author": "Leo Tolstoy",
              "year": 1873
            },
    
            {
              "title": "Family Happiness",
              "author": "Leo Tolstoy",
              "year": 1859
            }
          ]
    

इतर क्रमिक स्वरूप

XML

हे स्वरूप टॅग ट्रीवर आधारित आहे.

<book>
   <title>Harry Potter and the Philosopher’s Stone</title>
   <author>J. K. Rowling</author>
   <year>1997</year>
</book>
प्रत्येक घटकामध्ये ओपनिंग आणि क्लोजिंग टॅग (<> आणि </>) असतात. प्रत्येक घटकामध्ये नेस्टेड घटक असू शकतात. XML हे एक सामान्य स्वरूप आहे जे JSON आणि YAML सारखेच चांगले आहे (जर आपण वास्तविक प्रकल्पांबद्दल बोलत आहोत). आमच्याकडे XML बद्दल वेगळा धडा आहे .

BSON (बायनरी JSON)

त्याच्या नावाप्रमाणे, BSON हे JSON सारखेच आहे, परंतु ते मानवी वाचनीय नाही आणि बायनरी डेटा वापरते. परिणामी, प्रतिमा आणि इतर संलग्नक संचयित आणि हस्तांतरित करण्यासाठी ते खूप चांगले आहे. याव्यतिरिक्त, BSON JSON मध्ये उपलब्ध नसलेल्या काही डेटा प्रकारांना समर्थन देते. उदाहरणार्थ, BSON फाईलमध्ये तारीख (मिलिसेकंद स्वरूपात) किंवा JavaScript कोडचा एक भाग देखील असू शकतो. लोकप्रिय MongoDB NoSQL डेटाबेस BSON फॉरमॅटमध्ये माहिती साठवतो.

स्थिती-आधारित प्रोटोकॉल

काही परिस्थितींमध्ये, आम्हाला पाठवलेल्या डेटाचे प्रमाण कमी करणे आवश्यक आहे (उदाहरणार्थ, आमच्याकडे भरपूर डेटा असल्यास आणि लोड कमी करणे आवश्यक असल्यास). या परिस्थितीत, आम्ही स्थिती-आधारित प्रोटोकॉल वापरू शकतो, म्हणजे, पॅरामीटर्सच्या नावांशिवाय पॅरामीटर मूल्ये पाठवू शकतो.

"Leo Tolstoy" | "Anna Karenina" | 1873
या फॉरमॅटमधील डेटा पूर्ण JSON फाइलपेक्षा कित्येक पट कमी जागा घेतो. अर्थात, इतर अनुक्रमिक स्वरूपे आहेत, परंतु तुम्हाला आत्ता ते सर्व माहित असणे आवश्यक नाही :) अनुप्रयोग विकसित करताना तुम्ही सध्याच्या उद्योग मानक स्वरूपांशी परिचित असाल आणि त्यांचे फायदे आणि ते एकापेक्षा कसे वेगळे आहेत हे लक्षात ठेवले तर चांगले आहे. दुसरा आणि यासह, आमचा धडा संपतो :) आज काही कार्ये सोडवण्यास विसरू नका! पुढच्या वेळे पर्यंत! :)
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION