CodeGym /جاوا بلاگ /Random-UR /جاوا سیریلائزیشن فارمیٹس
John Squirrels
سطح
San Francisco

جاوا سیریلائزیشن فارمیٹس

گروپ میں شائع ہوا۔
ہائے! آئیے سیریلائزیشن کے بارے میں بات کرتے ہیں۔ آپ کو شاید یاد ہوگا کہ ہم نے سیریلائزیشن کے بارے میں پہلے ہی سبق حاصل کیے ہیں۔ اور اسی طرح ہم نے کیا :) یہاں پہلا ہے اور یہاں دوسرا ہے ۔ اگر آپ کو اچھی طرح یاد نہیں ہے کہ سیریلائزیشن کیسے کام کرتی ہے، سیریلائزیشن کی ضرورت کیوں ہے، اور سیریلائزیشن کے لیے جاوا کے پاس کون سے ٹولز ہیں، آپ ان اسباق کو چلا سکتے ہیں۔ آج کا سبق تھیوری کے بارے میں ہوگا۔ ہم سیریلائزیشن فارمیٹس پر گہری نظر ڈالیں گے۔ پہلے، آئیے یاد کرتے ہیں کہ سیریلائزیشن کیا ہے۔ سیریلائزیشن بائٹس کی ترتیب میں کسی چیز کی حالت کو ذخیرہ کرنے کا عمل ہے۔ ڈیسیریلائزیشن ان بائٹس سے کسی چیز کو بحال کرنے کا عمل ہے۔ جاوا آبجیکٹ کو سیریلائز کیا جا سکتا ہے اور نیٹ ورک پر بھیجا جا سکتا ہے (مثال کے طور پر، دوسرے کمپیوٹر پر)۔ بائٹس کی ترتیب کو مختلف شکلوں میں پیش کیا جا سکتا ہے۔ آپ کمپیوٹر کے عام استعمال سے اس تصور سے واقف ہیں۔ مثال کے طور پر، ایک الیکٹرانک کتاب (یا ایک سادہ ٹیکسٹ دستاویز) مختلف فارمیٹس کے ایک گروپ میں لکھی جا سکتی ہے:
  • docx (مائیکروسافٹ ورڈ فارمیٹ)؛
  • پی ڈی ایف (ایڈوب فارمیٹ)؛
  • 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 JavaScript اشیاء کی نمائندگی کرتا ہے، یہ درج ذیل JavaScript ڈیٹا فارمیٹس کو سپورٹ کرتا ہے:
  • ڈور
  • نمبرز
  • اشیاء
  • صفوں
  • بولین (سچ اور غلط)؛
  • خالی.
JSON کے کیا فوائد ہیں؟
  1. انسانی پڑھنے کے قابل فارمیٹ۔ اگر آپ کا آخری صارف انسان ہے تو یہ ایک واضح فائدہ ہے۔ مثال کے طور پر، فرض کریں کہ آپ کے سرور کے پاس پروازوں کے شیڈول کے ساتھ ڈیٹا بیس ہے۔ ایک انسانی صارف، گھر میں اپنے کمپیوٹر پر بیٹھا، ویب ایپلیکیشن کا استعمال کرتے ہوئے اس ڈیٹا بیس سے ڈیٹا کی درخواست کرتا ہے۔ چونکہ آپ کو اس فارمیٹ میں ڈیٹا فراہم کرنے کی ضرورت ہے جسے وہ سمجھ سکے، JSON ایک بہترین حل ہے۔

  2. سادگی۔ یہ بہت آسان ہے :) اوپر، ہم نے دو JSON فائلوں کی مثال دی ہے۔ اور یہاں تک کہ اگر آپ نے JavaScript کے بارے میں نہیں سنا ہے (جاوا اسکرپٹ اشیاء کو چھوڑ دیں)، تو آپ وہاں بیان کردہ اشیاء کی ترتیب کو آسانی سے سمجھ سکتے ہیں۔
    JSON کی پوری دستاویز ایک ویب صفحہ پر مشتمل ہے جس میں کچھ تصاویر ہیں۔

  3. وسیع پیمانے پر استعمال۔ JavaScript غالب فرنٹ اینڈ زبان ہے، اور اس کی اپنی ضروریات ہیں۔ JSON کا استعمال ضروری ہے۔ لہذا، ویب سروسز کی ایک بڑی تعداد JSON کو ڈیٹا ایکسچینج فارمیٹ کے طور پر استعمال کرتی ہے۔ ہر جدید IDE JSON فارمیٹ (بشمول IntelliJ IDEA) کو سپورٹ کرتا ہے۔ JSON کے ساتھ کام کرنے کے لیے تمام قسم کی پروگرامنگ زبانوں کے لیے لائبریریوں کا ایک گروپ لکھا گیا ہے۔

مثال کے طور پر، آپ پہلے ہی جیکسن لائبریری کے ساتھ ایک سبق میں کام کر چکے ہیں جہاں ہم نے جاوا اشیاء کو JSON میں سیریلائز کرنا سیکھا۔ لیکن جیکسن کے علاوہ، ہمارے پاس ہے، مثال کے طور پر، GSON ، جو کہ گوگل کی طرف سے ایک بہت ہی آسان لائبریری ہے۔

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
      صوابدیدی اقدار کا ایک سلسلہ؛

    آپ جاوا سے ان میں سے کچھ ڈھانچے کو پہچان لیں گے! :) اس کا مطلب یہ ہے کہ پروگرامنگ زبانوں سے مختلف ڈیٹا ڈھانچے کو 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 فائل میں تاریخ (ملی سیکنڈ کی شکل میں) یا جاوا اسکرپٹ کوڈ کا ایک ٹکڑا بھی شامل ہو سکتا ہے۔ مقبول MongoDB NoSQL ڈیٹا بیس BSON فارمیٹ میں معلومات کو محفوظ کرتا ہے۔

پوزیشن پر مبنی پروٹوکول

کچھ حالات میں، ہمیں بھیجے گئے ڈیٹا کی مقدار کو کافی حد تک کم کرنے کی ضرورت ہے (مثال کے طور پر، اگر ہمارے پاس بہت زیادہ ڈیٹا ہے اور بوجھ کو کم کرنے کی ضرورت ہے)۔ اس صورت حال میں، ہم پوزیشن پر مبنی پروٹوکول استعمال کر سکتے ہیں، یعنی پیرامیٹر کے ناموں کے بغیر پیرامیٹر ویلیوز بھیجیں۔
"Leo Tolstoy" | "Anna Karenina" | 1873
اس فارمیٹ میں ڈیٹا مکمل JSON فائل سے کئی گنا کم جگہ لیتا ہے۔ بلاشبہ، دوسرے سیریلائزیشن فارمیٹس ہیں، لیکن آپ کو ابھی ان سب کو جاننے کی ضرورت نہیں ہے :) یہ اچھا ہے اگر آپ ایپلی کیشنز تیار کرتے وقت صنعت کے موجودہ معیاری فارمیٹس سے واقف ہوں، اور ان کے فوائد کو یاد رکھیں اور یہ کہ وہ ایک سے کس طرح مختلف ہیں۔ ایک اور اور اس کے ساتھ ہی ہمارا سبق ختم ہو جاتا ہے :) آج ایک دو کام حل کرنا نہ بھولیں! اگلے وقت تک! :)
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION