హాయ్! సీరియలైజేషన్ గురించి మాట్లాడుకుందాం. మేము ఇప్పటికే సీరియలైజేషన్‌పై పాఠాలను కలిగి ఉన్నామని మీకు బహుశా గుర్తుండే ఉంటుంది. మరియు మేము చేసాము :) ఇక్కడ మొదటిది మరియు ఇక్కడ రెండవది. సీరియలైజేషన్ ఎలా పని చేస్తుందో, సీరియలైజేషన్ ఎందుకు అవసరమో మరియు సీరియలైజేషన్ కోసం జావాలో ఏ సాధనాలు ఉన్నాయో మీకు బాగా గుర్తులేకపోతే, మీరు ఈ పాఠాలను చదవవచ్చు. నేటి పాఠం సిద్ధాంతం గురించి ఉంటుంది. మేము సీరియలైజేషన్ ఫార్మాట్‌లను నిశితంగా పరిశీలించబోతున్నాము. మొదట, సీరియలైజేషన్ అంటే ఏమిటో గుర్తుచేసుకుందాం. సీరియలైజేషన్ అనేది ఒక వస్తువు యొక్క స్థితిని బైట్‌ల క్రమంలో నిల్వ చేసే ప్రక్రియ. డీసీరియలైజేషన్ అనేది ఈ బైట్‌ల నుండి ఒక వస్తువును పునరుద్ధరించే ప్రక్రియ. జావా ఆబ్జెక్ట్‌ను సీరియల్‌గా మార్చవచ్చు మరియు నెట్‌వర్క్ ద్వారా పంపవచ్చు (ఉదాహరణకు, మరొక కంప్యూటర్‌కు). బైట్‌ల క్రమాన్ని వివిధ ఫార్మాట్‌లలో సూచించవచ్చు. మీరు సాధారణ కంప్యూటర్ వినియోగం నుండి ఈ భావనతో సుపరిచితులు. ఉదాహరణకు, ఎలక్ట్రానిక్ పుస్తకాన్ని (లేదా ఒక సాధారణ టెక్స్ట్ డాక్యుమెంట్) వివిధ ఫార్మాట్‌ల సమూహంలో వ్రాయవచ్చు:
  • docx (మైక్రోసాఫ్ట్ వర్డ్ ఫార్మాట్);
  • pdf (Adobe ఫార్మాట్);
  • mobi (సాధారణంగా Amazon Kindle పరికరాలలో ఉపయోగిస్తారు);
  • మరియు మరిన్ని (ePub, djvu, fb2, మొదలైనవి).
ప్రతి సందర్భంలోనూ, లక్ష్యం ఒకేలా కనిపిస్తుంది: వచనాన్ని మానవులు చదవగలిగే రూపంలో ప్రదర్శించండి. అయినప్పటికీ, ప్రజలు చాలా విభిన్న ఫార్మాట్‌లను కనుగొన్నారు. వారి పని వివరాలలోకి వెళ్లకుండా, వారికి మంచి కారణాలు ఉన్నాయని మనం భావించవచ్చు. మిగిలిన వాటితో పోలిస్తే ప్రతి ఫార్మాట్‌కు దాని స్వంత ప్రయోజనాలు మరియు అప్రయోజనాలు ఉన్నాయి. ఇదే సూత్రాలను అనుసరించి వివిధ సీరియలైజేషన్ ఫార్మాట్‌లు సృష్టించబడి ఉండవచ్చా? అద్భుతమైన అంచనా, విద్యార్థి! :) అది సరిగ్గా ఉంది. వాస్తవమేమిటంటే, వైర్ ద్వారా (లేదా వైర్‌లెస్‌గా) డేటాను పంపడం అనేది గమ్మత్తైన వ్యాపారం మరియు ఇది అనేక అంశాలను కలిగి ఉంటుంది. డేటాను ఎవరు పంపుతున్నారు? ఎక్కడికి? ఏ వాల్యూమ్? గ్రహీత మానవులా లేదా కంప్యూటర్‌గా ఉంటారా (అంటే డేటా మానవులు చదవగలిగేలా ఉండాలి)? ఏ పరికరం డేటాను చదువుతుంది? సహజంగానే, ఈ పరిస్థితులు భిన్నంగా ఉంటాయి. 500 KB చిత్రాన్ని ఒక స్మార్ట్‌ఫోన్ నుండి మరొక స్మార్ట్‌ఫోన్‌కి పంపడం ఒక విషయం. మరియు మేము 500 టెరాబైట్‌ల వ్యాపార డేటా గురించి మాట్లాడుతున్నట్లయితే ఇది పూర్తిగా భిన్నమైన విషయం, అది సాధ్యమైనంత త్వరగా కుదించబడి, పంపబడాలి. ప్రధాన సీరియలైజేషన్ ఫార్మాట్‌లతో పరిచయం పొందండి మరియు వాటిలో ప్రతి దాని ప్రయోజనాలు మరియు అప్రయోజనాలను పరిశీలిద్దాం!

