Webserver/CGI/Servlet == Ist das alles das selbe?
Tomcat / Apache = was macht das Zeug genau, ich kann Xammp bei mir starten, weiß aber nicht was ich dann genau hab.
JavaEE -> was zur Hölle soll das sein?
Da gibt es so zwei Studenten, die haben vor 10 Jahren oder so eine ziemlich gute Suchmaschine erfunden, die Bagle oder so heißt...
Ein Webserver beantwortet Anfragen von Webclients gemäß es HTTP-Protokolls. Ein Server ist allgemein ein Programm, dass Anfragen beantwortet, ein Client ein Programm, dass Anfragen stellt. HTTP ist das Hypertext transfer Protocol und das, was das WWW (oder wie viele fälschlich gleichsetzen Leute sagen, das Internet) ausmacht. Im einfachsten Fall wird hier nach HTML-Seiten gefragt.
CGI steht für das Common Gateway Interface und ist ein IMHO veralteter Standard, wie man eigene Programme in einen Webserver integrieren kann. Wenn der Webserver eine Anfrage bekommt, startet er ein Programm und übergibt diesem in der Unix-typischen Umgebung den Request und füttert in die Unix-typische Standardeingabe die Request-Daten ein. Das Programm muss dann über die Unix-typische Standardausgabe die Antwort liefern, die dann der Server an den Client weiterleitet. Das ist ein sehr ineffizientes Verfahren.
Ein Servlet ist ein Plugin, also ein nicht eigenständig läuffähiger Programmteil für einen Webserver, der den Java EE Standard erfüllt.
Tomcat ist ein in Java geschriebener Webserver und Servlet-Container, der den Java EE Standard erfüllt. Er kann Servlets ausführen. Bekommt Tomcat eine Anfrage von einem Webclient, ermittelt der Server, welches Servlet für diese Anfrage zuständig ist und leitet die Anfrage in Form eines HttpServletRequest-Objekts an eine Methode des Servlets weiter, die daraufhin ein HttpServletResponse-Objekt ausfüllen muss. Das ist noch ein bisschen komplizierter, soll aber hier reichen.
Apache ist ein in C geschrieber Webserver und war AFAIK einer der ersten. Er könnte CGI-Programme ausführen, jedoch keine Servlets. Apache ist außerdem eine Foundation unter deren Namen viele Web-relevante Opensource-Projekte laufen, insbesondere auch viele Java-Projekte und Tomcat ist z.B. ein Projekt der Apache-Foundation.
Ein besserer Servlet-Container ist IMHO aber Jetty, der inzwischen Teil der Eclipse Foundation ist, der zweiten großen Dachorganisation für Opensource-Java-Projekte. Eclipse ist zudem auch eine Java-Entwicklungsumgebung (IDE).
Java EE ist die Java Enterprise Edition und eine Erweiterung der Java Standard Edition (SE) welches wiederum die Java-Version ist, die man sich so normal als SDK (Software Development Kit) ziehen kann. EE besteht aus einem Berg von Standards und zugehörigen implementierenden Bibliotheken für alles, was Java im Unternehmensumfeld so interessant macht. Die Servlet-Spezifikation ist nur eine (und ein ganz kleiner Teil davon). JSP (Java Server Pages) oder jede andere beliebige dreibuchstabige Abkürzung gehören auch dazu.
Ein Konkurrent von EE ist Spring, was mal klein und mit der Idee, Java EE zu vereinfachen anfing, aber inzwischen ein ebenso großer Moloch geworden ist und - was ich noch viel schlimmer finde - das beharrlich leugnet.
Ein Servlet-Container ist übrigens wieder nur ein kleiner Teil eines Java Application Servers, der u.A. den Java Enterprise Beans-Standard unterstützen muss und meist auch noch BPL-Sachen und viel XML. Und dann ist da natürlich noch OSGI als Industrie-Standard für Modularisierung im Java-Umfeld mit noch mehr XML und Ant und Maven mit XML und...
Mach lieber Python, das ist einfacher.
Stefan