web-dev-qa-db-fra.com

Cadres JAX-RS

J'ai travaillé sur l'implémentation de référence JAX-RS (Jersey). Je connais au moins deux autres frameworks (Restlet & Apache CXF).

Ma question est: quelqu'un a-t-il fait une comparaison entre ces cadres et si oui, quel cadre recommanderiez-vous et pourquoi?

50
Shimi Bandiel

FWIW nous utilisons Jersey car il regorge de fonctionnalités (par exemple WADL, vues implicites, support XML/JSON/Atom) a une communauté de développeurs large et dynamique derrière elle et a une grande intégration de printemps .

Si vous utilisez JBoss/SEAM, vous trouverez peut-être que RESTeasy s'intègre un peu mieux - mais si vous utilisez Spring for Dependency Injection, alors Jersey semble l'implémentation la plus simple, la plus populaire, la plus active et la plus fonctionnelle.

30
James Strachan

Restlet a une longue liste d'extensions pour Spring, WADL, XML, JSON et bien d'autres, y compris une extension pour l'API JAX-RS.

C'est aussi le seul framework disponible en six éditions cohérentes :

  • Java SE
  • Java EE
  • Google Web Toolkit
  • Google App Engine
  • Android
  • Environnements OSGi

Ses principaux avantages sont:

  • aPI client et serveur entièrement symétrique lorsque JAX-RS a été conçu pour le traitement côté serveur
  • connecteurs pour d'autres protocoles que HTTP (mappage vers la sémantique HTTP) lorsque JAX-RS est HTTP uniquement
  • étendue des fonctionnalités beaucoup plus large, y compris le contrôle complet du routage URI via l'API Restlet (mais peut s'intégrer à Servlet si nécessaire)
  • provision complète pour le support NIO

L'API JAX-RS peut être un bon choix si vous êtes limité aux API approuvées par JCP (alors n'utilisez pas Spring ou toute extension des projets JAX-RS comme Jersey et RESTeasy!), Mais sinon Restlet est le cadre le plus mature ( initialement sorti en 2005) et vous offrira, dans sa version 2.0, tous les avantages des annotations combinées à un framework orienté classe puissant et extensible.

Pour une plus longue liste des fonctionnalités, veuillez consulter cette page .

Cordialement, Jerome Louvel

Restlet ~ Fondateur et développeur principal ~ http://www.restlet.org

26
Jerome Louvel

Mon équipe et moi utilisons largement Restlet, mais pas ses fonctionnalités JAX-RS. Je peux vous dire que j'ai été très impressionné par les développeurs et la communauté Restlet; ils sont très actifs, engagés, réactifs et attachés à un cadre stable, efficace, fiable et efficace. Je suis désolé, je ne peux pas répondre directement à votre principal intérêt, mais j'ai pensé que vous pourriez trouver mon expérience avec Restlet précieuse.

7
Avi Flax

Mon collègue mentionne pourquoi nous utilisons RESTeasy pour notre projet actuel dans services Web RESTful dans Java EE avec RESTeasy (JAX-RS) :

Son implémentation de référence, Jersey, n'a pas été choisie car nous avons eu du mal à bien l'intégrer à EJB3 et Seam 2.0.

Nous utilisons l'implémentation RESTeasy de JAX-RS, car nous n'avons eu aucun problème à l'intégrer à nos EJB et Seam. Il dispose également d'une documentation suffisante.

Il existe une autre implémentation d'Apache, mais je ne l'ai pas essayée car elle utilise une ancienne version de JAX-RS.

Enfin, il existe encore un autre cadre pour les services Web RESTful pour Java appelé Restlet mais nous ne le favorisions pas car au moment de la rédaction de ce document, il utilise une architecture personnalisée, même si JAX-RS est approprié le soutien est en cours.

6
Peter Hilton

Nous avons découvert qu'Apache Wink est très facile à utiliser, prend en charge JAX-RS et possède de nombreuses fonctionnalités au-delà de la norme.

6
Shimi Bandiel

Il semble qu'il y ait 4 implémentations JAX-RS décentes, donc vous êtes probablement d'accord avec l'une d'entre elles. Pour ce que ça vaut, j'ai trouvé Jersey (1.0.2) vraiment sympa jusqu'à présent. Mes besoins sont un service back-end assez modeste, simple, prendre soin de la plomberie et ainsi de suite. Et ce maillot fonctionne très bien.

6
StaxMan

Je n'utiliserais aucun cadre. Juste celui fourni avec votre serveur d'applications. Si vous utilisez les détails d'un cadre, vous perdrez la portabilité et vous serez dans l'enfer si le fournisseur du serveur d'application inclut une version différente de votre framework préféré. Je m'en tiendrai à jax-ws.

0
Fabián Escalante