Utiliseriez-vous actuellement JBoss ou Glassfish (ou un autre) comme serveur Java EE pour un nouveau projet? [fermé]

StackOverflow https://stackoverflow.com/questions/277543

  •  07-07-2019
  •  | 
  •  

Question

Si vous démarrez aujourd'hui un nouveau projet Java EE qui doit être achevé, quel serveur d'applications choisiriez-vous et pourquoi?

Une partie de votre réponse devrait inclure vos arguments en faveur de votre décision. Et aussi votre expérience du serveur Java EE que vous avez choisi et des autres serveurs disponibles sur le marché. Celles-ci sont intéressantes car nous avons tous une idée de l’enquête et de la pensée qui ont été insérées dans votre réponse.

Était-ce utile?

La solution

J'ai utilisé WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat et quelques autres au cours des 10 dernières années. Donc, si je pensais à un nouveau projet, je me poserais d'abord quelques questions. Une chose que je ne remettrais plus en cause, c’est que je refuserais carrément d’utiliser des JSP à moins d’être torturée jusqu’à ce que je pleure pour ma maman.

Dois-je être compatible / déployer vers un produit spécifique en raison du mandat de quelqu'un? N'y a-t-il pas moyen de les ignorer ou de les convaincre du contraire? Si oui, voici votre réponse.

Dois-je utiliser des EJB? Vraiment? Évitez-les autant que possible - ils ne sont vraiment nécessaires que pour les très grands systèmes d'entreprise. Rappelez-vous qu’il ne s’agit que d’outils, voire de gros outils (tout le monde peut-il dire "Golden Sledgehammer"). Ils sont fortement surutilisés, alors vraiment, vraiment se demander si vous en avez besoin. Si vous en avez besoin, plusieurs options sont supprimées, notamment Jetty, mon préféré.

Devez-vous utiliser l’une des principales technologies J2EE telles que JMS, ESB, etc.? Si tel est le cas et que vous ne pouvez vraiment pas vous en passer, vous êtes à nouveau contraint par un conteneur J2EE complet. Par exemple, réfléchissez bien et étudiez avant de vous engager dans BPM et évitez AquaLogic BPM à (presque) tous les coûts - c’est vraiment moche.

Si vous devez réellement utiliser un conteneur J2EE complet, envisagez d’abord l’open source car il est plus robuste, mieux pris en charge et plus économique. Ils ont de plus grandes bases de clients et une interaction de support plus ouverte, ils ont donc tendance à obtenir de meilleurs correctifs plus rapidement. Cependant, Resin est immature et je l’éviterais par rapport à GlassFish ou JBoss - j’ai trouvé qu’il était problématique de se déployer et de prendre en charge. Je préférerais JBoss en raison de sa clientèle plus large, de sa maturité, etc. GlassFish est plus difficile à intégrer à un processus de construction / déploiement automatisé, mais il pourrait être plus pratique pour certaines de ses fonctionnalités spécifiques (si vous en avez besoin).

Ai-je une raison particulière d'avoir besoin d'Apache? Puis penchez-vous vers Tomcat, peut-être avec quelque chose en plus.

Puis-je me contenter de servlets? J'utiliserais ensuite Jetty - c'est la solution la plus légère, la plus rapide, la plus simple et la plus flexible. Si je suis contre l'utilisation de Jetty, je me demanderais pourquoi. YAGNI s'applique.

Le mieux consiste à utiliser StringTemplate / WebStringTemplate sur Jetty: une solution propre, robuste, rapide et facile à gérer, sans aucun frais de licence, sans réputation ni support, etc. C'est ici que je commence.

La plupart des applications / systèmes choisissent un grand nombre de fonctionnalités J2EE sophistiquées alors qu’elles n’ont besoin que de servlets et de JDBC avec une architecture / conception correcte. Vous vous demandez pourquoi vous avez besoin de plus.

Parmi les conteneurs complets, j'éviterais WebLogic et WebSphere à moins que vous ne preniez en charge un site Web public MAJEUR (le site Web de mon employeur actuel est déployé sur WebLogic et reçoit plus de onze millions de visites par mois, d'autres sont comparables). La véritable revendication de WebLogic réside dans leur mise en cluster relativement facile, mais évitez leurs fonctionnalités exclusives de verrouillage du fournisseur à (presque) tous les coûts. WebSphere est tout simplement un cauchemar que j'éviterais littéralement à tout prix: je refuse de faire des projets impliquant WebSphere après en avoir fait deux ou trois auparavant. Aucun des deux produits ne vaut les énormes droits de licence, sauf si vous avez réellement un besoin particulier qui pousse à utiliser une fonctionnalité exclusive. Au cours des dix dernières années en tant qu’architecte / ingénieur principal pour de nombreuses entreprises du classement Fortune 500, je n’ai pas encore constaté ce besoin. D'autre part, j'ai vu BEAUCOUP de douleur en raison de la sélection de tels produits exclusifs.

Même pour les sites Web publics très volumineux et à fort trafic, les produits propriétaires restent discutables. Je préférerais dépenser ces millions de dollars par an en droits de licence sur du matériel de qualité et du temps de qualité avec une poignée de très bons consultants pour traiter une solution d'évolutivité simple. Les millions supplémentaires par an pourraient ensuite être utilisés pour produire quelque chose qui mérite d'être vendu sur ce joli site Web ...

EDIT: une autre pièce à considérer ...

J'ai récemment rencontré Terracotta . Je repense tout et cherche à le déployer dans un système significatif bientôt. En particulier, Terracotta est plus efficace que le clustering, je ne recommanderais donc PLUS WebLogic pour son clustering.

Autres conseils

