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.
¿Todavía considerará JSON o XML sobre la serialización java cuando se trata de comunicación JAVA-JAVA? – peter
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. –