2012-06-19 20 views
21

Mi chiedo quale meccanismo serializzato dovremmo scegliere quando ci occupiamo del trasferimento di oggetti attraverso la rete. Quali sono i pro e i contro?Serializzazione Java vs JSON vs XML

So che la maggior parte del tempo che usiamo JSON o XML per AJAX dal momento che il formato di trasferimento sono praticamente Javascript formato, e in più JSON è piuttosto leggero, con le sue dimensioni ridotte, quindi è Java serializzazione del tutto fuori dal tavolo?

risposta

15

In generale, la questione importante è quale client riceverà gli oggetti serializzati - motori browser/JavaScript come (node-js), client Java, client sconosciuti/multipli.

JSON - sintassi JSON è fondamentalmente JavaScript e quindi qualsiasi componente con un motore JS gestirà la sua analisi molto bene - strutture dati anche complesse saranno convertiti in "vivere" gli oggetti in modo efficiente.I parser JSON esistono praticamente per qualsiasi lingua ed è facile da usare anche quando non si utilizza un motore JS, (Prendete ad esempio Google Gson che è in grado di convertire JSON in oggetti corrispondenti con facilità), il che rende un buon candidato per la comunicazione tra lingue diverse - ad esempio in un messaging architecture.

XML - Condivide molti dei vantaggi di JSON: cross-language, leggero, ecc. Adobe Flex ad esempio gestisce l'XML molto bene, anche meglio di JSON. È sicuramente un sostituto appropriato per JSON. Personalmente preferisco JSON per la sua sintassi simile a JS, ma anche XML è buono.

Serializzazione Java - Deve essere considerato solo per la comunicazione Java-Java. Una nota importante è che le definizioni di classe dovrebbero trovarsi sul lato di invio e di ricezione e spesso non si otterrebbe molto passando l'intero oggetto. Non escluderei RMI come protocollo di comunicazione, semplifica lo sviluppo. Tuttavia i componenti dell'applicazione risultanti saranno strettamente accoppiati, il che renderà molto difficile la loro sostituzione.

Ancora una nota: la serializzazione in generale ha il suo overhead. Tuttavia, quando la comunicazione viene eseguita su una rete, il collo di bottiglia è spesso la rete piuttosto che la serializzazione/deserializzazione stessa.

+0

Quindi continuerai a considerare JSON o XML sulla serializzazione java quando si tratta della comunicazione da JAVA a JAVA? – peter

+0

Se tutto quello che stai passando sono dati vorrei andare per XML o JSON. Non andrei a serializzare e trasmettere oggetti Java manualmente. Cerca in RMI Java se ha senso avere la stessa definizione di oggetto su entrambe le estremità e nel caso tu sia interessato a invocare metodi sull'oggetto remoto. Spero che sia d'aiuto. –

6

Penso che dipenda. Se stai inviando una richiesta http o qualcosa del genere, allora JSON o XML è ovviamente una buona scelta. Se si sta inviando un oggetto java su un socket tcp per qualche algoritmo distribuito o qualcosa penso che la serializzazione java sia più semplice/migliore

1

Penso che come sviluppatore non ci si debba occupare della serializzazione di oggetti risposta. ma se consideriamo JSON, ha dei vantaggi decenti da scegliere su XML.

  1. Risposta JSON non necessita di risposta codificata diversamente da XML.
  2. la gestione e l'elaborazione di JSON è più veloce rispetto a XML perché non è stata analizzata.
  3. La risposta XML per AJAX è sempre codificata, quindi l'elaborazione richiede tempo.
  4. JSON si adatta meglio a Jquery per la codifica relativa all'interfaccia utente ed è più veloce.
  5. Elaborazione di dati enormi Esempio: recupero dei dati di indicizzazione da/a server, la gestione JSON è più veloce.
4

Mentre la serializzazione sulla rete funzionava sia xml che json. Dipende dal consumatore di queste informazioni.

  • Se il consumatore è un browser utilizzando Ajax per richiedere alcune informazioni e rendere qualcosa sullo schermo, in genere jason è la migliore scommessa come già in formato oggetto Javascript e non c'è nessun sovraccarico di conversione a oggetti compatibili Javascript . In effetti molte librerie Ajax (ad esempio jQuery) hanno un buon supporto per JSON.

  • Se il consumatore è un'altra applicazione che può essere o non essere in java, allora xml è il meccanismo di serializzazione preferito. I servizi Web utilizzano molto xml.

  • Se il consumatore è un altro programma Java, la serializzazione java è sicuramente l'opzione preferita (ad esempio RMI). Quindi non è ancora uscito :-).

Ma sì, c'è una linea sfocata tra XML e Json. Quello che ho menzionato qui è la pratica generale. Ecco uno nice article mettendo tutto l'aspetto su xml vs jason.