28 votes

Pourquoi choisir Tomcat plutôt qu'un serveur d'applications compatible Java EE?

Les serveurs d'applications Java EE fournissent toutes les fonctionnalités de tomcat, alors pourquoi utiliser tomcat (au lieu de glassfish par exemple car il est officiel)?

Surtout lorsque des fonctionnalités Java EE sont nécessaires, telles que JPA, JAX-RS, JSF, et donc que davantage de bibliothèques doivent être fournies avec l'application, alors qu'un serveur d'applications conforme EE l'aurait fourni immédiatement.

62voto

David Blevins Points 10502

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-ils 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:

  • Dans Java EE 6, nous (JCP) a créé le Profil Web à reconnaître formellement le besoin pour les petits moteurs d'exécution avec un ensemble concentré de technologies.

Super, 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 que.

  • En 2011, nous avons (Apache) a commencé à faire le travail pour certifier Apache Tomcat. Certification atteint et annoncé lors de JavaOne 2011 Apache TomEE. Sortie de la version finale a été annoncée en avril.

Génial, maintenant nous y sommes.

Le nouveau Statut Quo

  • Il existe une version plus légère de JavaEE
  • Il y a un JavaEE certifié version de Tomcat

Tout cela s'est passé dans les 2 dernières années. Les choses ont changé.

Si vous voulez Tomcat et JavaEE, vous pouvez l'avoir.

5voto

Mike Braun Points 2729

Rarement, sinon jamais, les gens utilisent une plaine de Tomcat. Ils ont 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.

3voto

Miguel Ping Points 9013

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.

Aussi 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

3voto

Yair Zaslavsky Points 2647

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 le profil web (EJB lite) afin de réduire le temps de démarrage


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.

3voto

Michael Dillon Points 18741

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X