सितंबर 2017 में लिखा गया लेख
JSON दुनिया भर में ले लिया है। यदि आज कोई भी दो एप्लिकेशन इंटरनेट के माध्यम से एक-दूसरे के साथ संवाद करते हैं, तो सबसे अधिक संभावना है कि वे JSON का उपयोग कर रहे हैं। मानक को सभी प्रमुख खिलाड़ियों द्वारा स्वीकार किया जाता है: दस सबसे लोकप्रिय वेब एपीआई, जो मुख्य रूप से Google, फेसबुक और ट्विटर जैसी बड़ी कंपनियों द्वारा विकसित किए जाते हैं,
केवल एक एपीआई XML में डेटा स्थानांतरित करता है, न कि JSON। उदाहरण के लिए, ट्विटर ने 2013 तक XML का समर्थन किया, जब उसने JSON में विशेष रूप से एपीआई का एक नया संस्करण जारी किया। अन्य डेवलपर्स के बीच, JSON भी लोकप्रिय है: स्टैक ओवरफ्लो के अनुसार,
JSON के बारे में किसी भी अन्य डेटा एक्सचेंज प्रारूप से अधिक प्रश्न पूछे जाते हैं ।
XML अभी भी जीवित है और बहुत उपयोग किया है। उदाहरण के लिए, वेब प्रारूप में एसवीजी, आरएसएस और एटम। अगर एंड्रॉइड एप्लिकेशन के लेखक यह घोषित करना चाहते हैं कि उन्हें उपयोगकर्ता से अनुमति की आवश्यकता है, तो वह XML में लिखे गए एप्लिकेशन मैनिफ़ेस्ट में ऐसा करता है। और XML एकमात्र JSON विकल्प नहीं है: कुछ डेवलपर्स Google के YAML या प्रोटोकॉल बफ़र्स का विकल्प चुनते हैं। लेकिन ये प्रारूप JSON के रूप में लोकप्रिय होने से बहुत दूर हैं, जो अब इंटरनेट पर कार्यक्रमों के बीच डेटा के आदान-प्रदान के लिए लगभग वास्तविक मानक बन गया है।
JSON का प्रभुत्व अद्भुत है, 2005 के बाद से हर कोई "अतुल्यकालिक जावास्क्रिप्ट और JSON" के बजाय "अतुल्यकालिक जावास्क्रिप्ट और XML" की क्षमता पर चर्चा कर रहा था। बेशक, एक संभावना है कि यह दो प्रारूपों की सापेक्ष लोकप्रियता के बारे में कुछ नहीं कहता है, बस AJAX को एजेएजे की तुलना में अधिक आकर्षक संक्षिप्त नाम लग रहा था। लेकिन हालाँकि 2005 में कुछ लोगों ने पहले से ही XML के बजाय JSON का उपयोग किया था (कुछ वास्तव में), फिर भी आपको आश्चर्य है कि XML इतनी तेज़ी से कैसे गिर सकता है कि एक दशक बाद, वाक्यांश "अतुल्यकालिक जावास्क्रिप्ट और XML" एक विडंबना मुस्कराहट का कारण बनता है। इस दशक के दौरान क्या हुआ था? JSON ने XML को कई अनुप्रयोगों में कैसे बदल दिया है? और इस डेटा प्रारूप का आविष्कार किसने किया, अब दुनिया भर के इंजीनियर और सिस्टम किस पर निर्भर हैं?
JSON का जन्म
पहला JSON संदेश अप्रैल 2001 में सैन फ्रांसिस्को के पास एक गैरेज में एक कंप्यूटर से भेजा गया था। इतिहास ने इस घटना में शामिल लोगों के नाम को बरकरार रखा है: डगलस क्रॉकफोर्ड और चिप मॉर्निंगस्टार, प्रौद्योगिकी परामर्श कंपनी सॉफ्टवेयर के सह-संस्थापक।
AJAX प्रकट होने से बहुत पहले ये दोनों AJAX अनुप्रयोगों का विकास कर रहे थे। लेकिन ब्राउज़रों में एप्लिकेशन समर्थन बहुत अच्छा नहीं था। वे पृष्ठ के प्रारंभिक लोड होने के बाद अपने एप्लिकेशन में डेटा स्थानांतरित करना चाहते थे, लेकिन ऐसा तरीका नहीं मिला जो सभी ब्राउज़रों में काम करे।
आज विश्वास करना मुश्किल है, लेकिन 2001 में इंटरनेट एक्सप्लोरर सबसे उन्नत ब्राउज़र था। 1999 से, Internet Explorer 5 ने ActiveX के माध्यम से XMLHttpRequest के प्रारंभिक रूप का समर्थन किया है। क्रॉकफोर्ड और मॉर्निंगस्टार इस तकनीक का उपयोग एप्लिकेशन में डेटा प्राप्त करने के लिए कर सकते हैं, लेकिन यह नेटस्केप 4 में काम नहीं करता था। इस प्रकार, मुझे एक अलग प्रारूप की तलाश करनी थी जो दोनों ब्राउज़रों में काम करता हो।
पहला JSON संदेश इस तरह दिखाई दिया:
<html><head><script> document.domain = 'fudco'; parent.session.receive( { to: "session", do: "test", text: "Hello world" } ) </script></head></html>
संदेश का केवल एक छोटा सा हिस्सा JSON जैसा दिखता है जैसा कि हम आज जानते हैं। यह संदेश वास्तव में जावास्क्रिप्ट दस्तावेजों की एक जोड़ी के साथ एक HTML दस्तावेज़ है। JSON जैसा भाग केवल
receive()
फ़ंक्शन के लिए एक जावास्क्रिप्ट शाब्दिक है।
क्रॉकफोर्ड और मॉर्निंगस्टार ने डेटा भेजने के लिए HTML फ्रेम का दुरुपयोग करने का फैसला किया। एक फ़्रेम के लिए, आप एक URL निर्दिष्ट कर सकते हैं जो ऊपर दिए गए HTML दस्तावेज़ के समान है। जब HTML प्राप्त होता है, तो जावास्क्रिप्ट लॉन्च किया जाता है और आवेदन करने के लिए शाब्दिक वापस जाता है। यह इस शर्त पर काम करता है कि बच्चे को माता-पिता की खिड़की तक पहुँचने से रोकने के लिए ब्राउज़र सुरक्षा को सावधानीपूर्वक दरकिनार किया गया था: जैसा कि आप देख सकते हैं, क्रॉकफोर्ड और मॉर्निंगस्टार ने स्पष्ट रूप से दस्तावेज़ डोमेन सेट किया है। इस तकनीक को कभी-कभी एक छिपा हुआ फ्रेम कहा जाता है, इसका
उपयोग अक्सर 90 के दशक के उत्तरार्ध में सामान्य XMLHttpRequest से पहले किया जाता था।
पहली JSON पोस्ट के बारे में आश्चर्य की बात यह है कि यह बिल्कुल स्पष्ट नहीं है कि यह नए प्रकार के डेटा प्रारूप का पहला उपयोग है। यह सिर्फ जावास्क्रिप्ट है! वास्तव में, इस तरह से जावास्क्रिप्ट का उपयोग करने का विचार इतना सरल है कि क्रॉकफोर्ड खुद मानते हैं कि वह ऐसा करने वाले पहले व्यक्ति नहीं थे - उनका दावा है कि नेटस्केप में किसी
ने 1996 में जानकारी को प्रसारित करने के लिए जावास्क्रिप्ट सरणी शाब्दिक का उपयोग किया
था । सादे जावास्क्रिप्ट में पोस्ट करने के लिए किसी विशेष पार्सिंग की आवश्यकता नहीं होती है। सब कुछ जावास्क्रिप्ट दुभाषिया द्वारा किया जाता है।
वास्तव में, इतिहास में पहले JSON संदेश में दुभाषिया के साथ समस्याएं थीं। जावास्क्रिप्ट के पास बड़ी संख्या में शब्द हैं - ECMAScript 6 में 64 शब्द आरक्षित हैं - और क्रॉकफोर्ड और मॉर्निंगस्टार ने अनजाने में उन्हें अपने संदेश में इस्तेमाल किया: अर्थात्, आरक्षित शब्द एक कुंजी के रूप में
do
करता है। चूंकि जावास्क्रिप्ट में बहुत सारे आरक्षित शब्द हैं, क्रोकफोर्ड ने उनसे बचने के लिए नहीं, बल्कि सभी JSON कुंजियों को उद्धृत करने का निर्णय लिया। उद्धृत कुंजी को जावास्क्रिप्ट दुभाषिया द्वारा एक स्ट्रिंग के रूप में माना जाता है, इसलिए आप सुरक्षित रूप से आरक्षित शब्दों का उपयोग कर सकते हैं। यही कारण है कि JSON कुंजियाँ अभी भी उद्धृत हैं।
क्रॉकफोर्ड और मॉर्निंगस्टार ने महसूस किया कि नई पद्धति का उपयोग सभी प्रकार के अनुप्रयोगों में किया जा सकता है। वे JSML (जावास्क्रिप्ट मार्कअप भाषा) प्रारूप को कॉल करना चाहते थे, लेकिन यह पता चला कि संक्षिप्त नाम पहले से ही जावा स्पीच मार्कअप लैंग्वेज नामक कुछ के साथ व्यस्त था। इसलिए, हमने जावास्क्रिप्ट ऑब्जेक्ट नोटेशन, यानी JSON को चुना। उन्होंने अपने ग्राहकों को प्रारूप पेश करना शुरू किया, लेकिन यह जल्द ही स्पष्ट हो गया कि उन्होंने बिना आधिकारिक विनिर्देश के एक अज्ञात तकनीक का उपयोग करने का जोखिम नहीं उठाया। इसलिए क्रॉकफोर्ड ने इसे लिखने का फैसला किया।
2002 में,
क्रॉकफोर्ड ने
JSON.org डोमेन खरीदा, JSON सिंटैक्स प्रकाशित किया, और पार्सर का एक उदाहरण कार्यान्वयन। वेबसाइट अभी भी काम कर रही है, हालांकि अब यह 2013 में अपनाए गए JSON ECMA मानक के लिंक को दिखाती है। साइट को लॉन्च करने के अलावा, क्रॉकफोर्ड ने JSON को बढ़ावा देने के लिए लगभग कुछ भी नहीं किया, लेकिन जल्द ही विभिन्न प्रोग्रामिंग भाषाओं में JSON पार्सर के कार्यान्वयन थे। प्रारंभ में, JSON स्पष्ट रूप से जावास्क्रिप्ट के साथ जुड़ा हुआ था, लेकिन फिर यह स्पष्ट हो गया कि यह भाषाओं के मनमाने जोड़े के बीच डेटा के आदान-प्रदान के लिए अच्छी तरह से अनुकूल था।
गलत AJAX
JSON को 2005 में एक बड़ा धक्का मिला। तब जेसी जेम्स गैरेट नाम के एक डिजाइनर और डेवलपर ने अपने
लेख में AJAX शब्द को गढ़ा। उन्होंने इस बात पर जोर देने की कोशिश की कि AJAX सिर्फ एक नई तकनीक नहीं है, बल्कि "अपने तरीके से कई अच्छी तकनीकें हैं जो शक्तिशाली नए तरीकों से संयुक्त हैं।" गैरेट ने AJAX को वेब एप्लिकेशन डेवलपमेंट के लिए एक नया दृष्टिकोण कहा। एक ब्लॉग पोस्ट में, उन्होंने बताया कि कैसे डेवलपर्स अधिक इंटरैक्टिव अनुप्रयोग बनाने के लिए जावास्क्रिप्ट और XMLHttpRequest का उपयोग कर सकते हैं। उन्होंने जीमेल और फ़्लिकर को उन साइटों के उदाहरण कहा, जो AJAX के तरीकों पर भरोसा करते हैं।
बेशक, AJAX में "X" का मतलब XML था। लेकिन बाद के सवालों और जवाबों में गैरेट ने JSON को पूरी तरह से स्वीकार्य विकल्प कहा। उन्होंने लिखा है कि "एक्सएक्सएक्स AJAX क्लाइंट के लिए एक्सएमएल सबसे कार्यात्मक डेटा एक्सचेंज टूल है, लेकिन जावास्क्रिप्ट ऑब्जेक्ट नोटेशन या किसी भी समान डेटा संरचना प्रारूप का उपयोग करके समान प्रभाव प्राप्त किया जा सकता है।"
डेवलपर्स ने वास्तव में पाया कि वे AJAX अनुप्रयोगों को बनाने के लिए आसानी से JSON का उपयोग कर सकते हैं, और कई ने XML के बजाय इसे चुना। विडंबना यह है कि AJAX में रुचि ने JSON की लोकप्रियता में एक विस्फोट किया है। लगभग इसी समय, JSON ने ब्लॉग जगत का ध्यान आकर्षित किया।
2006 में, डेव वेनर, एक विपुल ब्लॉगर और कई XML तकनीकों, जैसे कि RSS और XML-RPC के निर्माता,
ने शिकायत की कि JSON बिना किसी अच्छे कारण के XML को फिर से स्थापित कर रहा है:
"बेशक, मैं [JSON] को पार्स करने के लिए एक प्रक्रिया लिख सकता हूं, लेकिन देखो कि वे प्रौद्योगिकी को सुदृढ़ करने में कितनी दूर गए: किसी कारण से, XML उनके लिए पर्याप्त नहीं है (मुझे आश्चर्य है कि क्यों)। इस पैरोडी को किसने बनाया? चलो एक पेड़ खोजें और एक आदमी को लटका दें। अभी। ”
वीनर की निराशा को समझना आसान है। XML को विशेष रूप से प्यार नहीं किया गया है। यहां तक कि खुद वेनर ने
कहा कि उन्हें एक्सएमएल पसंद नहीं था । लेकिन XML को किसी भी एप्लिकेशन के लिए एक सार्वभौमिक प्रणाली के रूप में डिज़ाइन किया गया था जिसकी आप कल्पना कर सकते हैं। XML वास्तव में एक मेटलंगेज है जो आपको व्यक्तिगत अनुप्रयोगों के लिए डोमेन भाषाओं को परिभाषित करने की अनुमति देता है - उदाहरण के लिए, RSS और SOAP। वेनर का मानना है कि सभी लाभों के लिए आम सहमति बनाना महत्वपूर्ण है जो सामान्य विनिमय प्रारूप लाता है। उनकी राय में, XML का लचीलापन किसी भी जरूरतों को पूरा करने में सक्षम है। फिर भी JSON एक ऐसा प्रारूप है जो कबाड़ हटाने के अपवाद के साथ XML पर कोई लाभ नहीं देता है, जिसने XML को इतना लचीला बना दिया।
क्रॉकफोर्ड ने वीनर के ब्लॉग पोस्ट को देखा और टिप्पणी की। इस आरोप के जवाब में कि जेएसएन एक्सएमएल
को मजबूत कर रहा है , क्रॉकफोर्ड ने लिखा:
"पहिया को फिर से बनाना अच्छा है क्योंकि आप इसे गोल कर सकते हैं ।
"JSON बनाम XML
2014 तक, JSON को आधिकारिक तौर पर ECMA और RFC मानक के रूप में मान्यता दी गई थी। उसे अपना MIME टाइप मिला। JSON ने बड़ी लीग में प्रवेश किया है।
XML से JSON बहुत अधिक लोकप्रिय क्यों हो गया है?
JSON.org पर, Crockford
XML पर JSON के कुछ
लाभों को सूचीबद्ध करता है। वह लिखते हैं कि JSON को लोगों और मशीनों दोनों द्वारा समझना आसान है, क्योंकि इसका सिंटैक्स न्यूनतम है और इसकी संरचना अनुमानित है। अन्य ब्लॉगर्स XML वर्बोसिटी और "टैग टैक्स" का
उल्लेख करते हैं । XML में प्रत्येक उद्घाटन टैग में एक समापन टैग होना चाहिए, जिसका अर्थ बहुत अधिक अनावश्यक जानकारी है। यह XML को JSON दस्तावेज़ के बराबर बड़ा बनाता है, लेकिन इससे भी महत्वपूर्ण बात यह है कि इस वजह से XML दस्तावेज़ को पढ़ना कठिन है।
क्रॉकफोर्ड
ने JSON का एक और बड़ा लाभ
कहा : यह मूल रूप से कार्यक्रमों के बीच संरचित जानकारी के आदान-प्रदान के लिए एक प्रारूप के रूप में तैयार किया गया था। हालाँकि XML का उपयोग इसी उद्देश्य के लिए किया गया था, लेकिन इसे मूल रूप से एक दस्तावेज मार्कअप भाषा के रूप में विकसित किया गया था। यह एसजीएमएल (मानक सामान्यीकृत मार्कअप लैंग्वेज) से विकसित हुआ, जो बदले में, स्वेट मार्कअप लैंग्वेज से विकसित हुआ, जिसका उद्देश्य लाटेक की तरह मार्कअप पाठ था। XML में, एक टैग के अंदर, तथाकथित "मिश्रित सामग्री" हो सकती है, जो कि शब्दों या वाक्यांशों के आस-पास एम्बेडेड टैग के साथ पाठ है। यह लाल या नीले मार्कर के साथ पांडुलिपि को चिह्नित करने वाले संपादक जैसा दिखता है, जो मार्कअप भाषा के लिए एक प्रकार का रूपक है। दूसरी ओर, JSON, मिश्रित सामग्री के सटीक एनालॉग का समर्थन नहीं करता है, जिसका अर्थ संरचना को सरल बनाना है। दस्तावेज़ को एक पेड़ के रूप में सबसे अच्छा प्रतिनिधित्व किया गया है, लेकिन दस्तावेज़ के विचार को छोड़ दें, तो क्रोकफ़ोर्ड JSON को उन परिचित तत्वों के शब्दकोशों और सरणियों तक सीमित करने में सक्षम था जो सभी प्रोग्रामर अपने कार्यक्रमों को बनाने के लिए उपयोग करते हैं।
अंत में, मेरा खुद का अनुमान है कि लोग XML की जटिलता को पसंद नहीं करते थे, और यह वास्तव में इसकी विविधता के कारण था। पहली नज़र में, XML और इसके उप भाषा के बीच अंतर करना मुश्किल है, जैसे कि RSS, ATOM, SOAP, या SVG। किसी विशिष्ट XML दस्तावेज़ की पहली पंक्तियाँ XML के संस्करण को स्थापित करती हैं, और फिर विशिष्ट दस्तावेज़ जो XML दस्तावेज़ से मेल खाना चाहिए। JSON की तुलना में ये कई विकल्प हैं, जो इतना सरल है कि JSON विनिर्देशन का कोई नया संस्करण कभी नहीं लिखा जाएगा। XML डेवलपर्स, सब कुछ के लिए एक एकल डेटा विनिमय प्रारूप बनाने के प्रयास में, क्लासिक प्रोग्रामर जाल के शिकार हो गए: अत्यधिक तकनीकी जटिलता। XML इतनी सामान्य है कि कुछ सरल के लिए उपयोग करना मुश्किल है।
2000 में, XML मानक के अनुरूप HTML लाने के लिए एक अभियान शुरू हुआ। XML- अनुरूप HTML के लिए एक विनिर्देश प्रकाशित, जिसे बाद में एक्सएचटीएमएल के रूप में जाना जाता है। कुछ ब्राउज़र निर्माताओं ने तुरंत नए मानक का समर्थन करना शुरू कर दिया, लेकिन यह जल्दी से स्पष्ट हो गया कि एचटीएमएल के साथ काम करने वाली आम जनता अपनी आदतों को बदलना नहीं चाहती थी। नए मानक के लिए HTML की तुलना में अधिक कड़े XHTML सत्यापन की आवश्यकता थी, लेकिन कई साइटें मुफ्त HTML नियमों पर निर्भर थीं। 2009 तक, एक्टिविस्टों ने एक्सएचटीएमएल के दूसरे संस्करण को लिखने की कोशिश करना बंद कर दिया था, जब यह स्पष्ट हो गया कि भविष्य एचटीएमएल 5 मानक में है, जिसे एक्सएमएल अनुपालन की आवश्यकता नहीं थी।
यदि XHTML के प्रयास सफल रहे, तो शायद XML एक सामान्य डेटा प्रारूप बन जाएगा, जैसा कि इसके डेवलपर्स को उम्मीद थी। एक ऐसी दुनिया की कल्पना करें जिसमें एचटीएमएल दस्तावेज़ और एपीआई प्रतिक्रियाएं बिल्कुल समान संरचना हैं। ऐसी दुनिया में, JSON आज भी उतना लोकप्रिय नहीं हो पाया है। लेकिन मैं एक्सएचटीएमएल की असफलता को एक्सएमएल शिविर के लिए एक तरह की नैतिक हार मानता हूं। यदि XML HTML की मदद नहीं करती है, तो अन्य अनुप्रयोगों के लिए बेहतर उपकरण हो सकते हैं। वास्तविक दुनिया में, यह समझना आसान है कि सरल और अत्यधिक विशिष्ट JSON प्रारूप इतना सफल क्यों रहा है।