JBoss vs Tomcat : lequel de ces deux serveurs d'applications Java choisir ?
Après plus de vingt ans d’existence, Apache Tomcat et JBoss Enterprise Application Platform (EAP) de Red Hat sont deux des serveurs d'applications les plus utilisés. Ils prennent tout deux en charge le développement et la production, mais comment choisir celui qui vous convient le mieux ?
Il y a de nombreux facteurs à prendre en compte dans la comparaison entre Tomcat et JBoss, notamment les fonctionnalités, l'outillage, les licences, le soutien de la communauté et les différentes API Java utilisées.
JBoss vs Tomcat : JBoss a la meilleure compatibilité avec les API Java
La différence la plus significative à noter au moment de comparer Tomcat et JBoss est que JBoss est un serveur d'applications certifié conforme à Java EE (maintenant nommé Jakarta EE). JBoss fournit non seulement un support pour la spécification Servlet et Java Server Page (JSP), mais aussi pour les services web JAX-RS, Contexts and Dependency Injection (CDI), Java Message Service, JavaMail et Java Naming and Directory Interface.
En revanche, Tomcat est avant tout un moteur de classes servlets et un serveur Web. L'objectif principal de Tomcat est de fournir une implémentation de la spécification Servlet et JSP. Tomcat prend également en charge quelques API complémentaires telles que WebSockets, Java Authentication Service Provider Interface for Containers (JASPI) et l'API Expression Language.
Tomcat n'est pas non plus compatible avec Java EE Web Profile. Il ne prend pas en charge de nombreuses API utiles pour les développeurs telles que CDI, Java Transaction API, JavaServer Faces (JSF), Hibernate et JPA. JBoss est déjà compatible avec toutes ces API.
Toutefois, il est possible d'ajouter à Tomcat le support d'API telles que JSF et CDI en intégrant des projets comme Weld et Mojarra. Un projet Apache séparé, nommé TomEE, permet ce support, mais la version de base d'Apache Tomcat, non.
Tomcat vs JBoss : les particularités des licences associées
Il y a une différence notable entre les deux serveurs : JBoss et Tomcat ont des modèles de licence différents.
JBoss utilise la licence LGPL (Lesser General Public License) fournie par GNU, également connue sous le nom de « copyleft ». Les équipes qui utilisent JBoss doivent distribuer des dérivés de logiciels LGPL avec la même licence.
Tomcat dépend d’une licence Apache, qui permet aux utilisateurs de distribuer ou de modifier le logiciel sans restriction. La licence Apache n'est pas soumise au copyleft.
Alors que JBoss EAP est un logiciel libre et sous licence LGPL, JBoss Enterprise Middleware nécessite un abonnement pour le déploiement en production. « Si vous voulez utiliser JBoss pour la production, alors vous devez acheter un abonnement », déclare James Falkner, responsable technique des produits chez Red Hat Runtimes. « Mais pour les développeurs ou à des fins d'évaluation, vous pouvez télécharger JBoss EAP sur le site des développeurs de Red Hat », précise-t-il.
JBoss est construit sur le projet open source Wildfly, qui dispose également d'une LGPL. Les entreprises peuvent utiliser le produit Wildfly non certifié en production sans devoir acheter une licence d'abonnement auprès de Red Hat. De nombreux déploiements de microservices modernes utilisent Wildfly.
Une autre différence essentielle entre Tomcat et JBoss se joue au niveau de l’assistance. Red Hat fournit une assistance payante aux développeurs avec son offre EAP. L'Apache Software Foundation ne fournit pas de support payant pour ses produits, donc la gestion des problèmes avec les instances Tomcat nécessitent parfois l'intervention d'un éditeur tiers.
Tomcat et JBoss : confusion autour du serveur web
Red Hat se trouve être l'un des éditeurs tiers auxquels un développeur peut s'adresser pour obtenir un support de production pour Tomcat. Red Hat vend un produit appelé JBoss Web Server qui n'est autre qu'une distribution de Tomcat. « Nous n'essayons pas de cacher le fait que c'est Tomcat sous le capot », se défend James Falkner. « Ce que nous fournissons, c'est un support Tomcat avec une prise en charge des modules supplémentaires au-delà du container de base de servlets contenu dans Tomcat ».
Malheureusement, JBoss Web Server a créé une certaine confusion sur le marché en ce qui concerne Tomcat et JBoss EAP. Certains développeurs ont l'impression erronée que Tomcat est le container web dans JBoss EAP. En fait, Wildfly et JBoss utilisent tous deux par défaut le serveur web Undertow, mais pas Tomcat.
Outils et fonctionnalités supplémentaires
Étant donné que JBoss EAP est un produit générateur de revenus, il n'est pas surprenant d'apprendre que Red Hat regroupe une variété d'outils dans son produit pour simplifier la configuration, la gestion du temps d'exécution et l'administration du serveur. JBoss offre une console de gestion à l'allure moderne, des outils de ligne de commande complets et divers utilitaires qui s'intègrent aux outils DevOps tels que Ansible et Puppet.
En revanche, Apache Tomcat est principalement conçu pour fournir une implémentation standard et sans bug des API Servlet et JSP. Tomcat fournit une console d'administration de base pour gérer les applications, mais le nombre d'outils disponibles est minime par rapport à JBoss.
Quand choisir JBoss plutôt que Tomcat
Il y a deux raisons principales de préférer JBoss à Tomcat : le besoin d'un support complet de Jakarta EE dans le serveur d'application et la possibilité d'obtenir un support payant auprès d'un fournisseur réputé.
Le fait que JBoss soit plus facile à utiliser et qu'il s'intègre aux outils DevOps les plus répandus sont également des caractéristiques clés pour le différencier de Tomcat. Red Hat développe également des ponts pour porter JBoss EAP vers OpenShift, sa plateforme de développement cloud et d’orchestration de containers Kubernetes. Si ces critères font de JBoss un choix intéressant, vous pouvez également évaluer WebSphere.
Quand choisir Tomcat plutôt que JBoss
Apache Tomcat est un choix raisonnable pour les développeurs qui veulent un moteur Servlet et JSP standard avec une licence très permissive, mais qui sont prêts à payer pour les services d'un éditeur. Si c'est vous vous trouvez dans ce cas, comparez Tomcat et Jetty pour voir quel serveur répond le mieux aux besoins de votre entreprise.
Il existe des différences marquées entre le serveur JBoss EAP de Red Hat, conforme à Java EE, et le moteur Servlet standard fourni par l'Apache Software Foundation. La communauté Java est plus riche de ces différences et des différentes options que les développeurs peuvent choisir pour leur entreprise.