JSON

జావాస్క్రిప్ట్ ఆబ్జెక్ట్ సంజ్ఞామానం. ఈ ఫార్మాట్ గురించి మీకు ఇప్పటికే కొంచెం తెలుసు! మేము ఈ పాఠంలో దాని గురించి మాట్లాడాము మరియు మేము ఇక్కడే JSONలో సీరియలైజేషన్‌ను కవర్ చేసాము . ఇది ఒక కారణం కోసం దాని పేరు వచ్చింది. JSONకి మార్చబడిన జావా వస్తువులు వాస్తవానికి జావాస్క్రిప్ట్‌లోని ఆబ్జెక్ట్‌ల వలె కనిపిస్తాయి. మా వస్తువును అర్థం చేసుకోవడానికి మీరు జావాస్క్రిప్ట్ తెలుసుకోవాల్సిన అవసరం లేదు:

{
   "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 జావాస్క్రిప్ట్ ఆబ్జెక్ట్‌లను సూచిస్తుంది కాబట్టి, ఇది క్రింది జావాస్క్రిప్ట్ డేటా ఫార్మాట్‌లకు మద్దతు ఇస్తుంది:
  • తీగలు;
  • సంఖ్యలు;
  • వస్తువులు;
  • శ్రేణులు;
  • బూలియన్స్ (నిజం మరియు తప్పు);
  • శూన్య.
JSON యొక్క ప్రయోజనాలు ఏమిటి?
  1. మనుషులు చదవగలిగే ఫార్మాట్. మీ తుది వినియోగదారు మానవుడైతే ఇది స్పష్టమైన ప్రయోజనం. ఉదాహరణకు, మీ సర్వర్‌లో విమానాల షెడ్యూల్‌తో కూడిన డేటాబేస్ ఉందని అనుకుందాం. ఒక మానవ కస్టమర్, ఇంట్లో తన కంప్యూటర్ వద్ద కూర్చొని, వెబ్ అప్లికేషన్‌ని ఉపయోగించి ఈ డేటాబేస్ నుండి డేటాను అభ్యర్థిస్తారు. అతను అర్థం చేసుకోగలిగే ఫార్మాట్‌లో మీరు డేటాను అందించాలి కాబట్టి, JSON ఒక గొప్ప పరిష్కారం.

  2. సరళత. ఇది చాలా సులభం :) పైన, మేము రెండు JSON ఫైల్‌ల ఉదాహరణను అందించాము. మరియు మీరు జావాస్క్రిప్ట్ గురించి వినకపోయినా (జావాస్క్రిప్ట్ ఆబ్జెక్ట్‌లను విడదీయండి), అక్కడ వివరించిన వస్తువులను మీరు సులభంగా అర్థం చేసుకోవచ్చు.
    JSON డాక్యుమెంటేషన్ మొత్తం రెండు చిత్రాలతో కూడిన వెబ్‌పేజీని కలిగి ఉంటుంది.

  3. విస్తృత వినియోగం. JavaScript అనేది ఆధిపత్య ఫ్రంట్-ఎండ్ భాష, మరియు దీనికి దాని స్వంత అవసరాలు ఉన్నాయి. JSONని ఉపయోగించడం తప్పనిసరి. అందువల్ల, భారీ సంఖ్యలో వెబ్ సేవలు JSONని డేటా మార్పిడి ఆకృతిగా ఉపయోగిస్తాయి. ప్రతి ఆధునిక IDE JSON ఆకృతికి (IntelliJ IDEAతో సహా) మద్దతు ఇస్తుంది. JSONతో పని చేయడానికి అన్ని రకాల ప్రోగ్రామింగ్ భాషల కోసం లైబ్రరీల సమూహం వ్రాయబడింది.

