[Java | Scala] ¿Alguna librería para comunicación JSON transparente?

Iniciado por Ragnarok, 28 Octubre 2014, 13:01 PM

0 Miembros y 2 Visitantes están viendo este tema.

Ragnarok

Estoy buscando librerías para Java o Scala para comunicar dos procesos de la manera más transparente posible. La idea es


  • Usar JSON para tener una compatibilidad mayor en cliente y servidor, pudiendo reemplazar uno de los dos (o ambos) por versiones en otros lenguajes.
  • Que sea realmente transparente y ligero, porque si no ni siquiera va a compensar meterse en estos follones. Montar todo (sin tener ni idea antes) debería llevar menos de un día.
  • En relación con el punto anterior, a ser posible que no forme parte de un web framework, como Play, porque realmente no es eso.

De momento he encontrado RabbitMQ, ¿alguien conoce alternativas a ser posible mejores?

Muchas gracias.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

~ Yoya ~

RabbitMQ no es una librería, es un Message Broker. Cuando vi el mensaje que decía JSON y librería, pensé que necesitabas una librería para serializar de Java/Scala a JSON y deserializar de JSON a Java/Scala...

Cualquiera de los mas populares Message Broker te dará los resultados que necesitas porque todos se utilizan en sistema muy concurrentes y tienen grandes compañias detrás de ellos. Yo los únicos Message Broker que he manejado son los que vienen en los Application Server como Weblogic, Glasshfish, etc... Pero estos no te funcionaran directamente con otros lenguajes y estoy seguro que no es lo que quiere ni necesitaras.

Te puedo mencionar los siguientes Message Broker: ActiveMQ, zeromq, Apollo (basado en ActiveMQ's) y el mismo que habias mencionado (RabbitMQ).

Y si necesitas mas restricciones, mas exactitud a la hora de parsear los datos, ya que los datos que comunicas son muy complejos e incluso validar la estructura de los mensajes puedes reemplazar JSON por XML. Pero puede que te agregue complejidad al sistema y si no tienes todo el tiempo del mundo, te recomiendo que sigas con JSON ya que parece que tienes mas experiencia con el.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Ragnarok

Realmente no creo que use RabbitMQ porque si no me equivoco requiere de un servidor, no lo había notado.

No he encontrado ninguna librería que sea tan ligera como quiero. O me meto con Play y monto un servidor web completo para atender peticiones REST y demás (que no quiero) o lo más probable es que simplemente abra un socket para escuchar, le enchufe JSON por el socket y devuelva resultados en JSON también. Me gustaría una librería que se ocupara de los detalles de protocolo, pero no la he encontrado, así que lo mismo la hago yo.

La idea es usar JSON por compatibilidad. Scala tiene muy buen soporte para XML, pero otros lenguajes (como Python y javascript) tienen librerías más cómodas para trabajar con JSON, básicamente para convertir sus estructuras de datos de y a JSON.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

~ Yoya ~

En ese caso puedes utilizar la especificación JAX-RS (para resful) y montarla sobre un servlet container embebido como Jetty para que te manejé la concurrencia.

También pudieras utilizar JAX-RS sin ningún servlet container pero solo te daría atendería una petición a la vez a menos que manejes tu mismo la concurrencia pero esto te agregaría una complejidad innecesaria.

Otra opción también sería utilizar Netty.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Ragnarok

Ah, ¡qué tiempos aquellos!

Hoy en día usaría Scalatra, con JSON4s, y para los pringaos de Java, Jackson 2.

La verdad es que me alegro de no tener que trabajar con Java ahora mismo.

De vez en cuando conviene echar la vista atrás, y planificar para el futuro, distanciarse del día a día y tomar perspectiva.

Os animo a hacerlo.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones