nous en sommes au stade de la planification de la migration d’un site Web volumineux basé sur un framework mvc développé sur mesure vers un framework web basé sur Java) et fournissant un support intégré pour ajax, le contenu multimédia enrichi, mashup, etc. mise en page basée sur les modèles, validation, séparation maximale du code html/Java. Bien que Grails semble être un bon choix, nous ne souhaitons pas utiliser de langage de script. Nous souhaitons continuer à utiliser Java. La mise en page basée sur des modèles est une préoccupation majeure Utilisez cette application Web avec plusieurs sites Web dotés de fonctionnalités similaires mais d'apparence radicalement différente.
La solution basée sur le portail est-elle un bon compromis pour ce problème?
Toute idée sur l'utilisation de "Spring Roo" ou "Play" sera très utile.
J'ai trouvé des articles similaires, comme this , mais il a plus d'un an. Les choses ont sûrement changé entre-temps!
EDIT 1: Merci pour ces bonnes réponses! Ce site est en train de devenir la meilleure source unique d'informations sur les programmeurs in-the-trenches. Cependant, je m'attendais à plus d'informations sur l'utilisation d'un duo portal-cms. Jahia a l'air bien. Quelque chose de semblable?
La solution basée sur le portail est-elle un bon compromis pour ce problème?
Personnellement, je resterais à l’écart des grandes solutions de portail (ce sont souvent des tueuses de la productivité). J'ai entendu de bonnes choses à propos de Gatein mais je n'ai aucune expérience réelle avec cela.
Toute idée sur l'utilisation de "Spring Roo" ou "Play" sera très utile.
À propos de Spring Roo, j'ai lu les réponses précédentes telles que Spring Roo Vs (Wicket et Spring) et d'autres choses sur Internet, mais je ne suis toujours pas convaincu (peut-être que je ne comprends pas), je Je ne suis pas sûr de sa maturité et, plus important encore, je me demande vraiment ce que SpringSource fait avec Grails et Roo (non, Grails vs Roo - pourquoi SpringSource utilise deux technologies très similaires? ne me persuadez pas qu’ils survivront tous les deux).
Je ne peux pas en dire long sur Play. J'ai vu la démo comme tout le monde, mais j'aimerais lire des retours d'expérience. En attendant, je vais attendre.
J'ai trouvé des messages similaires (...). Les choses ont sûrement changé entre-temps!
Oui et non :) Mais entrons dans les cadres de présentation: il n'y a pas de réponse unique à votre question (comme il y a un an), il y a une douzaine de cadres autour et aucun gagnant clair. Juste pour en citer quelques-uns:
En fait, je suggérerais de jeter un coup d'œil aux présentations de Matt Raible, il a vraiment fait un excellent travail en comparant les cadres Web, en montrant leurs forces et leurs faiblesses, en rassemblant des faits et des chiffres, en montrant les tendances ... I recommander:
Vraiment, jetez un coup d'œil à ces présentations, elles vous aideront à trouver un cadre approprié (il n'y a pas de réponse unique mais vous pouvez limiter le choix par élimination) et pourraient changer votre point de vue.
J'utilise Spring 3 et Jquery depuis un moment, mais j'ai entendu parler de Play et je me suis lancé à la tâche. Je l’aime vraiment beaucoup. Play est un excellent compromis entre quelque chose comme PHP et les environnements très lourds Java), comme Spring.
Les choses que j'aime le plus dans le jeu sont:
Choses que je n'aime pas chez Play
Le meilleur choix pour moi est Wicket . Séparation claire du balisage et du code Java. Très facile à écrire et à utiliser des composants. Simple à utiliser. Ajax, testabilité. Vous pouvez déboguer directement dans vos pages/composants et ne pas recevoir de messages d'erreur cryptés votre implémentation JSF;)
Il y a aussi un bon guichet de comparaison <-> JSF dans performance
Les trois meilleurs choix pour moi sont (par ordre alphabétique):
Ils:
Le jeu est très similaire à ROR, une version de ROR en Java
Contrairement aux autres réponses, je voudrais souligner les inconvénients (IMHO) des frameworks Web populaires:
JSF2 - Publié et déjà vieilli. Encore peu de nouvelles/articles/blogs/expériences. Je suis sceptique. J'attends toujours la prochaine version majeure de Richfaces/Icefaces, qui prend entièrement en charge jsf 2. Actuellement, seules les versions alpha peuvent être téléchargées.
Struts 2 - Cela ne semble être qu'une bonne chose si vous vous basez toujours sur les jambes de force et souhaitez refactoriser la majeure partie de votre code. Sinon: non.
GWT - Je n'aime pas l'approche de page unique et Java-> javascript. Je ne sais pas si une session - plusieurs vues/fenêtres peuvent être facilement réalisées. Pour moi, ce cadre devrait être utilisé pour les applications Internet riche à fenêtre unique et aux utilisateurs massifs.
Wicket - Belle approche, mais un peu verbeuse et trop peu de documentation disponible (à l'exception du bon guichet dans Action Book, mais cela ne couvre que la version 1.3). En outre, pour moi, il manque de gros projets qui sont construits sur le dessus. Et actuellement, je ne vois pas où passe la route du guichet ou s’il a déjà été conduit dans une impasse.
Spring MVC - Vous n'avez pas encore essayé, mais vous devez inclure de nombreux fichiers jars (spring mess) dans votre chemin de classe pour travailler correctement avec ce framework. Et cela repose sur JSP (dans la plupart des projets), que je considère déjà mort. Et vous obtenez uniquement un framework MVC pur - toutes les autres choses (ajax et autres) doivent être implémentées/intégrées.
Stripes - Un petit framework MVC conçu par Nice, mais trop peu de documentation, trop peu de commits/committers, trop peu de communiqués, trop peu de soutien de l'industrie, trop moins d'activité de la liste de diffusion.
Je suis également curieux de savoir si j'ai raté un cadre majeur (j'ai laissé intentionnellement Tapestry), ce qui pourrait être une option pour vous (et aussi pour moi aussi).
J'ai eu beaucoup de succès avec JAX-RS. C'est le seul Java Web Framework qui possède une sorte de spécification JSR et plusieurs implémentations autres que les spécifications de servlet et de portlet (bien que cela puisse être une mauvaise chose).
Une chose qui est mauvaise et bonne sur Java est que vous pouvez choisir et faire correspondre les frameworks (python a aussi cette fonctionnalité/problème)). un panier.
Voici un général Java Recette de pile d'applications Web:
Javascript/Flash + Traitement des demandes/réponses + Injection de dépendances + Persistance
Javascript: JQuery, Prototype, Dojo
demande/réponse: Spring MVC, Stripes et mon JAX-RS préféré (Jersey, Apache CXF)
Injection de dépendance: Printemps, Guice
Persistence: JPA (Hibernate, stockage Google App), Hibernate, JDO et plus.
J'ai également eu beaucoup de succès en utilisant AspectJ pour créer Java "sucer moins". En utilisant @Configurable de Spring et les mixins ITD d'AspectJ, vous pouvez obtenir Rails comme Domain objets (c'est en fait ce que Roo fait mais vous n'avez pas besoin de Roo pour le faire).
J'ai trouvé rayures vraiment efficace et étonnamment léger .... il se veut plus léger que entretoises . J'ai entendu des amis qui sont des développeurs Web à plein temps que JSF ne vaut pas la peine de se préoccuper de son travail, bien que je ne possède aucune expérience pratique et que je ne puisse pas le prouver avec des exemples (!).
Jetez un oeil à RESThub , qui suit les mêmes principes que Play! mais implémenté en réutilisant des frameworks/outils de niveau entreprise tels que Maven 3/Spring 3/Jersey/jQuery.
RESThub est très perturbant par rapport à d’autres frameworks car c’est un toolkit complet, mais sans serveur MVC ni framworks basé sur des servlets. Au lieu de cela, il utilise une interface graphique basée sur l’interface utilisateur jQuery qui utilise les services Web JAX-RS (REST) et un système de gabarit Javascript basé sur les EmbeddedJs.
Les serveurs sont sans état et nous utilisons HTML5 sessionStorage pour conserver la session côté client. Cette approche est conçue pour la RIA et l'évolutivité.
Certaines applications de démonstration sont fournies (même si elles sont en construction).
JSF est un cadre sympa, mais JSF 1.2 manquait de vision pendant des années après sa sortie. JSF 2.0 semble prometteur et de nombreuses nouveautés ont été ajoutées à JSF 1.2: support ajax, facelets, support des annotations et conventions par défaut (moins de XML), construction de composants plus simple que la version 1.2.
Il s’intègre bien avec Spring également, si vous êtes préoccupé par l’assistance DI.
Je seconderais la recommandation du printemps. Je ne suis pas un grand fan de GWT, je ne pense pas que le = compilateur croisé Javascript est encore là. Java -> Javascript est encore là. Je travaille sur un AJAX app qui utilise spring sur le serveur et jQuery sur le client Bien qu’il n’existe techniquement pas de support "prêt à l’emploi" pour jQuery, la mise en oeuvre de spring-MVC AjaxView est extrêmement simple et nécessite environ 25 lignes de code.
Peut-être un peu tard pour le spectacle, mais je dois mentionner Vaadin . La programmation est effectuée dans Java exclusivement, avec une approche basée sur les composants. La communication client-serveur concerne davantage l’interaction de l’utilisateur que le transport de données; toute la logique d’entreprise réside sur le serveur.
Il y a quelques années, le logiciel de portail " Backbase " n'était pas encore très développé. Mais était bon et facile pour le développement.
Je pense que ce que vous recherchez est quelque chose de proche de Jahia. Il prend en charge GWT, Mashups, contenu multimédia, etc.
http://www.jahia.org/cms/lang/fr/home/Jahiapedia/Jahia_Templateshttp://www.jahia.net/downloads/jahia/jahia6.0.0/ readme/index.html
Jetez un oeil à ItsNat
ItsNat est fondamentalement un Java W3C sur un serveur, d’une simplicité étonnante (DHTML sur le serveur), promotion AJAX intensive interface à une seule page applications
Ext GWT + Spring
Les frameworks RIA basés sur les joueurs sont des solutions qui méritent plus qu'une balle. Ex. Adobe Flex + Java (Cela peut bien sûr dépendre du fait que votre "site" est vraiment un "site" ou davantage une "application", vous ne feriez pas de blog dans Flex .)
ajax,
Dans le sens d’AJAX-as-a-buzzword, Flex utilise généralement AMF (un protocole binaire qui est plus efficace que les protocoles utilisés par AJAX apps), bien que vous puissiez aussi faire strictement AJAX manipuler avec Flex aussi. Donc, Flex prend en charge AJAX, mais prend également en charge "meilleur que AJAX".
contenu multimédia enrichi, mashup,
Etant donné que Flex fonctionne sur la plate-forme Flash 'machine virtuelle', je pense qu’il ne reste que peu de choses à ajouter.
mise en page basée sur des modèles,
Vous ne savez pas exactement ce que cela veut dire, mais cela ressemble à Flex mxml.
validation,
Pris en charge, bien que vous puissiez décider de personnaliser certaines choses si vous voulez avoir du style. (Pas que vous deviez le faire.) La bonne chose est que vous pouvez être aussi sophistiqué que vous le souhaitez - ou non.
séparation maximale du code html/java
Vous ne pouvez pas obtenir plus de séparation en utilisant une approche de développement 'machine virtuelle' telle que Flex/Silverlight/JavaFX. Cela ne vous permet pas seulement de garder votre code de présentation séparé de votre couche d'accès à la logique et aux données côté serveur - cela garantit qu'ils sont séparés . La "virtualisation" de votre environnement de développement vous offre une compatibilité inter-navigateurs, une plate-forme cible cohérente, aucun souci des nouveaux navigateurs ni des nouvelles versions de navigateurs ne respectant pas votre application, des capacités de débogage haut de gamme, similaires à celles de Java, et un produit final plus professionnel/impressionnant .