Jetty, Tomcat, Nginx, Geronimo, Glassfish: I'm confused

As someone new to the Java EE ecosystem, I'm confused with these products which share a tremendous amount of keywords. And half of them come from Apache software foundation.

Can someone address me with a brief distinctive explanation for each of them?


Solution 1:

Jetty and Tomcat are web-containers, while Geronimo, Glassfish and JBoss support the whole J2EE stack (more or less). And, tataaa, they use/include Tomcat or Jetty for web-containers. The most important part of a fullblown J2EE server besides the web-container used to be the EJB-container allowing for deployment of EJBs, having them run in a transactional context etc. Today, J2EE is actually called Java EE. Entity EJBs (JPA) can run outside the EJB-container, say in Tomcat, but then outside the transaction handling that an EJB-container would provide.

Solution 2:

Tomcat and Jetty are web servers can manage servlets, but not Java EE.

Glassfish and JBOSS can manage Java EE fully.

And Nginx is a HTTP server and a reverse proxy. You can for example load balance multiple deployed Glassfish instances behind an nginx server.

Nginx is also used for security reasons, so you can hide your application server behind it.

Solution 3:

They are all application/web servers.

How would you compare Apache Tomcat & Glassfish as production servers?

http://www.opensource-it.com/enterprise_software/http_servers