JAX-RS Frameworks

He estado trabajando con la implementación de referencia JAX-RS (Jersey). Conozco al menos otros dos marcos (Restlet & Apache CXF).

Mi pregunta es: ¿Alguien ha hecho alguna comparación entre esos marcos y, de ser así, qué marco recomendaría y por qué?

FWIW estamos utilizando Jersey, ya que está repleto de características (por ejemplo, WADL, vistas implícitas, soporte XML / JSON / Atom) tiene una comunidad de desarrolladores grande y vibrante detrás y tiene una gran integración de spring .

Si usa JBoss / SEAM, puede encontrar que RESTeasy se integra un poco mejor, pero si usa Spring para Inyección de Dependencia, entonces Jersey parece la implementación más fácil, más popular, activa y funcional.

Restlet tiene una extensa lista de extensiones para Spring, WADL, XML, JSON y muchas más, incluida una extensión para JAX-RS API.

También es el único marco disponible en seis ediciones consistentes :

  • Java SE
  • Java EE
  • Google Web Toolkit
  • Motor de aplicaciones de Google
  • Androide
  • Entornos OSGi

Sus principales beneficios son:

  • API totalmente simétrica de cliente y servidor cuando JAX-RS se diseñó para el procesamiento del lado del servidor
  • conectores para otros protocolos aparte de HTTP (asignación a semántica HTTP) cuando JAX-RS es solo HTTP
  • Alcance de funciones mucho más amplio que incluye el control de enrutamiento URI completo a través de la API de Restlet (pero puede integrarse con Servlet si es necesario)
  • provisión completa para soporte de NIO

La JAX-RS API puede ser una buena opción si está restringido a las API aprobadas por JCP (¡entonces no utilice Spring ni ninguna extensión de los proyectos JAX-RS como Jersey y RESTeasy!), Pero Restlet es el marco más maduro ( publicado inicialmente en 2005) y le proporcionará, en su versión 2.0, todos los beneficios de las anotaciones combinadas con un potente y extensible marco orientado a las clases.

Para obtener una lista más larga de características, consulte esta página .

Un cordial saludo, Jerome Louvel

Restlet ~ Fundador y desarrollador principal ~ http://www.restlet.org

Mi equipo y yo utilizamos Restlet extensivamente, pero no sus características JAX-RS. Puedo decirte que he quedado muy impresionado con los desarrolladores y la comunidad de Restlet; son muy activos, comprometidos, receptivos y comprometidos con un marco estable, eficiente, confiable y efectivo. Lamento no poder abordar directamente tu interés principal, pero pensé que podrías encontrar valiosa mi experiencia con Restlet.

Mi colega menciona por qué estamos utilizando RESTeasy para nuestro proyecto actual en servicios web RESTful en Java EE con RESTeasy (JAX-RS) :

Su implementación de referencia, Jersey, no fue elegida porque tuvimos problemas para integrarla bien con EJB3 y Seam 2.0.

Estamos utilizando la implementación RESTeasy de JAX-RS, porque no tuvimos problemas para integrarla con nuestros EJB y Seam. También tiene suficiente documentación.

Hay otra implementación de Apache, pero no la he probado porque usa una versión anterior de JAX-RS.

Finalmente, hay otro marco para los servicios web RESTful para Java llamado Restlet, pero no lo favorecimos porque al momento de escribir esto, está usando una architecture personalizada, aunque se está trabajando en el soporte adecuado de JAX-RS.

Parece que hay 4 implementaciones JAX-RS decentes, por lo que probablemente estés de acuerdo con cualquiera de ellas. Por lo que vale, he encontrado Jersey (1.0.2) realmente bueno hasta ahora. Mis necesidades son bastante modestas, servicio de back-end simple, cuidar fontanería, etc. Y ese Jersey lo hace muy bien.

Descubrí que es fácil trabajar con Apache Wink, es compatible con JAX-RS y tiene muchas funciones más allá del estándar.

Yo no usaría ningún marco. Solo el que viene con su servidor de aplicaciones. Si utiliza detalles de un trabajo en bastidor, perderá la portabilidad y estará en el infierno de si el proveedor del servidor de aplicaciones incluye una versión diferente de su marco de trabajo favorito. Me quedaré con jax-ws.