Pourquoi choisir tomcat sur un java EE serveur d'application conforme?
Serveurs d'applications Java EE fournir toutes les fonctionnalités de tomcat, alors pourquoi utiliser tomcat (au lieu de glassfish par exemple que c'est l'officiel)?
Surtout quand Java EE sont nécessaires comme JPA, JAX-RS, JSF, et, par conséquent, plus les bibliothèques doivent être emballés avec de l'application, tandis qu'un EE-serveur d'application conforme aurait fourni à partir de la boîte?
- le compte à rebours jusqu'à ce que le ventilateur Printemps des hordes d'arriver 🙂
- Cela n'a rien à voir avec le Printemps...
- corrigez-moi si je me trompe, mais assez souvent l'argumentaire de vente semble être: "pourquoi utiliser des gros maladroit JEE quand vous pouvez faire la même chose et en plus avec Tomcat + de Printemps"
- Voir ma réponse ici: stackoverflow.com/questions/4668042/jboss-vs-tomcat-again/...
- et bien, certaines personnes sont comme des perroquets, mais (parfois) il y a une véritable bonne raison de ne PAS utiliser un serveur d'application. Bien que je n'aime pas le Printemps.
- Pour info, il y a maintenant un Java EE certifié version d'Apache Tomcat appelé Apache TomEE
- ainsi le Printemps fans sont arrivés :p
- Une mise à jour à partir de 2017 - Glassfish est mort à cause d'Oracle veut que vous utilisez Weblogic.
Vous devez vous connecter pour publier un commentaire.
La question qui a été, dans notre esprit, et l'ensemble de la raison que nous avons créé TomEE était le cas, pourquoi les gens devraient choisir?
L'ensemble "Tomcat ou JavaEE" chose est fatigué et vieux.
Après 10 ans, elle vient encore et les gens soutiennent les uns contre les autres, lequel est le mieux et pourquoi.
Voici les mathématiques sous forme de court:
Grande, nous sommes à mi-chemin là, mais les gens sont toujours arguant de "Tomcat ou JavaEE". La solution était claire, Tomcat nécessaires pour être certifié Java EE. Le Profil Web a été créé pour permettre exactement ce que.
Génial, maintenant nous y sommes.
Le nouveau Statut Quo
Tout ce qui s'est passé dans les 2 dernières années. Les choses ont changé.
Si vous voulez Tomcat et JavaEE, vous pouvez l'avoir.
Rarement, sinon jamais, les gens utilisent une plaine de Tomcat. Ils toujours ajouter des tonnes de trucs supplémentaires, comme un webframework, certains orm, certains DI-cadre etc etc.
Vous pouvez utiliser de Printemps pour ce, mais le résultat final sera gros, bouffi et vous serez forcé dans un lot de programmation XML.
Moderne Java EE 6 implémentations sont très légers (TomEE et de Résine ne sont que 25 mo) et contiennent tout ce dont vous avez besoin (web, de la persistance, DI). Le soi-disant Profil Web ne contient pas toutes les choses que vous avez rarement besoin. Moderne Java EE 6 serveurs de démarrer une seconde ou deux, qui est dans la même ligue que un nu-Tomcat, mais ils offrent en fait des outils dont vous avez besoin sur une base quotidienne.
La plupart des serveurs d'applications Java EE sont encombrants, venir avec beaucoup de fonctionnalités qui ne sont pas nécessaires, et ont une très lente développer/cycle d'essai (il suffit de cocher la java des rebelles des rapports de productivité). Si vous avez vraiment besoin de certains de Java EE, alors vous devriez l'utiliser, mais la plupart des cas, vous pouvez avoir les mêmes caractéristiques de base (conteneur de servlet essentiellement, vous pouvez mettre la plupart de Java EE tech sur un tomcat, comme léger conteneur ejb, etc) avec tomcat ou de tout autre léger conteneur de servlet.
Également de garder à l'esprit que vous pouvez utiliser JPA, JSF, JAX-RS en dehors d'un serveur d'application.
TL;DR: serveurs d'applications Java EE sont apparemment lent, ne recharge pas les classes à la volée et la force d'un très irritant code/deploy/cycle d'essai (pensez n'importe où à partir de 20 secondes à 8 minutes pour tester un peu de changement dans votre code java). La plupart des gens ont juste besoin des fonctions de base (conteneur de servlet pour l'essentiel).
Voici un rapport sur les redéployer fois à partir de 2011: http://zeroturnaround.com/java-ee-productivity-report-2011/#redeploy_times
Comme expliqué ci-dessus par @Miguel Ping, les serveurs d'Application contient des fonctionnalités les développeurs n'ont pas besoin.
Par exemple, beaucoup de développeurs n'ont pas besoin de code pour la messagerie , ils n'ont pas besoin de JMS pots.
Les autres développeurs ne peuvent pas besoin de clustering, de sorte qu'ils n'ont pas besoin de clustering code, et ainsi de suite.
Comme aujourd'hui, la plupart de l'INTERFACE utilisateur est orienté vers le web, conteneur de Servlet, qui doivent être fournis par les serveurs d'application , devient de plus en plus un élément essentiel, par conséquent, de nombreux développeurs de décider d'utiliser un conteneur de Servlet (j'.e - tomcat).
Dans ce cas, de nombreux développeurs utilisent le framework Spring pour prévoir le remplacement de la fonctionnalité qu'ils ont avec la plaine de Java EE (ou d'intégrer avec Java EE - Printemps peut être exécuté sur le dessus de l'application serveur en tant que bien).
Printemps-core est lightware et offre surtout une Depdency Injection/Inversion De Contrôle des conteneurs (en remplacement de l'EJB conteneur Java EE).
Vous pouvez ajouter d'autres modules du framework Spring pour donner plus de fonctionnalités à votre application., alors que dans de nombreuses applications serveurs (ceux des EJB 3.0 et ci-dessous) le serveur d'application est le chargement de l'ensemble de la pile et cela affecte aussi regarder le temps de Serveur d'Application (et c'est assez ennuyeux pour les développeurs, à partir de l'expérience personnelle).
Cela dit, EJB 3.1 contient maintenant des profils, par exemple - le profil web qui charge un nombre réduit de pièces de Java EE spec. En outre, Jboss introduit dans JBoss as 7 un parallèle mécanisme de déploiement sur l'analyse des dépendances au sein de l'application , et effectue en parallèle du déploiement de composants indépendants.
Par exemple, à oVirt projet open source, nous avons réduit le temps de démarrage de plus de 1 minute sur un simple déploiement d'un virutalization environnement à quelque chose comme 3 secondes.
Je n'ai aucune idée si un tel mécanisme existe dans d'autres EJB 3.1 les serveurs d'applications, cependant, comme mentionné précédemment, vous pouvez définir des profils assez facilement ou utilisez déjà des profils existants, tels que profil web (EJB lite) afin de réduire les temps de début
Pour conclure,
Dans le passé, les gens utilisés tomcat principalement à réduire les temps de début et de réduire la quantité de modules en cours de chargement.
Le printemps a présenté une alternative modulaire pour le développement Java EE et peut être utilisé avec tomcat.
.
Aujourd'hui, avec les EJB 3.1, Java EE a également adpoted la modularisation, et il y a des serveurs d'applications tels que JBoss as 7, qui réduisez le temps de quelques secondes grâce à toutes sortes d'optimisation faite pendant le déploiement.
Tomcat est un bien écrit, de poids léger, conteneur de servlet qui fait tout le nécessaire pour un grand nombre de JVM des applications web. Il fonctionne bien dans la production en tant que serveur web parlant directement sur le navigateur. Pour beaucoup de gens, Java EE a trop de choses en elle, plus que nécessaire pour la stabilisation des applications utiles. Ce type de personne a l'air pour les outils qui ont moins, pas plus, et les valeurs stables de bien-code écrit fonctionnalités ci-dessus. Le monde du logiciel de choix est une place de marché, et Tomcat sert une partie de ce marché très bien. Comme dans tout marché, vous avez besoin de regarder les alternatives et choisir ce qui répond à vos besoins. Tomcat est juste une des nombreuses alternatives.
Il y a un point de vue intéressant de Tomcat dans ce papier http://www.people.hbs.edu/cbaldwin/DR2/LaMantia-Cai-MacCormack-Rusnak%20WICSA2008.pdf
à propos de la conception de la structure des matrices. Ils le comparer à un sans nom des concurrents et de trouver bien conçu. Si vous êtes intéressé par l'analyse de votre propre code de la seule DSM mise en œuvre que j'savoir si c'est l'Ide, Enterprise edition, mais ils ne vous donnent quelques semaines d'essai gratuit.
Personnellement, je crois que la simplicité est une vertu dans le logiciel de prise en charge et le conteneur de servlet est un logiciel de support, pas une partie de votre application.
Dans la plupart des cas, les décisions sur la demande de choix de serveur (Tomcat vs COMME JBoss) sera faite en fonction de l'expérience et de la connaissance de l'administration et de l'équipe de développement de la petite services informatiques et de l'OMI, il est politique de problème technique.
De plus, les projets qui sont les plus déployées sur tomcat sont souvent des applications web avec peu de concepts de l'intégration et de la complexité. Pour de tels projets léger des conteneurs et des frameworks(Spring, Struts) sont souvent employés.Mais, si les projets se complique et plus dispersées, les attributs comme scalibility, "surveillance", la haute disponibilité (comme @HASingletons de JBoss), etc. venez en place. Et il peut être très douloureux pour équiper votre plaine tomcat 3ème partie des cadres pour obtenir toutes les fonctionnalités de " et la plupart du temps, vous aurez challange pour se rendre à exécuter tous ces ensemble.
Ils pensent qu'ils sont le choix pour être léger, mais à la fin de la journée, leurs demandes seront bien plus de poids qu'ils seraient à l'aide de Java EE web profil. S'ils optent pour le printemps, les déploiements sont susceptibles d'être très grande, avec plus lents de construction et de démarrage du serveur de temps. La productivité des développeurs décline ... Si vous voulez que votre application soit aussi simple et léger qu'il peut être opter pour un serveur Java EE qui prend en charge un profil web.