Question

Bientôt, je vais devoir commencer un projet web pour une entreprise, et je dois maintenant choisir une technologie pour construire l'application. Je pense à l'utilisation de Java, d'où je voudrais trouver un cadre qui me aider à construire l'application (je suis habitué framework PHP tels que CakePHP & CodeIgniter).

Ce que je ne comprends pas qu'il semble exister beaucoup de cadre et des technologies qui n'ont pas le même but. Cadre d'action, cadre composant ... Que puis-je faire avec un je ne peux pas le faire avec un autre? Il semble une application web java devrait être développé en mélangeant un bon nombre de différentes technologies, donc je suis un peu perdu ... J'ai eu un coup d'oeil à différents cadres de Java, tels que JSF, rayures, Struts2, tapisserie, Wicket et au printemps. A propos de la suite, je ne vois pas tranquilles quelles sont les différentes parties de ce cadre, que peut-il faire pour moi et ce qu'il ne peut pas. Que puis-je prendre du printemps et ce que je ne ai pas besoin ...

Par conséquent: Que dois-je besoin de construire une application web java?

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

A propos de l'ORM, je suppose que je vais juste aller avec Hibernate ... Aussi je l'ai entendu parler de Maven ou Ant, de quelle façon peuvent-ils me aider?

Un conseil / directive serait très apprécié :-) Merci à l'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 convivial / Facilité pour construire l'interface utilisateur agréable ...
  • Internationalisation
  • étant encore étudiant, négociabilité des compétences de questions pourrait ...

L'application ou à construire est à la fois

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

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

Était-ce utile?

La solution

Ceci est une question très difficile à répondre, après avoir é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 cadres et personne ne peut vraiment vous dire que l'on est le mieux adapté pour vous, ce que nous pouvons faire est de vous donner une ventilation de certaines des technologies.

Voici ce que je suis venu à travers à la recherche des mêmes réponses que vous voulez.

Java a un tas de technologies qui tentent de fournir une solution pile complète. Ces technologies peuvent être décomposées en d'autres technologies, mais fonctionnent bien lorsque vous les utilisez ensemble.

En fait, il y a 3 niveaux pour les applications Web, la présentation, et le backend de données. Le niveau de présentation est l'avant, ce que l'utilisateur voit. Vous pouvez généralement mélanger et les technologies de match pour ces trois couches. Vous pouvez par exemple utiliser un rayures frontal avec le cadre de printemps pour la COI et Hibernate votre ORM.

Il y a beaucoup de grandes technologies que vous pouvez utiliser pour la couche de présentation, y compris Spring MVC, Struts, Stripes, Wicket, JSF / SEAM et tapisserie parmi quelques-uns. La plupart d'entre eux utilisent une page JSP pour l'affichage à l'aide JSTL, à l'exception de ce qui sépare réellement wicket complète le code HTML de la logique en utilisant Java « composants » (POJO). Il y a des avantages et des inconvénients aux deux approches. L'avantage de l'approche de guichet est que vous avez statique et une vérification de type séparation complète du html afin que vous puissiez la passer à votre concepteur.

Pour la couche d'affaires les gens utilisent généralement une sorte de cadre de contrôle de l'inversion (CIO) pour injection de dépendance (DI). Les cadres populaires pour la COI sont le printemps et Seam, ceux-ci ont des technologies associées comme le printemps-sécurité et sont généralement pris en charge par les autres technologies. Google Guice semble être populaire pour un cadre de DI droit.

Enfin, pour la couche de données la plupart des gens ont tendance à utiliser Hibernate ou. Il y a d'autres, mais je n'ai aucune expérience avec eux et ne peuvent offrir plus d'informations.

La tapisserie est un autre cadre, qui tente d'être une pile complète de ce que je comprends et prend comme petite porte (ou je suppose que Wicket prend comme tapisserie) approche. Grails est un autre framework hiérarchisé en utilisant Groovy et construit sur Spring et Hibernate. Si vous aimez Rails, Grails est assez bonne.

La plupart de ces technologies ont un grand nombre d'informations disponibles et listes de diffusion très actifs / IRC chatrooms. Ce que vous devez faire est de jeter un oeil à eux et décider quelle approche est la bonne pour vous. Personne ici est en mesure de vous dire ce que vous voulez.

Si vous voulez une recommandation, je voudrais un jour utiliser un Wicket / Guice / Hibernate pile.

Autres conseils

Mon préféré est sans aucun doute 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 déclarative qui vous permet d'économiser beaucoup de frappe. Il intègre également avec le conteneur Spring qui est certainement mon conteneur de remplacement J2EE préféré léger. Je combine habituellement SpringMVC avec JSP simple, mais il y a beaucoup d'autres techs vue à choisir. Pour la persistance, je l'habitude d'utiliser Hibernate. Peut-être la peine de jeter un oeil à Spring ROO qui est un peu comme Grails sans Groovy. Spring Security offre une manière déclarative agréable et facile de faire de la sécurité et intègre dans un tas de technologies d'authentification.

Maven et fourmis sont à la fois construire des outils comme Maven gère également les dépendances pour vous. Vous « juste » mettre en place des descripteurs qui décrivent les bibliothèques que vous voulez et les exigences de version, et Maven télécharger toutes les bibliothèques et leurs dépendances pour vous. Il vous oblige à suivre une certaine mise en page du projet, bien que. Pour fourmi, il y a lierre qui fait dépendances.

Je vous suggère de jeter un oeil à Grails . Grails est un "codage par convention" cadre d'application web construire sur une pile de frameworks Java éprouvées (Spring, Hibernate, ...) et en utilisant le Groovy langage ..

La beauté de Grails est que vous avez besoin peu de connaissances du printemps, Hibernate, etc. pour commencer. Mais après que vous avez toujours accès à la pleine puissance de ces cadres devrait-il être nécessaire.

certainement utiliser Spring pour l'arrière; il y a une excellente communauté sur leur forum de support gratuit (vous pouvez aussi payer pour un soutien plus formel).

En ce qui concerne votre décision d'utiliser Hibernate, vous pouvez coder contre JPA pour découpler votre application à partir Hibernate (qui est l'une de plusieurs implémentations JPA).

Si vous voulez un front-end Ajax, il vaut la peine de jeter un oeil sur le cadre ZK ; it'svery facile à utiliser sans avoir à apprendre JavaScript, et évite d'avoir à utiliser des bibliothèques de plomberie comme DWR.

Les conseils d'autres à utiliser Spring est une excellente idée. Vous constaterez que vous allez réellement utiliser un certain nombre de cadres ensemble, car chaque cadre permet de résoudre un problème légèrement différent.

Je vous suggère d'investir un peu de temps avec chaque cadre ou de la technologie avant de sauter mais vous voulez éventuellement de les amener à travailler ensemble. Vous voudrez peut-être une configuration Struts + Spring + Hibernate par exemple. Leur configuration pourrait être un mal de tête.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top