O privire profundă asupra JSON vs. XML, Partea 1: Istoria fiecărui standard
Publicat: 2022-03-11De la desktop la web și mobil, aproape toate aplicațiile computerizate pe care le folosim astăzi se bazează pe unul dintre cele două standarde principale de mesaje: JSON și XML. Astăzi, JSON este cel mai utilizat format, dar a depășit XML doar în ultimii cinci ani. O căutare rapidă online pentru „JSON vs. XML” va aduce nenumărate articole și postări pe blog care compară cele două standarde și echivalează cu o tendință de extindere progresivă care lăuda simplitatea JSON și critică verbozitatea XML. Numeroase articole insistă că JSON este superior XML datorită semanticii sale concise și reduce XML ca standard ineficient și confuz al trecutului. La prima vedere, JSON pare să fie cel mai popular – deci este JSON pur și simplu mai bun decât XML? Bătălia „JSON vs. XML” ar putea merge la JSON la suprafață, dar în profunzime, există mai mult decât se vede.
În partea 1 a acestui articol, vom:
- Aruncă o privire mai atentă la istoria webului pentru a descoperi scopul original al XML și JSON.
- Luați în considerare evoluția tendințelor software din ultimii ani pentru a afla de ce JSON a devenit mai popular decât XML.
Istoria JSON și XML
Pentru a descoperi motivul popularității JSON față de XML, să explorăm istoria webului și modul în care evoluția acestuia de la Web 1.0 la Web 2.0 a influențat tendințele de dezvoltare.
Web 1.0: HTML
La începutul anilor 1990 a fost începutul Web 1.0. HTML a fost introdus în 1991 și a fost adoptat pe scară largă de universități, întreprinderi și organizații guvernamentale ca limbaj al web-ului. HTML provine de la SGML, sau „Standard Generalized Markup Language”, inventat în anii 1970 de IBM. Pe lângă adoptarea în masă, HTML a fost adaptată în masă — au fost încorporate extensii pentru a suporta multimedia, animație, aplicații online, comerț electronic și multe altele. Ca derivat al SGML, HTML nu avea o specificație strictă care să împiedice companiile să-l extindă liber pentru a îndeplini cerințele care depășeau conceptul original. Concursul pentru cel mai popular browser web dintre Netscape și Microsoft a dat progrese rapide, dar a dus și la fragmentarea neobosită a standardului. Concurența acerbă a dus la o „catastrofă de divergență”, deoarece creșterea HTML de către cele două companii a determinat browserele să accepte propriile versiuni unice de HTML. Această catastrofă de divergență a devenit o problemă uriașă pentru aplicațiile web, deoarece dezvoltatorii se luptau să scrie cod interoperabil pentru browsere.
Web 1.1: XML + HTML = XHTML
La sfârșitul anilor 1990, un grup de oameni, printre care Jon Bosak, Tim Bray, James Clark și alții, au venit cu XML: „eXtensible Markup Language”. La fel ca SGML, XML nu este în sine un limbaj de marcare, ci o specificație pentru definirea limbajelor de marcare. XML a fost o evoluție de la SGML - conceput pentru a oferi un mijloc de a defini și de a aplica conținut structurat. Considerat „sfântul graal al computerului”, 1 limbajul XML s-a străduit „să rezolve problema schimbului universal de date între sisteme diferite” (Dr. Charles Goldfarb) 2 . În locul fragmentării continue a HTML, a fost format Comitetul World Wide Web (W3C) pentru a promova compatibilitatea și acordul între industrie în adoptarea de noi standarde pentru World Wide Web. 3 W3C a început să transforme HTML ca aplicație XML, rezultatul fiind XHTML.
XHTML a fost o mare inițiativă care a atras atenția asupra XML, dar este doar o mică parte din ceea ce înseamnă XML.
XML a oferit industriei o modalitate de a specifica, cu o semantică strictă, limbaje de marcare personalizate pentru orice aplicație. Cuvântul cheie fiind „semantică strictă”, XML a definit un standard care ar putea afirma integritatea datelor din orice document XML, din orice sub-limbaj XML. Pentru companiile de software care dezvoltă aplicații de întreprindere distribuite care interfață cu sisteme disparate, un limbaj de marcare care ar putea afirma integritatea datelor sale a fost semnificativ. Prin definirea conținutului structurat cu XML, companiile au folosit caracteristicile acestei tehnologii pentru a interopera cu orice platformă, pentru a impune integritatea datelor pentru fiecare schimb de date și pentru a reduce sistematic riscul software al sistemelor lor. Pentru industrie, XML a oferit o tehnologie pentru stocarea, comunicarea și validarea oricărui tip de date, într-o formă pe care aplicațiile de pe orice platformă o pot citi și procesa cu ușurință. Pentru HTML, XML a promis că va rezolva „catastrofa divergenței”.
Java și .NET
La începutul anilor 2000, web-ul era guvernat de două companii: Sun și Microsoft. La acea vreme, peisajul limbajelor de programare era puternic înclinat spre partea serverului. Arhitectura comună pentru aplicațiile web s-a bazat pe servere care redau pagini HTML în back-end pentru a fi livrate către browser. Această abordare a evidențiat tehnologiile back-end, care, la rândul lor, au popularizat principalele platforme back-end: Java și C#.NET. Dezvoltat de Sun Microsystems, Java a condus noua generație de limbaje de programare orientate pe obiecte care au rezolvat problema arhitecturii încrucișate cu noua sa abordare „a scrie o dată rulată oriunde” 4 . Microsoft a urmat cu .NET, C# și Common Language Runtime (CLR) și și-a pus ochii pe XML ca abordare de alegere pentru a rezolva puzzle-ul de interoperabilitate a datelor. Microsoft a devenit cel mai mare susținător al XML, compania alegând XML ca parte integrantă a inițiativei sale proeminente .NET. Anunțate ca „o platformă pentru servicii web XML”, aplicațiile 5 .NET au fost proiectate pentru a utiliza XML pentru comunicarea cu alte platforme. Selectat ca standard de schimb de date al Microsoft, XML a fost integrat în produsele sale emblematice de server, cum ar fi SQL Server și Exchange.
Web 1.2: AJAX
Livrarea paginilor HTML pre-rendate către browser nu a fost scalabilă, iar web-ul avea nevoie de o alternativă. Cu fiecare acțiune a utilizatorului care necesită încărcarea unei pagini proaspete de pe server, încărcarea procesului și consumul de lățime de bandă au devenit o îngrijorare pe măsură ce mai mulți oameni au crescut pe web.
Netscape și Microsoft s-au străduit să rezolve această problemă prin livrarea asincronă de conținut: ActiveX și JavaScript. În 1998, echipa Microsoft Outlook Web Access a dezvoltat conceptul din spatele ActiveX 6 , care a fost ulterior implementat de Mozilla, Safari, Opera și alte browsere în JavaScript ca obiect XMLHttpRequest
.
AJAX sa născut din ActiveX de la Microsoft și JavaScript de la Netscape.
Termenul AJAX – prescurtare pentru „JavaScript și XML asincron” – a ajuns să reprezinte o gamă largă de tehnologii web care pot fi utilizate pentru a implementa aplicații web care comunică cu serverele în fundal fără a necesita reîncărcarea unei pagini. În articolul care a inventat termenul AJAX, 7 8 Jesse James Garrett a subliniat principalele concepte:
- HTML (sau XHTML) și CSS pentru prezentare.
- Document Object Model (DOM) pentru afișarea dinamică a datelor și interacțiunea cu acestea.
- XML pentru schimbul de date și XSLT pentru manipularea acestuia.
- Obiectul
XMLHttpRequest
pentru comunicarea asincronă. - JavaScript pentru a reuni aceste tehnologii.
Având în vedere că livrarea de conținut asincronă s-a dovedit a reduce încărcarea serverului și a economisi o lățime de bandă considerabilă, AJAX a schimbat jocul. Introducerea XMLHttpRequest
în browsere a permis dezvoltatorilor să implementeze o logică mai complexă în front-end. Google a implementat pe scară largă AJAX, conform standardelor, cu mai multe browsere, cu Gmail în 2004 și Google Maps în 2005. 9 Și, în octombrie 2004, lansarea publică beta a Kayak.com a fost printre primele utilizări pe scară largă ale AJAX pentru comerțul electronic. 10
Web 2.0: Aplicații cu o singură pagină
Adoptarea AJAX ca arhitectură scalabilă pentru aplicații web a condus la începutul Web 2.0: Aplicația pentru o singură pagină (SPA). 11 În loc să reîncarce întreaga pagină pentru fiecare interacțiune cu utilizatorul, SPA-urile rescriu în mod dinamic pagina curentă în browser. Pe lângă o reducere considerabilă a încărcării serverului și a consumului de lățime de bandă, abordarea SPA a permis aplicațiilor web să semene cu aplicațiile desktop datorită experienței fără întreruperi și neîntrerupte în timpul interacțiunii utilizatorului.
În aprilie 2002, Stuart Morris a scris unul dintre primele SPA-uri la slashdotslash.com 12 , iar mai târziu în același an, Lucas Birdeau, Kevin Hakman, Michael Peachey și Evan Yeh au descris o implementare a unei aplicații pe o singură pagină în brevetul american 8.136.109. 13 Brevetul descrie browsere web care utilizează JavaScript pentru a afișa interfața cu utilizatorul, pentru a rula logica aplicației și pentru a comunica cu un server web.
Gmail Google, Google Maps și versiunea beta publică a Kayak au declanșat o nouă eră a dezvoltării aplicațiilor web. Browserele activate cu AJAX au permis dezvoltatorilor să scrie aplicații bogate pentru web. Semantica ușoară a JavaScript a făcut posibilă dezvoltarea de aplicații pentru programatori de orice calibru. Bariera de intrare în dezvoltarea de software a fost mult redusă, iar dezvoltatorii individuali din întreaga lume au început să contribuie cu biblioteci și cadre proprii. Bibliotecile populare precum jQuery, care normalizează comportamentul AJAX în browserele de la diferiți producători, au progresat și mai mult revoluția AJAX.
Ascensiunea JSON
În aprilie 2001, Douglas Crockford și Chip Morningstar au trimis primul mesaj JSON de la un computer din garajul Morningstar's Bay Area. Crockford și Morningstar încercau să creeze aplicații AJAX cu mult înainte ca termenul „AJAX” să fie inventat, dar suportul pentru browser pentru ceea ce încercau să obțină nu a fost bun. Ei au dorit să transmită date către aplicația lor după ce pagina s-a încărcat, dar nu au găsit o modalitate de a permite ca acest lucru să funcționeze în toate browserele.
În 2001, dezvoltarea AJAX abia începea și nu exista încă o formă interoperabilă a obiectului XMLHttpRequest
în Internet Explorer 5 și Netscape 4. Așa că Crockford și Morningstar au folosit o abordare diferită care a funcționat în ambele browsere.
Primul mesaj JSON arăta astfel:
<html><head><script> document.domain = 'fudco'; parent.session.receive( { to: "session," do: "test," text: "Hello world" } ) </script></head></html>
Acest mesaj este de fapt un document HTML care conține ceva JavaScript și doar o mică parte a mesajului seamănă cu JSON așa cum îl cunoaștem astăzi. Crockford și Morningstar au reușit să încarce date în mod asincron, îndreptând un <iframe>
către o adresă URL care ar returna un document HTML ca cel de mai sus. Când a fost primit răspunsul, JavaScript-ul în HTML va fi rulat și, ocolind protecțiile browserului, împiedicând sub-ferestrele să acceseze părintele, literalul obiect a fost transmis înapoi în cadrul principal al aplicației. Această tehnică bazată pe cadre, numită uneori „tehnica cadru ascuns”, a fost folosită în mod obișnuit la sfârșitul anilor 90, înainte de implementarea pe scară largă a XMLHttpRequest
. 14

