giovedì 6 novembre 2014

Il confronto XML vs JSON

L' XML (eXtensible Markup Language) è il formato più utilizzato per la condivisione di dati in formato open.
Non essendoci disponibili in passato altri standard altrettanto semplici e strutturati, l' XML è da parecchi anni la codifica migliore per lo scambio dati tra diverse applicazioni.

Nate in un contesto di sviluppo WEB/HTML, sul finire degli anni 90 le specifiche XML sono state consolidate dal W3C (World Wide Web Consortium) ed hanno permesso di estenderne l'uso anche in altri contesti applicativi, in particolare nell'Application Integration.

Questo linguaggio di markup, oltre ad essere ottimo per la gestione di dati testuali e numerici, può essere sfruttato, utilizzando gli opportuni encoding, anche per la rappresentazione ed il trasferimento di documenti, immagini, audio, video ed altre tipologie di files in genere.

Per facilitare l'uso dell'XML, nel tempo sono state sviluppate innumerevoli librerie e programmi software in grado di automatizzare il parsing, la validazione, l'interpretazione del codice e la conversione dei dati.


Negli ultimi anni sta prendendo sempre più piede l'utilizzo anche di un altro formato, il JSON (Javascript Object Notation), il cui successo è dovuto principalmente alla semplicità di utilizzo in ambito Web a supporto delle tecnologie Ajax e Javascript diffusissime nei siti dinamici di ultima generazione.
Nella sostanza, considerando la sintassi del codice e le modalità funzionali, le analogie tra XML e JSON sono evidenti, tuttavia ci sono effettivamente delle specificità che li distinguono e che fanno preferire uno o l'altro a seconda delle esigenze. 

Leggibilità

Uno degli aspetti da considerare in un linguaggio di codifica testuale dei dati, è la facilità con cui una persona può leggere e comprendere le informazioni contenute.
Premesso che entrambi i formati sono molto leggibili ed è quindi soprattutto una questione di abitudine personale, tuttavia JSON sotto questo aspetto si fa preferire per una sintassi più snella, con meno vincoli, opzioni e tag di formattazione.

Interoperabilità

Un altro tratto comune tra JSON e XML è che implementano caratteristiche di Auto-Descrizione (Self-Describing) ed Internazionalizzazione dei dati (Internationalization).
Entrambi utilizzano standard e codifiche che permettono la manipolazione delle informazioni mediante utilizzo di strumenti software generici.  Ciò ne ha facilitato l'uso in una vasta gamma di applicazioni.

Gli strumenti di descrizione e validazione (dtd e xsd), i linguaggi di navigazione all'interno dei nodi (xquery e xpath) e le librerie di elaborazione a disposizione per l'XML sono sicuramente più consolidate ed affidabili, pertanto si fanno preferire in un contesto di integrazione tra sistemi, di Web Services con transazioni Server to Server.
Grazie a questi aspetti, il formato XML è spesso utilizzato anche per implementare su files veri e propri database strutturati.

In una tipica interazione Web Client->Server (siti web, App) invece le caratteristiche del JSON sono più indicate in quanto, oltre che essere un linguaggio più leggero (una minore verbosità corrisponde ad una minore grandezza dei file e quindi a performance migliori nel trasferimento dati), è immediatamente integrato con la programmazione Javascript e per lo scambio dati con i meccanismi Ajax.

Estensibilità

La possibilità di estendere gli attributi dei dati memorizzati permette all'XML di essere più flessibile.
Mentre JSON si limita a gestire solo dati classici come testo e numeri, l'XML consente di memorizzare e descrivere in modo più completo qualsiasi tipo di dato.

Inclusione di altri file

Con XML è possibile includere file di qualsiasi formato, questo significa che è possibile inserire documenti, foto, audio, video e altri file all'interno di un file XML (file embedded).
La stessa cosa non è possibile farla con JSON.

Trasmissione di dati alfanumerici

Con JSON i dati sono memorizzati in array e object mentre in XML le informazioni sono strutturate ad albero.
Entrambe le soluzioni hanno i loro vantaggi, ma utilizzando le tecnologie web di ultima generazione il trasferimento dati è molto più semplice e veloce quando i dati sono già organizzati in un modo direttamente interpretabile con la programmazione orientata agli oggetti.

Questo rende il JSON più indicato per importare i dati di testo e numerici con diversi linguaggi e quindi è da molti considerato migliore per lo sviluppo di funzionalità web con elaborazione lato client.

Per fare la stessa cosa con l'XML bisogna trasformare i dati prima di poterli utilizzare all'interno del programma.

Conclusioni

XML ha sicuramente uno spettro di utilizzo molto più vasto dovuto sia alle caratteristiche intrinseche nel linguaggio stesso sia al fatto che intorno a questo formato si è da tempo evoluto un mondo molto significativo di direttive, metodologie, strumenti ed applicazioni.

JSON invece, in forte ascesa solo da qualche anno, si caratterizza per la semplicità nella rappresentazione ed è ottimo per la serializzazione e la trasmissione di dati di tipo classico.

XML è un linguaggio di markup in grado di gestire in modo completo qualsiasi tipo di informazione, mentre JSON è un formato di interscambio dati che risulta essere di più agile utilizzo in determinati contesti.