Las incognitas de los servidores de aplicaciones

Primero que todo quiero que disculpen mi ignorancia en lo que es un tema que todo el mundo conoce pero que tengo mis inquietudes,hay va la pregunta pues cuando enpece a programar con JSF me di cuenta de la gran variedad de servidores de aplicaciones que existen de pronto como el famoso Glass Fish y Apache Tomcat,depues me di cuenta que mis amadas aplicaciones .NET usaban el famosisimo servidor de aplicaciones IIS, ahora bien estoy trabajando profesionalmente en PHP y uso el servidor Apache, se lo siguiente se que es para que se ejecuten las aplicaciones ya que el navegador no va a interpretar el codigo programado pero realmente cual es la diferencia entre uno o el otra,porque es difente usar Glass Fish a apache ? no se van ejecutar mis programas igual en serio cual es la ventaja? que hay de especial en usar un OC4J a un apache o a un Glass Fish ?

En leido mucha documentacion hacerca del tema pero me gustaria que me lo explicaran en terminos simples ya que me parece que todos hacen lo mismo,de verdad me intriga.

Gracias de antemano,Saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Jvan

Segun yo no es lo mismo un

Segun yo no es lo mismo un servidor de aplicaciones que un servidor web, por ejemplo Tomcat, hasta donde tengo entendido es un contenedor de servlets, apache http es un servidor web y glassfish, jboss, websphere, etc, son servidores de aplicaciones.

Cual es la diferencia? pues por ejemplo apache http te permite subir tu sitio y meterle logica del lado del servidor pero en lenguajes como php, perl, cgi, entre otros, si quiesieras utilizar Java en web necesitarias utilizar minimo un contenedor de servlets como tomcat, la diferencia entre tomcat y glassfish (que es un servidor de aplicaciones) radica principalmente en que los servidores de aplicaciones son mas robustos, generalmente te permiten implementar EJB y algunas otras monerias que quiza con tomcat las puedes implementar pero incluyendo librerias externas o cosas asi. Por ende, se sobre entiende que los servidores de aplicaciones ya son en si contenedores de servlets y tambien permiten fungir como servidores web.

Un servidor HTTP como Apache

Un servidor HTTP como Apache y IIS sirven contenido estático.

Ambos puedes ser "potenciados" para generar contenido dinamico. En el caso de IIS esto lo hace en automático para servir asp's, en el caso de Apache hay que ponerle algunos "plugins" para que pueda servir, o bien, perl, php, ruby, python, java o incluso C. Pero Apache webserver mismo, no hace nada.

En el caso de Java, se puede usar Apache Tomcat, que sería el encargado de interpretar los JSP's ( JSF y para pronto todos los servlets ). Se puede como mencioné configurar Apache WebServer para que utilice Apache Tomcat para Java.

Los servidores de aplicaciones ( Glashfish y demás ) son un caso más especializado. No solo tienen la parte de los servlets ( o servlet container ) sino que también algunos otros servicios empresariales, como pool de conexion de datos, colas JMS, EJB's, seguridad, etc. etc.

Entonces, también se puede configurar Apache Webserver para que trabaje con alguno de estos servidores de Aplicaciones y se pongan ahí ( en los app ser vers ) las aplicaciones empresariales que un webserver no podría atender.

Espero que esta explicación te aclaro un poco el panorama.