In der Praxis würde man fast nie eine Web-Anwendung auf reinem Java SE entwickeln. Java SE selbst eignet sich für grafische Desktop-Anwendungen oder textbasierte Befehlszeilenprogramme.
Wenn Sie eine Webanwendung wie die erstellen möchten, die Sie auch mit z. PHP oder RoR, das Wenigste, was Sie verwenden würden, ist ein sogenannter Servlet container
. Diese laufen alle über Java SE und geben Ihnen die Servlets und JSP-Seiten von Java EE. Bekannte Beispiele sind Tomcat und Jetty. Die meisten Webanwendungen benötigen jedoch mehr als das, was diese Servlet containers
bieten. Fast immer ist ein Web-Framework erforderlich (z.B. JSF, Struts, Wicket, Tapestry, Spring MVC), ein ORM-Framework (typischerweise Hibernate, aber es gibt einige Alternativen wie EclipseLink) und einen Transaktionsmanager (JoTM, JBossTS, Atomikos). Schließlich verwenden die meisten Leute auch gerne einen Container für die Dependency-Injection und eine höhere Ebene des Transaktionsmanagements (e.G. der Kern Spring Container, OpenEJB, Weld).
All dies erfordert jedoch Entwickler ihren eigenen Software-Stack zu erstellen und zu pflegen. All diese verschiedenen Dinge, die ich erwähnt habe, müssen separat heruntergeladen werden, und sie können miteinander kompatibel sein oder auch nicht, da die Abhängigkeiten in verschiedenen Versionen geteilt sind.
Hier kommt Java EE ins Spiel.
Java EE bietet Ihnen ein One-Stop-Framework, das Ihnen alle oben genannten in einem einzigen Paket bietet. Sie können es in einem Paket herunterladen und es in einem Paket aktualisieren. In der Regel arbeiten die Teile besser zusammen als wenn Sie selbst einen Stack bauen.
Sie können dies ein wenig vergleichen mit dem Herunterladen einer vollständigen Linux-Distribution wie Ubuntu, oder bauen Sie Ihr eigenes Linux-System von Grund auf mit nur einem Kernel zu starten.
In früheren Tagen war Java EE (damals J2EE genannt) schwer, teuer, geschlossener Quellcode und Elfenbeinturm und herstellergesteuert. Heutzutage ist Java EE sehr leicht, frei, Open Source und basiert hauptsächlich auf dem, was sich in der Praxis bewährt hat.
Obwohl es für viele Java EE-Implementierungen gilt, dass Sie für das, was Sie nicht verwenden, nicht zahlen (in Bezug auf Speicher oder Startzeit), hat die aktuelle Java EE-Spezifikation ein kleineres "Profil" von Java EE definiert mit Dingen, die die typische Webanwendung nicht benötigt. Dies wird web profile
genannt. Für Endbenutzer gibt es keinen wirklich zwingenden Grund, explizit für das Webprofil zu wählen, aber für Leute, die eine Java EE-Implementierung erstellen, ist es ein großer Gewinn, da es viel einfacher zu implementieren ist.
Schließlich sind fast alle Teile von Java EE separat erhältlich, so dass Sie auch Ihren eigenen Stack erstellen können, der komplett aus Java EE Elementen besteht. Dies ist jedoch nicht so häufig, da es sehr wenig Vorteile gegenüber einer bestehenden Java EE-Implementierung gibt.
* Wenn Sie Spring zu Java EE bevorzugen, können Sie Enterprise-Apps schreiben, ohne etwas anderes als Tomcat * zu verwenden - Um dies ein wenig zu verdeutlichen, kommt Tomcat nicht mit Spring out of the box. Wenn Sie Spring bevorzugen, können Sie Enterprise-Anwendungen mit Spring plus Tomcat schreiben, nicht "ohne etwas anderes als Tomcat". Wenn Sie jedoch Java EE für Spring bevorzugen, können Sie auch Unternehmensanwendungen schreiben, ohne etwas anderes als Java EE-Teile und Tomcat zu verwenden;) –