Question

Je prévois de démarrer un nouveau projet et je me penche sur les infrastructures Web Java les plus récentes. J'ai décidé de créer mon application autour de Guice et j'utiliserai probablement un ORM très léger comme Squill / JEQUEL / JaQu ou similaire, mais je ne peux pas choisir le framework Web. Lequel conviendrait le mieux dans un environnement aussi léger? Et lequel s’intègre le mieux avec Guice?

Était-ce utile?

La solution

J'ai acquis une certaine expérience sur ce sujet, car j'ai commencé à programmer un nouveau projet en novembre. Le projet est à un stade avancé maintenant.

Pour moi, les directives de conception suivantes étaient importantes:

  • Utilisez une pile technologique moderne, amusante à utiliser et qui sera utilisée à l'avenir.
  • Réduisez le nombre d'artefacts de projet - utilisez des annotations / du code Java lorsque cela vous semble judicieux, omettez le XML.
  • Utiliser des frameworks open-source
  • avoir une communauté active
  • ne sont pas alpha stade
  • sont légers
  • Évitez la duplication de concepts
  • Je peux expliquer les concepts qu’il contient à mes deux collègues développeurs, qui - bien qu’ils soient de bons programmeurs - n’ont jamais utilisé dépendance dépendance (DI) ou frameworks Web.
  • Peut servir de base technologique à de futurs projets

Google Guice en tant que conteneur DI était un choix évident - à l'évidence, le plus bien pensé DI contianer, avec des développeurs brillants et une bonne communauté. Il remplit tous les points mentionnés ci-dessus.

J'ai donc configuré ma pile technologique de base. Démarré avec Guice, ajout de Hibernate pour la persistance (avec warp-persist et warp-servlet ). Ensuite, j'ai écrit quelques DAO de base qui sélectionnent quelque chose.

J'ai ensuite essayé de procéder comme suit: j'ai ajouté un autre framework Web.

J'ai créé une page simple avec un tableau, contenant le DAO, des en-têtes et un champ de texte avec les quatre cadres.

C’est ce que j’ai trouvé lors de la comparaison des quatre cadres.

XSLT et XStream sont une sorte d’approche hardcore. Ce n'est pas vraiment un cadre, mais une technologie viable complètement sans état pour des applications hautes performances. C'était de loin le moyen le plus rapide de servir la page de test. En mode débogage, 3 & Nbsp; ms sur localhost contre environ 30 à 50 & Nbsp; ms avec l'autre framworks.

L'intégration de Guice était relativement fluide et bonne avec warp-servlet qui m'a permis d'injecter dans des servlets et d'injecter httprequest, httpresponse, la session dans d'autres objets, sans les transmettre. Inconvénients: pas de communauté du tout, car je suis la seule personne à envisager cette pile. - pas de composants prêts à l'emploi.

Ensuite, j’ai jeté un coup d’œil à JSF et à Guice: il est bien sûr possible de placer l’injecteur dans le contexte de servlet et d’utiliser guice comme localisateur de service. Avec l'approche simple, il est impossible d'injecter des haricots secs ailleurs. L'utilisation d'un résolveur de variable personnalisé résout partiellement ce problème, mais vous perdez toute l'intégration IDE dans vos fichiers JSF. De plus, vous devrez utiliser FQN , ou créer une chaîne gt; mappage des clés Guice quelque part. Les deux sont laids comme:

  • Avantages: bonne communauté, beaucoup de développeurs dans le jmarché ob (pas de critère pour moi). Vous ne serez pas viré pour avoir choisi JSF en cas de problème.
  • Inconvénients: apporte son propre mécanisme d'inversion de contrôle (IoC) qui se heurte conceptuellement à guice .

warp-widgets: j'ai créé mon exemple simple en utilisant ceci pour le plaisir; c'est le début du stade alpha. C'était agréable à utiliser et ses composants sont faciles à mettre en œuvre et à réutiliser par moi-même. Son objectif est de fournir à HTML typesafe une intégration parfaite de Guice. Comme il ne semblait y avoir à l’époque qu’un seul développeur actif, qui travaille probablement sur Guice 2.0, je dirais que la communauté est presque inexistante. Cela a fonctionné comme un charme, était assez rapide, mais j'aurais été testeur d'alpha. C'était tout simplement trop risqué pour moi de le considérer comme un projet commercial.

Apache Wicket: ce projet m’a tout d’abord surpris avec le wicket-ioc et le wicket-guice réunis dans le téléchargement principal. L’injection de constructeur dans les pages Web n’est pas possible, mais uniquement un setter + field. L'injection dans les pages Web Wicket est simple, il suffit d'ajouter @Inject aux champs que vous souhaitez remplir - mais vous n'êtes pas censé comprendre comment cela fonctionne en arrière-plan . Trucs qui se passe. L'injection de pages Web est théoriquement possible - mais je ne l'ai pas utilisée une seule fois, car cela rend impossible l'utilisation d'URL montées. De plus, cela gâcherait l'état persistant / sérialisé. Les membres de classes injectés sont traités de manière transparente avec la sérialisation des pages Web, ce qui est nécessaire pour permettre la prise en charge du navigateur en retour. Wicket utilise zéro artefact externe - juste une petite configuration des URL dans une classe d'application. Donc, toute la configuration est faite en Java - ce qui convient bien au modèle Guice. Séparation claire de HTML et Java. Il est open-source, au même titre que la plupart des composants nombreux et de bonne qualité. Il existe depuis 2005 (?) Et est un projet Apache de niveau supérieur. Bien que ce soit un framework riche en fonctionnalités, son API est un format compact (toutes les classes principales peuvent JPEG unique sur mon écran). Contrairement à d'autres, il n'apporte pas son propre mécanisme IoC, mais considère plutôt IoC comme un service pouvant être fourni par Spring Framework , Guice, etc., et sa philosophie la rend supérieure Intégration de Guice. Ai-je mentionné le support Ajax vraiment intelligent et facile?

Cadres non évalués en profondeur: tapestry5 - apporte sa propre IoC. Seam : ce n'est pas un framework en lui-même, mais une méta-trame qui accompagne normalement Spring, JSF . Hiberner. (Bien que le printemps puisse théoriquement être remplacé par Guice.)

Résumé: parmi les cadres évalués, Apache Wicket a été le grand gagnant , en ce qui concerne l'intégration de Guice + tous les autres critères mentionnés.

En plus de nous deux, certaines personnes ont déjà eu ce problème .

Autres conseils

Wicket est doté d'un module Guice intégré . n'ai pas utilisé (mais j'ai utilisé Wicket un peu, et je l'ai aimé).

Le cadre de lecture est très agréable. Il dispose du support Guice (je ne l’ai pas encore essayé).

Un Simple est un bon conteneur Web léger. Il est extrêmement performant et peut être utilisé avec des frameworks tels que Restlet et Jersey .

Le Framework Web Mojave MVC est un framework très simple et léger intégrant Guice.

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