2009-05-16 14 views
4

Bientôt je vais devoir démarrer un projet web pour une entreprise, et je dois maintenant choisir une technologie pour construire l'application. Je pense à l'utilisation de Java, donc je voudrais trouver un framework qui va m'aider à construire l'application (je suis habitué au framework PHP tel que CakePHP & CodeIgniter). Ce que je ne comprends pas, c'est qu'il semble exister beaucoup de cadre et de technologies qui n'ont pas le même objectif. Cadre d'action, cadre de composante ... que puis-je faire avec un que je ne peux pas faire avec un autre? Il semble qu'une application web java devrait être développée en mélangeant beaucoup de technologies différentes, donc je suis un peu perdu ... J'ai jeté un coup d'oeil à différents frameworks java, tels que JSF, Stripes, Struts2, Tapestry, Portillon et printemps. A propos de ce qui suit, je ne vois pas quelles sont les différentes parties de ce framework, que peut-il faire pour moi et ce qu'il ne peut pas faire. Que puis-je prendre de Spring et ce dont je n'ai pas besoin ...Comment créer une application web java

Par conséquent: de quoi ai-je besoin pour créer une application web java?

J'ai déjà utilisé JSF pour une application de base CRUD, mais j'essaie de trouver quelque chose qui puisse mieux répondre à mes besoins. L'application que nous devrons construire sera à la fois une plate-forme communautaire ainsi qu'un site marchand, avec données sensibles pour protéger :)

A propos de l'ORM, je suppose que je vais aller avec Hibernate ... J'ai aussi entendu parler de Maven ou Ant, de quelle manière peuvent-ils m'aider?

Tout conseil/guide serait très apprécié :-) Merci d'avance.

Edit: ce que mes besoins sont les suivants: un cadre java qui est:

  • bien documenté/facile à obtenir de l'aide/aussi facile que possible ...
  • plus java, mieux
  • Ajax friendly/Facilité pour construire l'interface utilisateur agréable ...
  • internationalisation
  • étant encore étudiant, négociabilité des compétences peut importe ...

L'application ou à construire est à la fois un

  • Site communautaire: web 2.0, CRUD
  • site de commerce électronique

spécifications complètes ne sont pas encore terminées.

+0

Ce serait bien, si vous décrivez brièvement vos besoins, afin que les gens puissent vous conseiller quelque chose qui leur convient le mieux. –

Répondre

9

Ceci est une question très difficile à répondre, ayant été dans votre situation récemment, je vais essayer de donner un aperçu. Fondamentalement, avec Java, il y a une tonne de choix pour les frameworks et personne ne peut vraiment vous dire lequel vous convient le mieux, ce que nous pouvons faire est de vous donner une ventilation de certaines technologies.

Ce qui suit est ce que j'ai trouvé à la recherche des mêmes réponses que vous voulez.

Java a un tas de technologies qui tentent de fournir une solution complète. Ces technologies peuvent être divisées en d'autres technologies mais fonctionnent bien lorsque vous les utilisez ensemble. Fondamentalement, il existe 3 niveaux pour les applications Web, la présentation, l'entreprise et le niveau de données. Le niveau de présentation est le frontal, ce que l'utilisateur voit. Vous pouvez généralement mélanger et assortir des technologies pour ces trois couches. Vous pouvez par exemple utiliser une interface frontale avec le framework Spring pour IOC et Hibernate comme ORM.

Il existe de nombreuses technologies que vous pouvez utiliser pour la couche de présentation, notamment Spring-MVC, STRUTS, Stripes, Wicket, JSF/SEAM et Tapestry. La plupart d'entre eux utilisent une JSP pour la vue en utilisant JSTL, à l'exception du portillon qui sépare réellement le html de la logique en utilisant Java "components" (POJOS). Il y a des avantages et des inconvénients aux deux approches. L'avantage de l'approche guichet est que vous avez une vérification statique et une séparation complète du code HTML afin que vous puissiez le remettre à votre concepteur.

Pour la couche de gestion, les utilisateurs utilisent généralement une sorte de structure d'inversion de contrôle (IOC) pour l'injection de dépendances (DI, Dependency Injection). Les cadres populaires pour IOC sont Spring et Seam, ceux-ci ont des technologies associées comme Spring-sécurité et sont généralement pris en charge par les autres technologies. Google Guice semble être populaire pour un cadre droit DI. Enfin, pour la couche de données, la plupart des gens ont tendance à utiliser Hibernate ou JPA. Il y en a d'autres, mais je n'ai aucune expérience avec eux et je ne peux pas offrir plus d'informations.

