20 agosto, 2021

¿Cuáles son las especificaciones y sus implementaciones para crear un servicio web en java?

Web Service es una tecnología que permite que las aplicaciones se puedan comunicar entre sí y así poder intercambiar datos en diferentes plataformas y utilizando diferentes lenguajes de programación. La implementación de esta especificación técnica se puede implementar de diferentes formas, mediante el uso del protocolo HTTP basado en XML (SOAP) o usando JSON (REST).

Ahora que sabemos que las dos formas anteriores se pueden usar para la comunicación, entonces necesitamos describir y estandarizar las dos formas anteriores. Y este trabajo estandarizado lo realizó Sun. Por lo tanto, existen dos especificaciones en Java para la creación de servicios web: JAX-WS y JAX-RS.


¿Qué es JAX-WS?

JAX-WS (Java Api for XML Web Services), o en español API de Java para servicios web XML. Es una tecnología desarrollada a partir de Java Enterprise Edition 5 (JEE5) como reemplazo de la API JAX-RPC. JAX-WS permite construir servicios web y clientes que se comunican utilizando el lenguaje de marcado XML mediante el protocolo SOAP y HTTP conjuntamente con otros estándares web.

Entre las implementaciones de JAX-WS se incluyen:

  • Apache Axis1, es una implementación OpenSource de SOAP que proporciona un entorno de ejecución para Servicios Web implementados en Java. (Ya no es recomendable su uso)
  • Apache Axis2, sucesor de Apache Axis 1-x. Es más flexible, eficiente y configurable.
  • XFire, este entorno, al igual que el Apache Axis, utiliza componentes del proyecto GlassFish. (Ya no es recomendable su uso)
  • Apache CXF, es un framework de servicios web de código abierto. Nace de la combinación de Celtix + XFire. 
  • Metro, es una pila de servicios web open source parte del proyecto GlassFish.
  • Spring WS, es una extensión a Spring para facilitar la creación de servicios web Java.

¿Qué es JAX-RS?

JAX-RS (Java API for RESTful Web Services), o en español API de Java para servicios web RESTful. Es una API del lenguaje de programación Java que proporciona soporte en la creación de servicios web de acuerdo con el estilo arquitectónico REST y el protocolo HTTP. La comunicación es mediante el formato JSON (aunque también se puede usar XML, TEXTO, HTML, etc., siempre y cuando el cliente y el servidor se entiendan y estén contentos, no hay reglas a diferencia de SOAP que si define unas normas sobre cómo deben ser procesados la información, definiendo una serie de pasos que deben cumplir las implementaciones del protocolo).

Entre las implementaciones de JAX-RS se incluyen:

  • Apache CXF, un framework de servicios web de código abierto.
  • Jersey, la implementación de referencia de Sun (ahora Oracle).
  • RESTeasy, implementación de JBoss.
  • Restlet, creado por Jerome Louvel, un pionero en frameworks de REST.
  • Apache Wink, proyecto de Apache Software Foundation Incubator, el módulo del servidor implementa JAX-RS.
  • JBoss, la librería org.jboss.resteasy da soporte de JAX-RS sobre la plataforma JBoss.

Como dato adicional, en la actualidad existe una nueva tecnología llamada GraphQL la cual fue creada por Facebook en el 2012 y lanzada el 2015, y que vendría a ser una arquitectura alternativa a REST.

La principal diferencia entre SOAP y REST, es que SOAP es un protocolo (es un estándar, tiene normas que cumplir), y REST no lo es (no tiene reglas, permite muchos formatos de datos diferentes, ósea que puedes enviar un json, un texto, un xml, un html, etc. Lo importante es que el cliente y el servidor se entiendan y estén contentos).


No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!