Java- Jersey, JAX RS

J’ai de l’expérience en développement de programmes Java. Cependant, j’ai toujours eu du mal à comprendre certaines notions de base, telles que tous les composants constitutifs d’une application Java Enterprise.

Par exemple, j’ai implémenté des services Web basés sur RESTful et SOAP consommés à partir d’une application J2ME et effectué des tests de performances et de coûts pour mon centre de contrôle logiciel.

Pour développer les services Web basés sur RESTful / SOAP, j’ai utilisé la fonctionnalité d’assistant de Netbeans. Il utilise JAX-RS pour implémenter les services Web REST. Ensuite, je vois d’autres tutoriels utilisant JAX-RS avec Jersey, etc. Je me perds souvent dans le jargon tel que les API, les frameworks d’application, les fichiers de configuration, l’édition Java, etc. Voici quelques questions.

  1. JAX-RS est une API. Une API est-elle fondamentalement une collection de bibliothèques utilisée pour implémenter une certaine forme de fonctionnalité en Java?

  2. Selon leur site ” Jersey est l’open source, qualité de production, JAX-RS (JSR 311), implémentation de référence pour la création de services Web RESTful.” Jersey est-il une autre API ou est-elle utilisée conjointement avec JAX-RS, et quelle est la différence entre les deux?

  3. Comment savoir si j’ai implémenté de telles API et si j’en ai besoin?

Lorsque j’ai décidé d’implémenter des services Web RESTful, je venais de suivre un didacticiel Netbeans et les assistants permettaient un temps de développement simple et rapide. Je comprends que les sorciers sont utilisés parce qu’ils sont rapides et font le travail. Cependant, je me demande, quand on vous confie une tâche à coder. Comment savoir quelles API, frameworks, add-ons, etc. utiliser? Quelle édition de Java est compatible avec les bibliothèques, etc. Est-ce juste moi ou est-ce que vous vous perdez parfois? Ou est-ce que cela viendra de l’expérience?

Merci d’avoir pris le temps de lire 🙂

  1. JAX-RS est plus qu’une simple API. C’est une demande de spécification Java (JSR) . Celles-ci définissent l’API et les comportements devant être pris en charge par un implémenteur. Si vous écrivez votre code pour utiliser l’API définie par le JSR, vous pouvez choisir quelle implémentation utiliser au moment de l’exécution.

  2. Jersey est un code qui fournit le comportement dicté par JAX-RS défini par JSR 311 . En l’appelant, l’implémentation de référence indique qu’elle est prise en charge par les créateurs de JSR et est probablement fournie avec le logiciel Oracle. Les autres implémentations de JSR 311 incluent également Restlet , CXF et RESTEasy .

  3. En règle générale, vous utiliseriez une bibliothèque tierce qui implémenterait la spécification, comme indiqué au numéro 2 ci-dessus. La seule raison pour laquelle vous pourriez envisager de l’implémenter vous-même est si une implémentation appropriée n’existait pas.

La seule façon de savoir quelles API et spécifications peuvent vous aider consiste en un processus de découverte. Les JSR sont censés constituer une approche commune pour définir une solution à un problème générique, dans laquelle vous pouvez choisir la mise en œuvre qui vous convient le mieux.

  1. L’API ne fournit aucun code d’implémentation (c’est-à-dire des classes concrètes qui effectuent le traitement réel). L’API spécifie uniquement les interfaces, les annotations et les exceptions. Il peut y avoir des cours concrets avec un comportement fondamental très basique, mais c’est tout. L’idée des API standard, telles que JAX-RS, est de donner aux développeurs un moyen de coder, quelles que soient la plate-forme et la mise en œuvre sous-jacentes.

  2. Jersey est l’implémentation – elle inclut de nombreuses classes concrètes qui gèrent réellement les activités promises par l’API. Dans le cas de JAX-RS, il gère les demandes et les réponses.

  3. Vous n’implémentez généralement pas une API. Vous en utilisez un. Normalement, les API standard JavaEE utilisent le javax. package, tandis que les implémentations utilisent un package différent – com.sun , org.apache , etc. C’est un bon signe si vous utilisez uniquement le javax. interfaces et non les classes concrètes.

sans aucune connaissance en mathématiques et en physique, vous ne pouvez pas concevoir. Passez beaucoup de temps à apprendre les principes fondamentaux. Si vous rencontrez des problèmes de développement, ces assistants ne pourront plus vous aider …

  1. JAX-RS est juste une spécification, pas une implémentation. Les implémentations sont Jersey, RestEasy, etc.
  2. voir 1.
  3. tant que vous n’écrivez pas votre propre implémentation JAX-RS, vous n’implémentez pas les API. Vous les utilisez dans vos projets.

Le choix du bon cadre pour une tâche donnée est l’un des problèmes les plus difficiles à accomplir dans l’écosystème Java, en raison de la quantité de choix que vous avez.

Ma stratégie consiste tout d’abord à rechercher des solutions dans certains endroits bien connus ( apache.org en est un exemple), puis à mettre en place une petite preuve de concept pour voir si ce cadre peut faire le travail assez facilement. N’utilisez pas d’assistant, ils ne permettent pas de découvrir un nouveau cadre. Ou utilisez-les et essayez de découvrir leurs limites …