Sun Inner Circle: For Business & Technology Leaders Sun Inner Circle: For Business & Technology Leaders

GlassFish ou Tomcat : lequel choisir ?


Si vous recherchez la performance, la convivialité et la souplesse des applications, la question vaut la peine d'être étudiée.

Le CEO pose toujours des questions très prévisibles aux responsables informatiques : Pourquoi les clients se plaignent-ils du nouveau système de commande en ligne ? Pourquoi faut-il huit mois pour déployer ce nouveau service Web ? Pourquoi mon application de reporting financier a-t-elle planté ce matin ?

Mais le CEO veut rarement savoir quelle technologie de serveur d'applications l'entreprise utilise. Et pourtant, cette question est très souvent la plus pertinente de toutes car il existe un lien direct entre le serveur d'applications qu'exploitent les équipes de développement et la performance et l'agilité des applications de l'entreprise.

Plus spécifiquement, la technologie de conteneur Web du serveur d'applications peut être un facteur déterminant pour la qualité des applications et la productivité des développeurs. Choisie judicieusement, elle augmente la puissance de travail des équipes de développement et accélère la mise à disposition d'applications plus performantes. Alors qu'un mauvais choix peut causer bien des soucis, aujourd'hui et à l'avenir.

C'est pourquoi si les applications sont au cœur de votre activité, il sera payant d'étudier en détail le fonctionnement interne du serveur d'applications ainsi que la technologie de conteneur Web et leur impact sur les équipes de développement. Cet article compare deux des options open source les plus répandues : GlassFish et Tomcat.

Deux options très répandues mais très différentes

Le serveur d'applications open source GlassFish, mis au point par la communauté GlassFish et lancé par Sun en 2005, est extrêmement prisé des développeurs. Deux versions majeures coexistent aujourd'hui : GlassFish v2 et le tout nouveau GlassFish v3 Prelude. GlassFish v2 a été téléchargé près de 9 millions de fois à ce jour, et le produit a été enregistré 300 000 fois rien qu'en 2009. GlassFish v3 Prelude propose de nouvelles fonctions et des améliorations. C'est une excellente plate-forme pour déployer des applications Internet riches supportées par Java ou par des langages dynamiques comme jRuby.

Alors que GlassFish est un ensemble de conteneurs Java EE dont l'un est un conteneur Web, Tomcat n'est rien de plus qu'un conteneur Web. Cette différence cruciale se traduit par plusieurs avantages majeurs pour GlassFish.

Le serveur d'applications Tomcat, que l'on doit à Apache, a été lancé par un groupe de développeurs Sun et Jserv, et s'appuie à l'origine sur du code Sun. Tomcat a joué un rôle stratégique dans l'adoption de Java côté serveur, était disponible sous licence open source et a contribué à populariser les logiciels open source dans les grandes entreprises.

En général, les applications d'un serveur Tomcat fonctionneront telles quelles sur un serveur GlassFish. Toutefois, ces deux technologies présentent des différences majeures qui affectent les performances, l'évolutivité et la convivialité des applications, mais aussi la productivité des développeurs.

Pour comprendre ces différences, il faut s'intéresser à la technologie de conteneur Web sous-jacente. Le conteneur Web est la partie d'un serveur d'applications qui gère les servlets, les pages JSP et d'autres composants de niveau Web.