ఉదాహరణకు, మీరు ఇప్పటికే జాక్సన్ లైబ్రరీతో కలిసి జావా ఆబ్జెక్ట్‌లను 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.org వెబ్‌సైట్ ఒక సాధారణ YAML ఫైల్ కాబట్టి YAML మనుషులు చదవగలిగేది :)

  2. కాంపాక్ట్నెస్. ఫైల్ నిర్మాణం ఖాళీలను ఉపయోగించి సృష్టించబడుతుంది: బ్రాకెట్‌లు లేదా కొటేషన్ గుర్తులను ఉపయోగించాల్సిన అవసరం లేదు.

  3. ప్రోగ్రామింగ్ భాషల కోసం స్థానిక డేటా నిర్మాణాలకు మద్దతు. JSON మరియు అనేక ఇతర ఫార్మాట్‌ల కంటే YAML యొక్క భారీ ప్రయోజనం ఏమిటంటే ఇది వివిధ డేటా నిర్మాణాలకు మద్దతు ఇస్తుంది. వాటిలో ఉన్నవి:

    • !!మ్యాప్
      నకిలీలను కలిగి ఉండని కీ-విలువ జతల క్రమం లేని సెట్;

    • !!omap
      నకిలీలను కలిగి ఉండని కీ-విలువ జతల యొక్క ఆర్డర్ సీక్వెన్స్;

    • !!పెయిర్లు:
      డూప్లికేట్‌లను కలిగి ఉండే కీ-విలువ జతల యొక్క ఆర్డర్ సీక్వెన్స్;

    • !!సెట్
      ఒకదానికొకటి సమానంగా లేని విలువల క్రమం లేని క్రమం;

    • !!seq
      ఏకపక్ష విలువల క్రమం;

    మీరు జావా నుండి ఈ నిర్మాణాలలో కొన్నింటిని గుర్తిస్తారు! :) దీనర్థం ప్రోగ్రామింగ్ లాంగ్వేజ్‌ల నుండి వివిధ డేటా స్ట్రక్చర్‌లు 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ని పోలి ఉంటుంది, కానీ ఇది మానవులకు చదవదగినది కాదు మరియు బైనరీ డేటాను ఉపయోగిస్తుంది. ఫలితంగా, చిత్రాలను మరియు ఇతర జోడింపులను నిల్వ చేయడానికి మరియు బదిలీ చేయడానికి ఇది చాలా మంచిది. అదనంగా, JSONలో అందుబాటులో లేని కొన్ని డేటా రకాలకు BSON మద్దతు ఇస్తుంది. ఉదాహరణకు, BSON ఫైల్‌లో తేదీ (మిల్లీసెకండ్ ఫార్మాట్‌లో) లేదా జావాస్క్రిప్ట్ కోడ్ యొక్క భాగాన్ని కూడా చేర్చవచ్చు. ప్రసిద్ధ MongoDB NoSQL డేటాబేస్ BSON ఆకృతిలో సమాచారాన్ని నిల్వ చేస్తుంది.

స్థానం ఆధారిత ప్రోటోకాల్

కొన్ని సందర్భాల్లో, మేము పంపిన డేటా మొత్తాన్ని తీవ్రంగా తగ్గించాలి (ఉదాహరణకు, మనకు చాలా డేటా ఉంటే మరియు లోడ్ తగ్గించాల్సిన అవసరం ఉంటే). ఈ పరిస్థితిలో, మేము స్థానం-ఆధారిత ప్రోటోకాల్‌ను ఉపయోగించవచ్చు, అంటే, పారామీటర్ల పేర్లు లేకుండా పారామీటర్ విలువలను పంపవచ్చు.

"Leo Tolstoy" | "Anna Karenina" | 1873
ఈ ఫార్మాట్‌లోని డేటా పూర్తి JSON ఫైల్ కంటే చాలా రెట్లు తక్కువ స్థలాన్ని తీసుకుంటుంది. వాస్తవానికి, ఇతర సీరియలైజేషన్ ఫార్మాట్‌లు ఉన్నాయి, కానీ మీరు ఇప్పుడు వాటన్నింటినీ తెలుసుకోవలసిన అవసరం లేదు :) అప్లికేషన్‌లను అభివృద్ధి చేసేటప్పుడు మీరు ప్రస్తుత పరిశ్రమ ప్రామాణిక ఫార్మాట్‌లతో సుపరిచితులై ఉంటే మరియు వాటి ప్రయోజనాలను మరియు అవి ఒకదాని నుండి ఎలా విభిన్నంగా ఉన్నాయో గుర్తుంచుకోండి. మరొకటి. మరియు దీనితో, మా పాఠం ముగుస్తుంది :) ఈ రోజు కొన్ని పనులను పరిష్కరించడం మర్చిపోవద్దు! మరల సారి వరకు! :)