Quelle est la différence en termes de fonctionnalité entre le serveur HTTP Apache et Apache Tomcat ?
Je sais que Tomcat est écrit en Java et que le serveur HTTP est en C, mais à part cela, je ne sais pas vraiment en quoi ils se distinguent. Ont-ils des fonctionnalités différentes ?
Apache Tomcat est utilisé pour déployer vos servlets Java et vos JSP. Dans votre projet Java, vous pouvez donc créer votre fichier WAR (abréviation de Web ARchive) et le déposer dans le répertoire de déploiement de Tomcat.
Donc, en gros, Apache est un serveur HTTP, qui sert HTTP. Tomcat est un serveur de servlets et de JSP servant les technologies Java.
Tomcat inclut Catalina, qui est un conteneur de servlets. Un servlet, à la fin, est une classe Java. Les fichiers JSP (qui sont similaires à PHP et aux anciens fichiers ASP) sont générés en code Java (HttpServlet), qui est ensuite compilé en fichiers .class par le serveur et exécuté par la machine virtuelle Java.
En plus des bonnes réponses ci-dessus, je pense qu'il faut dire que Tomcat a son propre serveur HTTP intégré, et qu'il est parfaitement fonctionnel pour servir du contenu statique également. En fonction de la configuration de votre machine virtuelle java, il peut même être plus performant que les connecteurs traditionnels d'Apache tels que mod_proxy et mod_jk.
Cela dit, un serveur Tomcat entièrement optimisé devrait servir les fichiers statiques rapidement et si vous avez des servlets Java, des JSP et des fichiers ColdFusion en plus du contenu statique, vous pouvez trouver que Tomcat fait un excellent travail par lui-même.
Tomcat est avant tout un serveur d'applications, qui sert des requêtes à des servlets Java ou des fichiers JSP personnalisés sur votre serveur. Il est généralement utilisé en conjonction avec le serveur HTTP Apache (du moins dans mon expérience). Utilisez-le pour traiter manuellement les demandes entrantes.
Le serveur HTTP, par lui-même, est le meilleur pour servir du contenu statique... fichiers html, images, etc.