Alors que GlassFish est un ensemble de conteneurs Java EE dont l'un est un conteneur Web, Tomcat n'est rien de plus qu'un conteneur Web. Cette différence cruciale se traduit par plusieurs avantages majeurs pour GlassFish :

  • Une voie d'évolution plus simple. Avec GlassFish v2, il est facile de tirer avantage de technologies comme les EJB (Enterprise Java Beans), l'API JPA ou JMS (Java Message Service), pour n'en citer que quelques-unes. Avec Tomcat, ces technologies doivent être ajoutées au coup par coup, une à la fois. Il incombe au développeur d'implémenter les fonctionnalités et de s'assurer qu'elles fonctionnent, individuellement et ensemble.
  • Prise en charge en standard du clustering et du basculement. GlassFish v2 peut fournir des capacités de clustering et des fonctionnalités sophistiquées qui renforcent la disponibilité pour permettre aux applications de respecter des accords de niveau de service d'entreprise très stricts. GlassFish v3 Prelude peut prendre en charge le clustering via un équilibreur de charge mais ne possède pas encore de profil de clustering.
  • Une administration et une surveillance hors pair. GlassFish v2 et v3 Prelude prennent en charge l'administration centralisée au travers d'une console de gestion et via une interface de ligne de commande (CLI). Avec Callflow Monitoring, GlassFish v2 permet à un développeur d'applications ou à un administrateur de serveurs d'identifier les traitements auxquels une application se consacre essentiellement. GlassFish v3 proposera aussi cette fonction. De plus, des éditeurs tiers peuvent rendre leurs logiciels disponibles via le GlassFish Update Center qui facilite leur configuration sur GlassFish. Avec Tomcat, les nouveaux logiciels doivent être configurés au coup par coup. L'Update Center permet également d'accéder facilement aux versions les plus récentes de technologies comme EJB 3.1, qui permet de grouper les composants EJB dans une archive WAR au lieu de packager l'application en tant que fichier EAR.
  • Prise en charge des langages de création de scripts. GlassFish prend en charge (ou le fera sous peu) Ruby/JRuby, Python/Jython, Groovy, PHP, JavaScript/Phobos, Scala et d'autres langages.

Cerise sur le gâteau : les avantages du conteneur Web

GlassFish ne se distingue pas seulement de Tomcat par les avantages mentionnés ci-dessus mais aussi par ses fonctionnalités de conteneur Web dont voici quelques exemples :

  • La possibilité de conserver des sessions au fil des redéploiements d'applications (v3 Prelude) fait gagner du temps aux développeurs qui créent des applications Web en Java.
  • GlassFish v2 et v3 Prelude prennent en charge la reconfiguration dynamique des serveurs virtuels et des modules d'écoute HTTP, sans redémarrage des serveurs. Avec Tomcat, si vous modifiez un pool de ressources, vous devez généralement redémarrer le serveur d'applications.
  • Le framework Grizzly hautement performant et très évolutif de GlassFish v2 et v3 Prelude améliore le taux de transfert requête/réponse. Les couches inférieures de niveau Web de GlassFish sont implémentées via le framework Grizzly. Ecrit en Java et très personnalisable, ce framework tire parti des API NIO (réseau évolutif et E/S de fichier) pour offrir des possibilités d'évolutivité.
  • GlassFish v2 et v3 Prelude incluent divers mécanismes d'optimisation des performances comme le « flattened valve invocation », version modifiée de l'architecture de valves qui simplifie l'appel de chaque valve, ce qui réduit la taille des piles et améliore les performances. GlassFish v3 Prelude peut aussi prendre en charge les valves de type Tomcat.

Sun a réalisé des tests d'évolutivité complets pour comparer les connecteurs NIO Tomcat et Glassfish. Ces tests utilisent un simple servlet pour minimiser le temps passé dans le conteneur et mesurent combien d'opérations/seconde peuvent être prises en charge par les divers conteneurs, pour un nombre d'utilisateurs de plus en plus élevé. Par exemple, avec 16 000 utilisateurs, notre banc d'essai donne les résultats suivants :

  GLASSFISH TOMCAT
Op/seconde 6988,9 6615,3
Tps rép. moyen 0,242 0,358
Tps rép. max 1,519 3,693
tps rép. 90 % 0,6 0,75

Renseignez-vous et faites le bon choix

Le choix d'un serveur d'applications est hautement stratégique car il affecte de nombreux aspects des opérations d'une entreprise, et pas seulement les équipes de développement. Sun privilégie nettement le choix de GlassFish pour les développeurs d'applications de nouvelle génération. Toutefois, nous vous encourageons à vous renseigner plus en détail et à évaluer soigneusement les possibilités qui s'offrent à vous. Vous trouverez de plus amples informations et des comparaisons entre GlassFish et Tomcat dans notre livre blanc.