Această abordare a atras dezvoltatorii, deoarece a oferit interoperabilitate în toate browserele. Deoarece mesajul este doar JavaScript, nu necesită nici un fel de analiză specială. Ideea de a folosi JavaScript în acest fel a fost atât de simplă încât Crockford însuși a spus că nu a fost prima persoană care a făcut-o – el susține că cineva de la Netscape folosea JavaScript pentru a comunica informații încă din 1996. 15
Crockford și Morningstar și-au dat seama că au ceva care ar putea fi folosit în tot felul de aplicații. Ei și-au numit formatul JSON, care este prescurtarea pentru „JavaScript Object Notation”. Ei au început să-l propună clienților, dar în curând au descoperit că mulți nu au vrut să-și asume o șansă cu o tehnologie nouă care nu avea o specificație oficială. Așa că Crockford a decis că va scrie unul. În 2002, Crockford a cumpărat domeniul JSON.org și a creat gramatica JSON și o implementare de referință a unui parser. Site-ul web este încă activ, deși acum include o legătură proeminentă către standardul JSON ECMA ratificat în 2013. 16 După ce a creat site-ul web, Crockford a făcut puțin mai mult pentru a promova JSON, dar în curând a găsit oameni care trimiteau implementări de analiză JSON pentru diferite limbaje de programare. Originea JSON este în mod clar legată de JavaScript, dar a devenit evident că JSON era potrivit pentru a schimba date între limbi arbitrare.
JSON în AJAX
În 2005, Jesse James Garrett a inventat termenul „AJAX” într-o postare pe blog, unde a subliniat că AJAX nu este o singură tehnologie nouă, ci mai degrabă „mai multe tehnologii, fiecare înflorind în sine, reunindu-se în moduri noi puternice”. 16 Postarea lui pe blog a continuat să descrie modul în care dezvoltatorii ar putea folosi JavaScript și XMLHttpRequest
pentru a construi noi tipuri de aplicații care au fost mai receptive și mai precise decât pagina web obișnuită. El a indicat Gmail, Google Maps și Flickr ca exemple de site-uri web care utilizează tehnici AJAX. Deși „X” în „AJAX” reprezintă XML, Garrett a indicat JSON ca o alternativă complet acceptabilă. El a scris că „XML este mijlocul cel mai complet dezvoltat de a introduce și ieși date dintr-un client AJAX, dar nu există niciun motiv pentru care să nu poți realiza aceleași efecte folosind o tehnologie precum JavaScript Object Notation sau orice mijloc similar de structurare a datelor.” 17
JavaScript și JSON au fost menite fără echivoc să fie împreună. Semantica JSON se mapează direct la JavaScript, făcându-l formatul nativ de schimb de date pentru limbaj. Dezvoltatorii au descoperit rapid că JSON era mai ușor de lucrat în JavaScript și mulți au ajuns să-l prefere XML.
Pe măsură ce JSON a atras atenția blogosferei, proliferarea JSON a început.
De ce JSON a devenit mai popular decât XML
JSON este formatul nativ pentru datele din aplicațiile JavaScript. Odată cu popularizarea JavaScript în ultimul deceniu, au fost create mai multe mesaje JSON decât orice alt format de date. Scrierea aplicațiilor în JavaScript impune aproape utilizarea JSON pentru schimbul de date. Sunt posibile alte formate, dar necesită mai mult efort decât cu JSON. Cu JavaScript câștigând popularitate pentru dezvoltarea aplicațiilor, JSON a urmat îndeaproape în urma sa ca format de schimb de date ușor de utilizat și integrat nativ.
În ceea ce privește blogosfera, s-au scris mai multe articole, mostre și tutoriale despre JavaScript (și, prin urmare, JSON) decât orice altă platformă de programare.
Istoria și calea evolutivă a web-ului a jucat un rol semnificativ în popularizarea JSON. Potrivit Stack Overflow, acum se pun mai multe întrebări despre JSON decât despre alte formate de schimb de date. 18
Potrivit Google Trends, se observă un profil similar comparând interesul de căutare pentru JSON și XML. 19
Proliferarea JavaScript înseamnă că JSON este mai bun decât XML?
Comunitățile de dezvoltatori insistă că JSON a devenit mai popular decât XML datorită domeniului său declarativ concis și semanticii simple. Douglas Crockford însuși rezumă câteva dintre avantajele JSON pe JSON.org: „JSON este mai ușor de înțeles atât pentru oameni, cât și pentru mașini, deoarece sintaxa sa este minimă și structura sa este previzibilă”. 20 Alți critici ai XML s-au concentrat pe verbozitatea XML ca „taxa unghiulară”. 21 Formatul XML necesită ca fiecare etichetă de deschidere să fie asociată cu o etichetă de închidere, rezultând informații redundante care pot face un document XML mult mai mare decât un document JSON echivalent atunci când este necomprimat. Și, poate mai important, dezvoltatorii spun: „de asemenea, face un document XML mai greu de citit”. 22
JSON a fost lăudat cu ușurință datorită simplității și semanticii sale concise, iar XML a fost etichetat ca un standard învechit din trecut datorită verbozității și complexității aparent excesive. Multe articole și postări de blog oferă o perspectivă limitată atunci când se compară JSON cu XML, ceea ce îi face pe cititori să creadă că JSON este un înlocuitor pentru XML. Nu este cazul!
Perspectiva limitată oferită de articole și postări de blog i-a determinat pe cititori să considere XML ca fiind învechit, lăsând pe mulți să nu conștientizeze caracteristicile puternice care îi pot ajuta să-și îmbunătățească arhitectura software-ului și rezistența la schimbare, precum și să reducă sistematic riscul software.
JSON este mai popular decât XML din cauza dominației JavaScript ca limbajul cel mai utilizat în prezent. Cu influența JavaScript asupra tendințelor software din ultimul deceniu, JSON continuă să primească din ce în ce mai multă atenție decât orice alt format de schimb de date. Blogosfera se grăbește să spună că „JSON este mai bun decât XML”, dar de cele mai multe ori, aceste afirmații sunt lăsate nejustificate sau sunt susținute de comparații simpliste în ceea ce privește semantică și verbozitate. Deci unul este standard mai bun decât celălalt? Răspunsul la această întrebare nu poate veni decât dintr-o evaluare mai profundă a fiecărui standard.
Concluzie
Din 1990 până în prezent, web-ul a parcurs un drum lung. Războaiele browserelor dintre Netscape și Microsoft au dus la o catastrofă divergentă a HTML și a fost nevoie de o soluție pentru a salva web-ul. XML a fost inventat pentru a formaliza XHTML și a oferit o soluție Sfântul Graal pentru calcularea în ansamblu. De la redarea paginilor HTML complete de către serverele back-end până la AJAX și SPA-uri, tendințele în arhitectura web și dezvoltarea browserului au adus accentul pe JavaScript, îndreptând dezvoltatorii din întreaga lume către JSON.
Popularitatea JSON este corelată cu cea a JavaScript. Cu ușurința sa de utilizare și curba scurtă de învățare, JavaScript a adus mai mulți dezvoltatori noi pentru a scrie software decât orice altă limbă. Cu integrarea nativă a JSON cu cea mai populară platformă de dezvoltare, nu este surprinzător că se pun mai multe întrebări despre JSON pe Stack Overflow decât orice alt format de schimb de date.
Cu tendințele software din ultimii ani aducând mai mulți dezvoltatori JavaScript în industrie, JSON a câștigat titlul de „cel mai popular format de schimb de date”.
La suprafață, bătălia „JSON vs. XML” merge la JSON, dar în profunzime, există mai mult decât se vede.
În partea a 2-a a acestui articol, vom analiza mai îndeaproape punctele forte și punctele slabe ale JSON și XML și vom evalua adecvarea fiecărui standard pentru aplicațiile comune și întreprindere. O privire mai atentă la „schimbul de date” va dezvălui amploarea influenței sale până la riscul software al aplicației în ansamblu. O înțelegere mai profundă a diferențelor fundamentale dintre JSON și XML le va permite dezvoltatorilor să evalueze mai bine riscul software al fiecărui standard în raport cu cerințele proiectului lor - pentru a le permite dezvoltatorilor să construiască software care este mai stabil și mai rezistent la erori și viitor. necunoscute.
Apropo, o particularitate interesantă a specificației JSON este că nu puteți converti obiectele JavaScript cu relații bidirecționale, unde proprietățile copil se referă la proprietățile părinte, în JSON. Procedând astfel, ar avea ca rezultat o eroare de tip Uncaught TypeError: Converting circular structure to JSON
. Pentru un hack în jurul acestei limitări, consultați Suport pentru relații bidirecționale în JSON .
Referințe
1. Internetul: o enciclopedie istorică. Cronologie, volumul 3, p. 130 (ABC-CLIO, 2005)
2. Manual de metadate, semantică și ontologii, p. 109 (World Scientific, decembrie 2013)
3. WebDiy.org - World Wide Web Consortium (W3C) - Istorie
4. „JavaSoft livrează Java 1.0” (Sun Microsystems, ianuarie 1996)
5. Permiterea spațială a internetului de generație următoare (David Engen, ianuarie 2002)
6. Povestea XMLHTTP (AlexHopmann.com, ianuarie 2007)
7. Începând cu Ajax - Pagina 2 (Wiley Publishing, martie 2007)
8. Ajax: O nouă abordare a aplicațiilor web (Jesse James Garrett, februarie 2005)
9. O scurtă istorie a lui Ajax (Aaron Swartz, decembrie 2005)
10. „Ce este Kayak.com?” (Informații generale corporative, octombrie 2008)
11. Navigare interioară: extinderea paradigmei de navigare a navigării (Netscape, mai 2003)
12. „Un site web autonom folosind DHTML” (SlashDotSlash.com, iulie 2012)
13. Livrarea datelor și a informațiilor de formatare pentru a permite manipularea din partea clientului (US Patent Bureau, aprilie 2002)
14. „Ce este Ajax?” Professional Ajax, ed. a 2-a. (Wiley, martie 2007)
15. Douglas Crockford: Saga JSON (Yahoo!, iulie 2009)
16. Standardul ECMA 404 (ECMA International, decembrie 2017)
17. Ajax: O nouă abordare a aplicațiilor web (Jesse James Garrett, februarie 2005)
18. Tendințe Stack Overflow (Stack Overflow, 2009-2019)
19. Google Trends (Google, 2004-2019)
20. JSON: Alternativa fără grăsimi la XML (Crockford, 2006)
21. XML: The Angle Bracket Tax (Coding Horror, mai 2008)
22. Xml Sucks (WikiWikiWeb, 2016)