Technologies

YAPS : les technos JEE mises en oeuvre

Publié le : Auteur: vhanniet 2 commentaires
technologies

L’application Java Pet Store a été conçue initialement par Sun pour illustrer le développement d’une application de e-commerce avec J2EE. L’application d’origine est complètement obsolète avec les versions actuelles de Java, et elle a été reconçue et réécrite pour Java 6 EE par Antonio Gonçalvez (voir ici) et on peut donc l’appeler YAPS (Yet Another Pet Store).

Fonctionnellement l’application permet de vendre en ligne des animaux de compagnie (pets), mais ce n’est pas cet aspect que nous évoquons dans ce billet.

De nos jours, lorsqu’on parle de technologies Java on utilise souvent les mots magiques « JEE », « Spring », « JPA », « Hibernate », « JSF », « Maven » etc. En fait, ces mots clés se rattachent à des plans différents :

  • JEE est un ensemble de spécifications,
  • Spring est un noyau framework auxquels sont généralement associés des modules spécialisés, comme par exemple Spring DAO
  • JPA est une spécification,
  • Hibernate est un framework de persistance qui implémente JPA (et même qui l’a inspiré en fait…),
  • JSF est un framework pour le développement d’applications Web. Les différentes versions de JSF sont autant d’implémentations de référence de différents JSR, par exemple JSF 2.0 implémente la JSR 314.
  • Maven est un outil d’automatisation de build,
  • etc.

On le voit donc : on mélange des outils, des spécifications normatives, des frameworks, des styles d’architecture…
Qui plus est, ce ne sont même pas pas tous des « standards officiels » de Java EE même s’ils sont des « standards de fait ». Dans la liste qui précède : « Spring », « Hibernate », « Maven » ne sont pas des implémentations de référence des spécifications standards de Java. Pour rappel, mais ce n’est pas l’objet de ce billet, l’évolution de la « plate-forme Java » est guidée par les décisions du Java Community Process (JCP), lequel émet des Java Specification Requests (JSR) qui sont des propositions d’évolution de la plate-forme.

Donc, les « technos » utilisées dans YAPS sont :

Par ailleurs en matière d’implémentation, et on peut également appeler ça « technos », YAPS utilise Glassfish 3 comme serveur d’application, et Java DB (l’implémentation Oracle de Apache Derby) comme SGBD.

Pour se familiariser avec les technos qu’on ne connaît pas on peut, par exemple, s’amuser à les retirer ou les remplacer dans YAPS sans que ça ne change les fonctionnalités ni même « l’expérience utilisateur » (aux détails de look prêt). Et ce d’autant plus facilement que la complexité métier de l’application est de niveau… Quelle complexité ?

 Illustration : « J’ai rencontré le diable »

  • Merci Vincent pour ces 2 articles sur YAPS. C’est super intéresant comme idée.

    J’ai regardé rapidement le code via GitHub et je pense que de mettre en place Spring Data JPA, pourrait encore améliorer l’application.

    Si tu ne connais pas Spring Data JPA, je te conseille d’esayer. Pour tous les services de CRUD et meme de pagination tu n’as rien à coder! Il suffit juste que le nom de ton interface service suive une regle de nommage (ex : vous n’aurrez pas besoin de coder findCatalog de https://github.com/JavaTeam/agoncal-application-petstore-ee6/

    Angelo

  • En fait, YAPS d’origine n’utilise pas du tout Spring… Par choix, puisqu’il s’agit de mettre en avant des technos JEE et que Spring… N’est pas JEE ! (j’ai un post en cours sur ce sujet).
    Mais l’idée dans les expérimentations est de laisser libre cours à toute techno. On pourrait par un exemple faire un YAPS full Spring ! (ie utiliser toutes les technos Spring qui ont du sens pour l’appli à isofonctionnalité).