JavaRush /جاوا بلاگ /Random-UR /جاوا میں سیریلائزیشن فارمیٹس

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

گروپ میں شائع ہوا۔
ہیلو! آئیے جاوا میں سیریلائزیشن کے بارے میں بات کرتے ہیں۔ آپ کو شاید یاد ہوگا کہ ہمارے پاس سیریلائزیشن پر پہلے ہی لیکچر ہو چکے تھے۔ یہ ٹھیک ہے :) یہاں پہلا ہے اور یہ رہا دوسرا اگر آپ کو اچھی طرح یاد نہیں ہے کہ سیریلائزیشن کیسے کام کرتی ہے، اس کی ضرورت کیوں ہے، اور جاوا میں اس کے لیے کون سے ٹولز موجود ہیں، آپ ان لیکچرز کو دیکھ سکتے ہیں۔ آج کا لیکچر نظریاتی ہوگا، اور اس میں ہم سیریلائزیشن فارمیٹس پر گہری نظر ڈالیں گے۔ جاوا میں سیریلائزیشن فارمیٹس - 1سب سے پہلے، یاد رکھیں کہ سیریلائزیشن کیا ہے. سیریلائزیشن کسی چیز کی حالت کو بائٹس کی ترتیب میں ذخیرہ کرنے کا عمل ہے۔ ڈیسیریلائزیشن ان بائٹس سے کسی چیز کو دوبارہ تشکیل دینے کا عمل ہے۔ جاوا آبجیکٹ کو سیریلائز کیا جا سکتا ہے اور نیٹ ورک پر منتقل کیا جا سکتا ہے (مثال کے طور پر، دوسرے کمپیوٹر پر)۔ لہذا، بائٹس کی اسی ترتیب کو مختلف شکلوں میں پیش کیا جا سکتا ہے۔ آپ روزمرہ کمپیوٹر کے استعمال سے اس سے واقف ہیں۔ مثال کے طور پر، آپ جو ای بک (یا سادہ ٹیکسٹ دستاویز) پڑھ رہے ہیں اسے مختلف فارمیٹس کے ایک گروپ میں لکھا جا سکتا ہے:
  • docx (مائیکروسافٹ ورڈ فارمیٹ)؛
  • پی ڈی ایف (ایڈوب فارمیٹ)؛
  • mobi (عام طور پر Amazon Kindle آلات میں استعمال کیا جاتا ہے)؛
  • اور بہت کچھ (ePub, djvu, fb2...)
ایسا لگتا ہے کہ کام ایک ہی ہے: متن کو انسانی پڑھنے کے قابل شکل میں پیش کرنا۔ لیکن لوگوں نے فارمیٹس کا ایک پورا گروپ ایجاد کیا ہے۔ یہاں تک کہ ان کے کام کی تفصیلات میں جانے کے بغیر، ہم فرض کر سکتے ہیں کہ یہ ایک وجہ سے کیا گیا تھا. ان میں سے ہر ایک کے اپنے فوائد اور نقصانات دوسروں کے مقابلے میں ہیں۔ ہوسکتا ہے کہ سیریلائزیشن فارمیٹس اسی اصول کے مطابق بنائے گئے ہوں؟ ٹھیک ہے، اچھا اندازہ، طالب علم! :) جس طرح یہ ہے. حقیقت یہ ہے کہ فاصلے پر ڈیٹا منتقل کرنا ایک نازک چیز ہے، اور اس میں بہت سے عوامل ہیں۔ ڈیٹا کون منتقل کرتا ہے؟ کہاں؟ کیا حجم؟ کیا وصول کرنے والا فریق ایک شخص ہو گا یا مشین (یعنی ڈیٹا کو انسانی پڑھنے کے قابل ہونا چاہیے)؟ کس قسم کا آلہ ڈیٹا پڑھے گا؟ ظاہر ہے، حالات مختلف ہیں۔ یہ ایک چیز ہے جب آپ کو ایک اسمارٹ فون سے دوسرے اسمارٹ فون میں 500KB کی تصویر منتقل کرنے کی ضرورت ہوتی ہے۔ اور یہ بالکل مختلف ہے جب ہم 500 ٹیرا بائٹس کے کاروباری ڈیٹا کے بارے میں بات کر رہے ہیں جسے ممکنہ حد تک مؤثر طریقے سے کمپریس کرنے کی ضرورت ہے اور اسی وقت جلد سے جلد منتقلی کی ضرورت ہے۔ آئیے مرکزی سیریلائزیشن فارمیٹس پر ایک نظر ڈالتے ہیں اور ہر ایک کے فوائد اور نقصانات کو دیکھتے ہیں!

JSON

