Je suis très confus avec différents frameworks Java. Je veux créer un projet de serveur Java pour offrir un service Web Restful, mais je ne sais vraiment pas quel framework Je devrais choisir. Quelle est la différence entre JSF, EJB, Hibernate et Spring? Aidez-moi à mieux les comprendre.
Ce sont des cadres pour différentes couches.
[~ # ~] jsf [~ # ~] est pour la couche vue (web), c'est un framework orienté composant (chaque partie d'une page est un composant, il a un état) comme Wicket ou Tapestry, et contrairement aux frameworks Action comme Spring MVC, Struts ou Stripes
Livres: Core JavaServer Faces (3rd Edition)
Tutoriels: CoreServlets.com
EJB 3.x est un conteneur qui fait partie de la pile JavaEE . Il fait des choses comme l'injection de dépendances et la gestion du cycle de vie du bean. Vous avez généralement besoin d'un serveur d'applications JavaEE complet pour EJB3
Tutoriels: Tutoriel JavaEE 6: EJB
Livres: EJB 3 en action
Spring est également un conteneur, mais Spring peut s'exécuter dans n'importe quel code Java (une classe principale simple, une applet, une application web ou une application d'entreprise JavaEE). Spring peut faire presque tout ce que les EJB peuvent faire et bien plus encore, mais je dirais qu'il est surtout connu pour l'injection de dépendances et la gestion non intrusive des transactions
Référence en ligne (excellent)
Livres: Je n'ai pas trouvé de bon livre en anglais sur Spring 3.x, bien que plusieurs soient en préparation
Hibernate a été le premier grand ORM (mappeur relationnel d'objet) sur le Java Plate-forme, et en tant que telle a grandement inspiré [~ # ~] jpa [~ # ~] (qui fait partie de la norme EJB3 mais peut être utilisé sans conteneur EJB). Je suggérerais de coder contre JPA et d'utiliser uniquement hibernate en tant que fournisseur, de cette façon, vous pouvez facilement passer à EclipseLink, etc.
Livres: Pro JPA 2: Maîtriser l'API Java ™ Persistence (non spécifique à l'hibernation),
Persistance Java avec Hibernate (vieillir un peu)
Cependant, si vous voulez faire du REST, alors la norme la plus importante pour vous est JAX-RS . Vous pouvez l'utiliser soit dans le framework Spring, soit avec des EJB. Pour la persistance, vous pouvez utiliser Hibernate ou l'implémentation JPA d'un conteneur EJB tel que Glassfish
EJB est une Enterprise Java Bean - voir le lien pour la description, mais en gros c'est la 'valeur par défaut' Java façon d'écrire un application d'entreprise.
Hibernate est un cadre ORM; un moyen de mapper les objets/classes de votre application aux tables de base de données. Elle est liée à la façon dont vous conservez vos données dans une base de données.
Spring est un conteneur IoC/Dependency Injection qui fournit de nombreuses abstractions utiles et bien testées pour vous faciliter la vie. Spring est un peu comme son propre cadre d'application.
JSF est Java Server Faces, une technologie d'affichage pour Java applications Web.
Vous utiliseriez soit EJB OR Spring. Vous pouvez utiliser Hibernate comme implémentation de persistance, si vous le souhaitez, avec l'un ou l'autre; vous n'avez pas besoin de le faire. Pour les services Web RESTFul, vous n'avez pas vraiment besoin de JSF.
Les gens sont très satisfaits du printemps - je recommande d'utiliser cela ...
Vous devez choisir entre JEE5/6 et le printemps. Prenez la pilule rouge ou bleue, n'utilisez pas les deux.