Tapisserie est un autre cadre qui tente d'être une pile complète de ce que je comprends et prend un wicket comme (ou je suppose que Wicket prend une tapisserie-comme) approche. Grails est encore un autre framework full-stack utilisant Groovy et construit au dessus de Spring et Hibernate. Si vous aimez Rails, Grails est plutôt bon.

La plupart de ces technologies ont beaucoup d'informations disponibles et des listes de diffusion/chatrooms IRC très actifs. Ce que vous devez faire est de les regarder et ensuite décider quelle approche est la bonne pour vous. Personne ici n'est en mesure de vous dire ce que vous aimerez.

Si vous voulez une recommandation, j'aimerais un jour utiliser une pile Wicket/Guice/Hibernate.

2

Je vous suggère de regarder Grails. Grails est un framework d'application web "coding by convention" construit sur une pile de frameworks Java éprouvés (Spring, Hibernate, ...) et utilisant le langage Groovy ..

La beauté de Grails est que vous avez besoin de peu de connaissances sur Spring, Hibernate, etc. pour commencer. Mais après, vous avez toujours accès à la pleine puissance de ces cadres si cela s'avère nécessaire.

+1

Je pense que je voudrais utiliser autant de Java que possible :) – Sylvain

+1

Groove est essentiellement Java avec des fonctionnalités supplémentaires ... et vous pouvez utiliser Java pur à peu près partout où vous voulez en dehors des classes de base requises par le framework, il intègre en toute transparence avec Groovy. –

3

Mon préféré est sans aucun doute le printemps. Le nouveau Spring MVC 2.5 est facile et rapide à mettre en place, beaucoup d'annotations pour vous aider à câbler vos contrôleurs de manière déclarative, ce qui vous permet d'économiser beaucoup de frappe.Il s'intègre également avec le conteneur Spring, qui est définitivement mon conteneur de remplacement J2EE léger et préféré. Je combine généralement SpringMVC avec JSP simple, mais il y a beaucoup d'autres technologies de vue à choisir. Pour la persistance, j'utilise habituellement Hibernate. Peut-être utile de jeter un oeil à Spring ROO qui est un peu comme Grails sans Groovy. Spring Security offre une manière déclarative simple et agréable de faire de la sécurité et s'intègre dans tout un tas de technologies d'authentification. Maven et Ant sont tous les deux des outils de construction tandis que Maven gère également les dépendances pour vous. Vous "juste" configurer des descripteurs qui décrivent les bibliothèques que vous voulez et les exigences de version, et maven téléchargera toutes les bibliothèques et leurs dépendances pour vous. Cela vous oblige cependant à suivre une certaine disposition de projet. Pour la fourmi, il y a le lierre qui fait les dépendances.

+0

Je ne pense pas que Maven vous oblige à suivre une mise en page de projet spécifique, c'est juste que vous devez faire beaucoup plus de configuration sur convention si vous ne le faites pas. –

+0

J'ai entendu dire que vous pouvez changer la disposition du projet avec encore plus que la quantité non-triviale de configuration pour les dépendances. Je ne suis pas vraiment fan de maven - ou de tout autre outil de gestion de dépendance de projet. Ils semblent tous finir par exiger plus de travail que de simplement faire face aux dépendances à la main. – fforw

2

Utilisez définitivement le ressort pour l'extrémité arrière; il y a une excellente communauté sur leur forum de support gratuit (vous pouvez aussi payer pour un support plus formel). En ce qui concerne votre décision d'utiliser Hibernate, vous pourriez vouloir coder avec JPA afin de découpler votre application d'Hibernate (qui est l'une des nombreuses implémentations de JPA).

Si vous voulez un frontal Ajax, il est intéressant de jeter un oeil à la structure ZK; Il est très facile à utiliser sans avoir à apprendre le JavaScript, et évite d'avoir à utiliser des bibliothèques de plomberie comme DWR.

1

Le conseil d'autres personnes d'utiliser Spring est une excellente idée. Vous constaterez que vous utiliserez un certain nombre de frameworks différents car chaque framework résout un problème légèrement différent. Je suggérerais que vous investissiez du temps avec chaque cadre ou technologie avant de vous lancer, mais vous finirez par vouloir les faire travailler ensemble. Vous pouvez vouloir une installation de Struts + Spring + Hibernate par exemple. Les configurer pourrait être un casse-tête.

Donc, je suggère que vous utilisez AppFuse qui aide en générant l'application de base avec des fonctionnalités de base. C'est un énorme gain de temps. Vous aurez bien sûr besoin de comprendre les différents frameworks configurés pour vous, ce n'est donc pas une solution magique.

Questions connexes