Vous entendez parler d’Apache Tomcat mais vous ne savez pas exactement ce que c’est ? Pas de souci.
Ce guide vous explique clairement ce qu’est Tomcat, à quoi il sert et comment il fonctionne.
Qu’est-ce qu’Apache Tomcat ?
Apache Tomcat est un conteneur web open-source qui permet d’exécuter des applications web écrites en Java. Pour faire simple, c’est un logiciel qui fait le lien entre le code de votre application et les utilisateurs qui y accèdent via leur navigateur.
Il est développé et maintenu par l’Apache Software Foundation. Tomcat est souvent appelé « serveur d’applications », même si techniquement, il n’implémente qu’une partie des spécifications d’un serveur d’applications Java EE complet. Son rôle principal est de gérer les servlets et les pages JSP.
Concrètement, Tomcat implémente plusieurs technologies clés de l’écosystème Java pour le web :
- Jakarta Servlet : pour gérer les requêtes et les réponses dynamiques.
- Jakarta Pages (JSP) : pour créer des pages web avec du contenu dynamique.
- Jakarta Expression Language (EL) : un langage simple pour accéder aux données Java depuis les pages JSP.
- Jakarta WebSocket : pour permettre une communication en temps réel entre le client et le serveur.
Ces technologies font partie de la plateforme Jakarta EE, qui est l’évolution de l’ancienne plateforme Java EE. Le changement a eu lieu quand Oracle a transféré le projet à l’Eclipse Foundation. Un point important à noter est que ce changement a modifié les noms des packages Java, passant de javax.* à jakarta.*. C’est pourquoi les versions de Tomcat à partir de la 10.0 ne sont compatibles qu’avec des applications utilisant les nouveaux packages Jakarta.
Tomcat est entièrement écrit en Java. Ça veut dire qu’il peut fonctionner sur n’importe quel système d’exploitation où une machine virtuelle Java (JVM) est installée. Il est distribué sous la licence Apache 2.0, ce qui le rend gratuit pour un usage personnel et commercial.
Fiche d’identité d’Apache Tomcat
Voici les informations essentielles sur Apache Tomcat, résumées en quelques points.
- Développé par : Apache Software Foundation
- Première version : 1999
- Écrit en : Java
- Type : Serveur d’applications, conteneur web (conteneur de servlets)
- Systèmes d’exploitation : Multiplateforme (Linux, Microsoft Windows, macOS, BSD, etc. via JVM)
- Licence : Licence Apache 2.0 (gratuite et open-source)
- Site web officiel : tomcat.apache.org
Comment fonctionne Tomcat ? Architecture et Composants Clés
Pour comprendre comment Tomcat fonctionne, il faut regarder ses composants internes et son architecture. Le logiciel est modulaire, chaque partie ayant un rôle bien précis.
Les composants principaux : Catalina, Coyote et Jasper
Tomcat est articulé autour de trois composants majeurs qui travaillent ensemble :
- Catalina : C’est le cœur de Tomcat, son conteneur de servlets. Catalina est responsable de l’implémentation des spécifications Jakarta Servlet et JSP. Il charge les servlets, gère leur cycle de vie et traite les requêtes qui leur sont destinées.
- Coyote : C’est le connecteur HTTP. Son travail est d’écouter les requêtes HTTP entrantes sur un port réseau spécifique (par défaut, le port 8080) et de les transmettre à Catalina pour traitement. Une fois que Catalina a généré une réponse, Coyote la renvoie au client. Il gère le protocole HTTP/1.1.
- Jasper : C’est le moteur JSP de Tomcat. Quand une requête pour une page JSP arrive, Jasper analyse le fichier
.jsp, le transforme en code Java (une servlet), le compile et le charge. Jasper peut aussi détecter si un fichier JSP a été modifié pour le recompiler automatiquement.
L’architecture de Tomcat
L’architecture de Tomcat est hiérarchique et définie dans son fichier de configuration principal, server.xml. Voici les principaux éléments :
- Server : C’est l’élément racine. Il représente une instance complète de Tomcat. Il peut contenir un ou plusieurs Services.
- Service : Un Service regroupe un Engine et un ou plusieurs Connectors. C’est ce qui permet de lier une adresse et un port à un moteur de traitement.
- Connector : Il écoute les connexions sur un port et un protocole donné (HTTP, AJP). Quand une requête arrive, il la passe à l’Engine associé.
- Engine : Le moteur de traitement des requêtes pour un Service. Il reçoit les requêtes des Connectors et les transmet à l’Host approprié.
- Host : Il représente un hôte virtuel, comme
www.monsite.com. Il permet d’héberger plusieurs domaines sur un seul serveur. - Context : C’est l’élément le plus important pour les développeurs. Il représente une application web unique (un fichier
.warou un répertoire).
Structure des répertoires d’une installation Tomcat
Quand vous installez Tomcat, vous trouvez une structure de dossiers standardisée :
/bin: Contient les scripts de démarrage et d’arrêt du serveur (startup.shoustartup.bat,shutdown.sh, etc.)./conf: Renferme les fichiers de configuration globaux en XML, commeserver.xml,web.xmletcontext.xml./lib: Contient les bibliothèques Java (.jar) communes à toutes les applications web déployées sur le serveur./logs: C’est ici que Tomcat écrit ses fichiers journaux (logs), très utiles pour le débogage./webapps: Le répertoire où vous déployez vos applications web. Vous pouvez y copier vos fichiers.war, et Tomcat les déploiera automatiquement./work: Un répertoire de travail où Tomcat place les fichiers temporaires, comme les servlets compilées à partir des fichiers JSP.
À quoi sert concrètement Apache Tomcat ?
Apache Tomcat est utilisé pour exécuter des applications web Java. Son rôle est de fournir l’environnement nécessaire pour que le code Java puisse recevoir des requêtes HTTP et y répondre, souvent en générant des pages HTML dynamiques.
Il est capable de fonctionner de deux manières principales :
- Comme serveur autonome : Tomcat peut gérer seul tout le trafic d’un site web. Il écoute les requêtes HTTP, sert les fichiers statiques (HTML, CSS, images) et exécute le code Java (servlets, JSP) pour le contenu dynamique. C’est une configuration simple et efficace pour de nombreuses applications.
- En association avec un autre serveur web : Pour les sites à fort trafic, Tomcat est souvent placé derrière un serveur web plus généraliste comme Apache HTTP Server ou Microsoft IIS.
Comment fonctionne l’association ? Dans cette configuration, Apache HTTP Server gère les requêtes pour le contenu statique, car il est très optimisé pour ça. Quand une requête pour du contenu dynamique (une servlet ou une page JSP) arrive, il la délègue à Tomcat. La communication entre les deux se fait souvent via le protocole AJP (Apache JServ Protocol) sur le port 8009, grâce à un module comme mod_jk.
Cette deuxième approche permet de combiner la robustesse d’Apache HTTP Server pour les fichiers statiques et la puissance de Tomcat pour l’exécution du code Java.
L’histoire et les versions d’Apache Tomcat
Le projet Tomcat a été lancé par James Duncan Davidson, un ingénieur logiciel chez Sun Microsystems (la société qui a créé Java). Il a d’abord été développé comme l’implémentation de référence pour les spécifications Java Servlet et JavaServer Pages (JSP).
Le nom « Tomcat » (qui signifie « matou » en anglais) a été choisi parce que l’animal est perçu comme pouvant prendre soin de lui-même, une image que Davidson voulait pour ce projet qui devait être autonome. En 1999, Sun a donné le code source du projet à l’Apache Software Foundation, où il est devenu un projet open-source majeur.
Voici l’évolution des versions importantes de Tomcat et les spécifications qu’elles supportent :
- Tomcat 4.1 : Support de Servlet 2.3 et JSP 1.2.
- Tomcat 5.0 : Passage à Servlet 2.4 et JSP 2.0.
- Tomcat 6.0 : Implémentation de Servlet 2.5 et JSP 2.1. Cette version nécessitait au minimum Java 5 pour fonctionner.
- Tomcat 7.0 : Une mise à jour majeure avec le support de Servlet 3.0, qui a introduit le traitement asynchrone des requêtes, et JSP 2.2. Nécessitait Java 6.
- Tomcat 8.0 : Support de Servlet 3.1, JSP 2.3 et l’arrivée de WebSocket 1.0. Nécessitait Java 7.
- Tomcat 9.0 : Implémentation de Servlet 4.0 et ajout du support pour le protocole HTTP/2. Cette version requiert au minimum Java SE 8.
- Tomcat 10.0 et + : Marque le grand changement avec le support de Jakarta Servlet 5.0. C’est la première version à utiliser les packages
jakarta.*au lieu dejavax.*, reflétant la transition de Java EE vers Jakarta EE.
Quelles sont les alternatives à Apache Tomcat ?
Même si Tomcat est très populaire, il n’est pas le seul outil de ce type. Voici quelques alternatives courantes :
- Jetty : Un autre conteneur de servlets open-source. Il est connu pour être très léger et facilement intégrable dans des applications Java (embarqué).
- WildFly (anciennement JBoss) : C’est un serveur d’applications Jakarta EE complet et open-source. Il offre beaucoup plus de fonctionnalités que Tomcat, mais est aussi plus lourd.
- WebSphere (IBM) et WebLogic (Oracle) : Ce sont des serveurs d’applications commerciaux très robustes, destinés aux grandes entreprises avec des besoins complexes en matière de transactions, de sécurité et de gestion.
- GlassFish : C’est l’implémentation de référence open-source pour la plateforme Jakarta EE. Il est plus complet que Tomcat mais aussi plus gourmand en ressources.
- TomEE : C’est une version de Tomcat à laquelle ont été ajoutées des bibliothèques pour en faire un serveur certifié Jakarta EE Web Profile. C’est un bon compromis entre la légèreté de Tomcat et les fonctionnalités d’un serveur plus complet.
Pourquoi choisir Apache Tomcat ? Les principaux avantages
Tomcat reste un choix très populaire pour le déploiement d’applications Java. Voici les principales raisons de son succès :
- Léger et efficace : Comparé aux serveurs d’applications Java EE complets, Tomcat consomme moins de mémoire et démarre beaucoup plus vite. C’est idéal pour le développement et pour de nombreuses applications en production.
- Excellentes performances : Tomcat est conçu pour gérer de grands volumes de trafic. Il est stable, fiable et utilisé par de très grands sites web à travers le monde.
- Flexibilité et personnalisation : Tomcat se concentre sur le cœur de métier (servlets et JSP) mais s’intègre parfaitement avec d’autres bibliothèques et frameworks populaires comme Spring.
- Soutien communautaire fort : En tant que projet de l’Apache Software Foundation, il bénéficie d’une communauté très active. La documentation est complète, les mises à jour de sécurité sont régulières et il est facile de trouver de l’aide.
- Gratuit et open-source : La licence Apache 2.0 permet de l’utiliser, le modifier et le distribuer sans coût, ce qui réduit les budgets des projets.
Apache Tomcat est un outil puissant et fiable pour tout projet web basé sur Java. Sa légèreté, sa performance et sa flexibilité en font un standard de l’industrie, que ce soit pour un petit projet ou une application d’entreprise à grande échelle. Sa gestion par la fondation Apache garantit un support et une évolution constants.