Le terme "serveur d'application" c'est ambigu. Avec GlassFish v3, vous pouvez commencer petit avec, par exemple, un conteneur Web traditionnel et évoluer (en utilisant OSGi et une fonctionnalité simple "ajouter un conteneur") pour ajouter ce que vous souhaitez: JPA, JAX-RS, EJB, JTA, JMS, etc. ESB, etc ... Pourtant, c'est le même produit, la même interface d'administration, etc. Est-ce que cela constitue un serveur d'applications pour vous? -Alexis (Soleil)

La première question que je me pose habituellement est la suivante: "Puis-je le faire avec Tomcat?". Si la réponse est non car j'ai besoin de JMS ou de JTA, je recourt à un serveur d'applications.

J'ai utilisé WebLogic 8 il y a environ 3 ans, satisfait de la facilité d'utilisation de WebLogic et du modèle de licence / coût. Nous l'avons utilisé pour deux projets, l'un était un service Web et l'autre, un portail. Nous n'avons rencontré aucun problème avec WebLogic ou WebLogic Portal dans aucun de ces projets.

Ces deux dernières années, je travaillais avec WebSphere. Chaque fois que je négociais avec IBM, cela coûtait toujours deux fois plus cher qu'un équivalent de WebLogic, mais la politique de l'entreprise dictait WebSphere. J'ai trouvé que la courbe d'apprentissage sur WebSphere était beaucoup plus abrupte que WebLogic et que notre cycle de vie de construction / déploiement / test prenait tellement de temps que nous avons utilisé Tomcat dans l'environnement de développement. Mais le problème le plus important que j'ai rencontré avec WebSphere est le moment où nous avons rencontré un bogue qui nous a obligés à effectuer la mise à niveau vers la prochaine version du correctif, puis à rencontrer un nouveau problème lors de l'analyse du fichier web.xml. Il a fallu un quart de travail de 48 heures pour résoudre tout cela.

Pour le moment, j’utilise JBoss. Il y a environ 3 mois, j'étais sur le point de lancer mon nouveau projet avec Tomcat et Jetspeed 2. Cependant, j'ai remarqué que Jetspeed 2 semblait un peu stagnant à l'heure actuelle et que JBoss Portal 2.7.0 venait tout juste de sortir avec le support JSR 286 / Portlet 2.0. J'ai essayé JBoss et j'ai trouvé qu'il était très facile à configurer et à administrer. Le cycle construction / déploiement / test est très rapide et je dois rarement redémarrer le serveur à moins d’avoir modifié un fichier XML Spring quelque part.

J'utilise jBoss depuis 3 ou 4 ans.

Arguments pour jBoss:

  1. Open source.
  2. Assistance commerciale disponible.
  3. Grande communauté d'utilisateurs actifs.

Arguments contre jBoss:

  1. Aucune version du conteneur Java EE 5 prise en charge n'est prise en charge.
  2. Beaucoup de documentation mais verbeuse; Il peut être difficile de trouver les réponses à la question "Comment puis-je faire x?"
  3. Outils d'administration pour 4.x médiocre par rapport à d'autres offres commerciales.

Commander GlassFish 3.1! Construite sur le noyau GlassFish v3 modulaire et basé sur Java EE 6, la version 3.1 offre une mise en cluster, une administration centralisée et une haute disponibilité.

Voir http://blogs.oracle.com/nazrul/entry/glassfish_3_1 pour plus de détails.

Un autre point qui n’a pas été abordé ici est la performance. Si cela pose un problème en raison du type de service ou du nombre d'utilisateurs, les conditions suivantes seront applicables:

  • Tomcat semble être plus lent que Glassfish
  • Glassfish semble être plus lent que la résine
  • La résine est beaucoup plus lente que G-WAN + Java

Notez que G-WAN repose uniquement sur la machine virtuelle: elle n'utilise aucun autre conteneur (sauf spécification explicite). Vous pouvez donc le réserver aux parties critiques de vos applications Web en termes de performances.

Étant donné que G-WAN prend en charge d'autres langages (C, C ++, C #, D, Objective-C), vous pouvez même traiter certaines parties des applications en langage C brut tout en conservant Java pour d'autres tâches.

Je pourrais inclure votre système d'exploitation préféré comme critère de décision. Cela devrait faciliter la prise en charge si vous utilisez le même fournisseur pour le système d'exploitation et le serveur d'applications. Si vous avez déjà une relation avec l’un ou l’autre des fournisseurs, déterminez s’il est intéressant de traiter avec eux.

D'un point de vue technique, je choisirais GlassFish car il prend en charge les innovations plus récentes. Je ne pense pas que JBoss soit mauvais dans tous les cas, il n’est tout simplement pas aussi à jour.

La plupart de mes expériences sont sur WebLogic, mais j’ai utilisé JBoss et GlassFish. Je viens de publier un nouveau site sur une pile open source complète de Sun (OpenSolaris, GlassFish, MySQL) et ce fut une excellente expérience avec seulement des frustrations mineures.

Je pense toujours que WebLogic est le meilleur serveur d'applications Java EE sur le marché. Je pense que cela en vaut la peine si vous pouvez vous permettre ces droits de licence.

J'ai été surpris de voir jusqu'où vous pouvez aller en combinant Tomcat, OpenEJB et ActiveMQ. Cela me semble être une alternative peu coûteuse.

Je voudrais aussi regarder dans le serveur Spring dm. Il est basé sur Tomcat, mais je pense que l’article OSGi qu’ils ont ajouté pourrait être partout très rapidement. Si c'est fait avec la même qualité que le framework Spring, ce sera très bien.

Une alternative: ne pas utiliser de serveur d'applications du tout.

Découvrez http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .

Pour les projets Web, conservez si nécessaire un conteneur Web léger, associé à quelque chose comme Wicket pour éviter la complexité de JSP / JSF ou de struts.

HTH Guy

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