2012-06-19 21 views
21

Me pregunto qué mecanismo de serialización deberíamos elegir cuando se trata de transferir objetos a través de la red. Cuáles son los pros y los contras ?Serialización en Java vs JSON vs XML

Sé que la mayoría de las veces usamos JSON o XML para AJAX ya que el formato de transferencia son más o menos Javascript formato, y además JSON es bastante ligero, con su pequeño tamaño, por lo tanto, es Java serialización totalmente fuera de la mesa?

Respuesta

15

En general, la pregunta importante es qué cliente recibirá los objetos serializados - buscadores/motores de JavaScript como (node-js), cliente Java, clientes desconocidos/múltiples.

JSON - La sintaxis JSON es básicamente JavaScript y, por lo tanto, cualquier componente con un motor JS manejará muy bien su análisis: incluso las estructuras de datos complicadas se convertirán en objetos "vivos" de manera eficiente.Los analizadores JSON existen para prácticamente cualquier idioma y es fácil de usar incluso cuando no se usa un motor JS (por ejemplo, Google Gson es capaz de convertir JSON en objetos correspondientes con facilidad) lo que hace que sea un buen candidato para la comunicación entre idiomas - por ejemplo en un messaging architecture.

XML - Comparte muchos de los beneficios de JSON: entre idiomas, peso ligero, etc. Adobe Flex, por ejemplo, maneja XML muy bien, incluso mejor que JSON. Definitivamente es un sustituto apropiado para JSON. Personalmente prefiero JSON por su sintaxis JS, pero XML también es bueno.

Java Serialization - Debe considerarse solo para la comunicación de Java a Java. Una nota importante es que las definiciones de clase deben estar en el envío y la recepción termina y, a menudo, no se gana mucho pasando el objeto completo. No descartaría RMI como un protocolo de comunicación, simplifica el desarrollo. Sin embargo, los componentes de la aplicación resultante serán acoplados rígidamente lo que hará que sea muy difícil reemplazarlos.

Una nota más: la serialización en general tiene su costo. Sin embargo, cuando la comunicación se realiza a través de una red, el cuello de botella suele ser la red en lugar de la serialización/deserialización en sí misma.

+0

¿Todavía considerará JSON o XML sobre la serialización java cuando se trata de comunicación JAVA-JAVA? – peter

+0

Si todo lo que está pasando son datos, iré por XML o JSON. No entraría en serializar y transmitir objetos Java manualmente. Mire en Java RMI si tiene sentido tener la misma definición de objeto en ambos extremos, y en caso de que esté interesado en invocar métodos en el objeto remoto. Espero eso ayude. –

6

Creo que depende. Si está enviando una solicitud http o algo así, entonces JSON o XML obviamente son una buena opción. Si solo está enviando un objeto java sobre un socket tcp para algún algoritmo distribuido o algo así, creo que la serialización java es más fácil/mejor

1

Creo que como desarrollador no tenemos que ocuparnos de la serialización de los objetos de respuesta. pero si consideramos JSON, tiene ventajas dignas para elegir sobre XML.

  1. JSON Response no necesita una respuesta codificada a diferencia de XML.
  2. manejo y procesamiento de JSON es más rápido en comparación con XML porque no se analiza.
  3. La respuesta XML para AJAX siempre está codificada, por lo que el proceso lleva tiempo.
  4. JSON se ajusta mejor a Jquery para la codificación relacionada con la interfaz de usuario y es más rápido.
  5. Procesamiento de datos enormes Ejemplo: obtención de datos de indexación hacia/desde el servidor, el manejo de JSON es más rápido.
4

Mientras que la serialización en la red funcionaría tanto xml como json. Depende del consumidor de esta información.

  • Si el consumidor es un navegador usando Ajax para solicitar información y hacer algo en la pantalla, en general, Jason es la mejor apuesta como su ya en formato JavaScript Object y no hay sobrecarga de convertir a los objetos compatibles Javascript . De hecho, muchas bibliotecas de Ajax (por ejemplo, jQuery) tienen un buen soporte para json.

  • Si su consumidor es otra aplicación que puede o no estar en Java, entonces xml es el mecanismo preferido de serialización. Los servicios web usan xml en gran medida.

  • Si su consumidor es otro programa Java, entonces definitivamente la opción de serialización java es preferible (por ejemplo, RMI). Así que aún no ha salido :-).

Pero sí, hay una línea borrosa entre XML y Json. Lo que mencioné aquí es la práctica general. Aquí hay un nice article poniendo todo el aspecto en xml vs jason.