مرحباً بك سامي,
هي إختصار ل JavaScript Object Notation وتعني ترميز الكائنات بإستخدام الجافاسكريبت ,وهي عبارة عن صيغة أو شكل سهل متسلسل لنقل البيانات ,سهلة القراءة للأشخاص ويمكن إستيعابها وسهلة الفهم للحاسوب. وهي صيغة مستقلة من اللغة نفسها ويمكن إستخدامها في في العديد من لغات البرمجة وتعمل كبديل لل XML. ويتم تمثيلها بين قوسين {} تحتوي على الاسم الخاص بالبيانات والقيمة الخاصة به وتفصل البيانات عن طريق فاصلة كما يلي:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumbers": [
{ "type": "home", "number": "212 555-1234" },
{ "type": "fax", "number": "646 555-4567" }
]
}
حيث أن firstName هي اسم البيانات أو حامل القيمة و John هي القيمة.
اختصار ل Ain’t Markup Language وتعني ليست لغة ترميز وهي سلسلة من البيانات القابلة للقراءة لدى البشر أو يمكن فهمها يستخدم في ملفات التكوين والتطبيقات التي يتم فيها تخزين ونقل البيانات. يتم إستخدامها لنفس الهدف الخاص ب XML ولكنها تحتوي على بنية بسيطة وطريقة بنيتها متمثلة أو مأخوذة من العديد من لغات البرمجة الأخرى ويمكن إستخدامها في أي لغة تحتاج لتخزين بيانات.
ومثال لشكل بنيتها:
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum:
name: httpd
state: latest
- name: write the apache config file
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running
service:
name: httpd
state: started
handlers:
- name: restart apache
service:
name: httpd
state: restarted
فهي قريبة من تمثل لغة بايثون للكود. حيث أن مثلا tasks تماثل array أو مصفوفة تحتوي على عدة بيانات والتي بداخلها name وهو اسم المعلومة و ما بعد : هي البيانات لل name وبنفس التنسيق لباقي البيانات.
اختصار ل eXtensible Markup Language وتعني لغة الترميز القابلة للتمدد وتنتمي للغات الترميز وهي لغة ترميز عامة تستخدم لغرض نقل البيانات عبر الإنترنت بطريقة مرتبة ومنظمة ,تستطيع وصف العديد من أنواع البيانات وتستطيع التعامل مع الكثير من لغات البرمجة. ومعنى قابلة للتوسع أنه يمكنك تعريف شكل البيانات بالطريقة التي تريد وإنشاء وسوم خاصة حسب الحاجة ليس كلغة الترميز ال HTML حيث أنه هنالك وسوم محددة معرفة من قبلها تستطيع التعرف عليها فحسب بعكس ال XML. ومثال عليها:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
حيث أنها تبدأ بالمعرف وهكذا يتم التعرف على أن هذا الملف هو ملف يحتوي بيانات XML و note هي حاوية لبيانات والتي تحتوي على العناصر منها to ,from ,body ويتم إغلاق كل وسم وبداخلها تحتوي على البيانات.
من الصعب تحديد الإختلافات بين المصطلحات الثلاثة لأنه إستخدامها متقارب ولكن يمكن التفريق بينهم حسب لغة البرمجة المستخدمة في التطبيق الخاص بك ففي حال:
كنت تستخدم JavaScript ف JSON هي الخيار الأمثل.
أما في حال كنت تستخدم لغة JAVA ف XML الخيار الأمثل.
وفي حال كنت تستخدم Python ف YAML أفضل.
ولكن الكلام أعلاه ليس مقياس ففي حال كنت تستخدم لغة جافا ولكنك تستقبل بيانات عن طريق JSON أو YAML فإستخدام واحد منهما يكون أفضل وأيضاً التفضيل هنا فقط لأن اللغة تتعامل مع ناقلات البيانات هذه بطريقة مباشرة بدون إستخدام مكتبات خارجية ,فكما أسلفت في التعريفات فيمكن إستخدام أي منها لنقل البيانات. يمكن القول أن التعامل مع JSON ربما يكون الأسهل والأخف في نقل البيانات عبر الشبكة لذا تكون منتشرة أكثر ولكن للبيانات الكبيرة ف XML الخيار الأمثل أما YAML فهي أقل إنتشاراً. في حال كنت تريد التعديل على البيانات من قبل الإنسان ف XML هي الأفضل في ذلك وفي حال كنت لا تهتم بذلك فإستخدام JSON أفضل هنا.
تحياتي.