جاوا اسکرپٹ آبجیکٹ نوٹیشن۔ آپ پہلے سے ہی اس سے قدرے واقف ہیں! ہم نے اس لیکچر میں اس کے بارے میں بات کی، اور ہم نے یہاں JSON میں سیریلائزیشن کو دیکھا ۔ اس کا نام ایک وجہ سے ملا۔ JSON میں تبدیل شدہ جاوا آبجیکٹ دراصل جاوا اسکرپٹ آبجیکٹ کی طرح نظر آتے ہیں۔ ہمارے اعتراض کے معنی کو سمجھنے کے لیے آپ کو جاوا اسکرپٹ جاننے کی ضرورت نہیں ہے:
{
   "title": "Война и мир",
   "author": "Лев Толстой",
   "year": 1869
}
کسی ایک چیز کو پاس کرنا ضروری نہیں ہے۔ JSON میں اشیاء کی ایک صف بھی شامل ہو سکتی ہے:
[
 {
   "title": "Война и мир",
   "author": "Лев Толстой",
   "year": 1869
 },

 {
   "title": "Бесы",
   "author": "Федор Достоевский",
   "year": 1872
 },

 {
   "title": "Чайка",
   "author": "Антон Чехов",
   "year": 1896
 }
]
چونکہ JSON ایک JavaScript آبجیکٹ ہے، اس لیے یہ درج ذیل JavaScript ڈیٹا فارمیٹس کو سپورٹ کرتا ہے:
  • ڈور
  • نمبر (نمبر)؛
  • اشیاء (آبجیکٹ)؛
  • arrays (سرنی)؛
  • بولین اقدار (سچ اور غلط)؛
  • خالی.
JSON کے کیا فوائد ہیں؟
  1. انسانی پڑھنے کے قابل فارمیٹ۔ اگر آپ کا آخری صارف انسان ہے تو یہ ایک واضح فائدہ ہے۔ مثال کے طور پر، آپ کا سرور پرواز کے نظام الاوقات کے ساتھ ایک ڈیٹا بیس اسٹور کرتا ہے۔ ایک انسانی کلائنٹ کمپیوٹر پر گھر بیٹھے ویب ایپلیکیشن کا استعمال کرتے ہوئے اس ڈیٹا بیس سے ڈیٹا کی درخواست کرتا ہے۔ چونکہ آپ کو اس فارمیٹ میں ڈیٹا فراہم کرنے کی ضرورت ہے جسے وہ سمجھ سکے، JSON ایک بہترین حل ہے۔

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

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

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

YAML

اپنے وجود کے آغاز میں، یہ ایک اور مارک اپ لینگویج - "ایک اور مارک اپ لینگویج" کے لیے کھڑا تھا۔ اس وقت اسے XML کے مدمقابل کے طور پر رکھا گیا تھا۔ اب، وقت گزرنے کے بعد، اس کا مطلب ہے "YAML Ain't Markup Language" ("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
      کلید کی ترتیب شدہ ترتیب: قدر کے جوڑے جس میں نقل کا کوئی امکان نہیں ہے۔

    • !!جوڑے:
      کلید کی ترتیب شدہ ترتیب: نقل کے امکان کے ساتھ قدر کے جوڑے؛

    • اقدار کی ایک
      غیر ترتیب شدہ ترتیب جو ایک دوسرے کے برابر نہیں ہیں۔


    • صوابدیدی اقدار کی ترتیب

    ان میں سے کچھ ڈھانچے جاوا سے آپ کو واقف ہوں گے! :) اس فیچر کی بدولت آپ مختلف ڈیٹا سٹرکچرز کو پروگرامنگ لینگویجز سے 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

    جب ہم اس فائل کو کسی پارسر کے ساتھ پڑھتے ہیں، تو قدر "Leo Tolstoy" کو ہمارے عرف کی جگہ صحیح جگہوں پر بدل دیا جائے گا۔

  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)

جیسا کہ اس کے نام سے پتہ چلتا ہے، یہ JSON سے بہت ملتا جلتا ہے، لیکن یہ انسانی پڑھنے کے قابل نہیں ہے اور بائنری فارمیٹ میں ڈیٹا پر کام کرتا ہے۔ یہ تصاویر اور دیگر منسلکات کو ذخیرہ کرنے اور منتقل کرنے کے لیے بہت آسان بناتا ہے۔ اس کے علاوہ، BSON کچھ ڈیٹا کی اقسام کو سپورٹ کرتا ہے جو JSON میں دستیاب نہیں ہیں۔ مثال کے طور پر، آپ BSON فائل میں تاریخ (ملی سیکنڈ کی شکل میں) یا جاوا اسکرپٹ کوڈ کا ایک ٹکڑا بھی لکھ سکتے ہیں۔ مقبول NoSQL ڈیٹا بیس MongoDB BSON فارمیٹ میں معلومات کو اسٹور کرتا ہے۔

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

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