Java EE 6 ist wirklich erstaunlich. Das einzige Problem ist, dass es ungefähr 2 Wochen alt ist und es derzeit nur 1 Container gibt, der seine Funktionen bietet - Glassfish.
Ich habe nichts gegen Glassfish, ich benutze es überall, mehrere Produktionsinstanzen, ich liebe das Produkt und das Projekt.
Die Details von Java EE 6 lassen sich jedoch nicht auf Java EE 5 zurücksetzen. Einige tun dies, viele tun dies, aber das Webprofil, Servlet 3.0, die neuen Bean-Typen, JPA 2 usw. Diese sind nicht vorhanden.
Wenn Sie also zuerst Java EE 6 lernen, beschränken Sie sich einfach auf einen einzelnen Container. Weitere kommen, aber sie sind noch nicht hier.
Tomcat, JBoss, OpenEJB, Glassfish, Jetty, Resin, Geronimo usw. funktionieren alle gut mit der Java EE 5-Spezifikation (zumindest die Teile der Spezifikation, die sie unterstützen, Tomcat hat beispielsweise kein EJB).
Ich kann mir in Java EE 5 nichts vorstellen, was nicht auf Java EE 6 übertragen wurde. Java EE 6 hat einige sehr alte Aspekte optional gemacht, und diejenigen, die Sie heute einfach nicht lernen würden. Java EE 6 hat einige Java EE 5-Inhalte noch einfacher gemacht (insbesondere das Verpacken von EJB Lite).
Lernen Sie jetzt Java EE 5, damit Sie das Gelernte in einer Vielzahl von Umgebungen anwenden können, anstatt Java EE 6 jetzt zu lernen und zu entdecken, dass Sie möglicherweise nicht viel von dem verwenden können, was Sie lernen.
Kein einziges Buch bringt Ihnen bei, was Sie wissen müssen. Servlets sind zum Beispiel eine gute Grundlage, aber für alles, was größer als ein paar Seiten oder ein Endpunkt ist, sollten Sie eines der vielen Frameworks von Drittanbietern oder JSF verwenden, und kein Buch behandelt den Kern und dann ein Framework darüber davon.
Das Java EE 5-Tutorial ist gut darin, die Grundlagen zu verbessern. Meine Hauptbeschwerde ist, dass sie Ihnen den Quellcode nicht zeigen. Vielmehr erwarten sie, dass Sie es einfach herunterladen und ausführen. Es wird im Tutorial nicht besprochen. Ich habe festgestellt, dass die Head First-Bücher ziemlich gut sind.
Für die Webprogrammierung sind Raw-Servlets wichtig genug, um den Anforderungs- / Antwortzyklus zu verstehen, aber Sie benötigen kein tiefes Verständnis, um zu einem Framework eines Drittanbieters zu gelangen.
Ich bin ein großer Fan von Stripes für ein Action-Framework (im Vergleich zu einem Komponenten-Framework), und das einzelne verfügbare Stripes-Buch ist ausgezeichnet (was die Auswahl einfach macht).
Ich kann kein Komponenten-Framework-Buch vorschlagen, und ich würde eines nicht sofort empfehlen. Die Komponenten-Frameworks begraben die HTTP-Kernanforderungs- / Antwortstrukturen wirklich. Sie begraben sie aus einem bestimmten Grund und gewinnen an Wert, indem sie sie begraben, aber ich glaube, um effektiv zu sein, muss man diese Konzepte frühzeitig gut verstehen. Aus diesem Grund empfehle ich nicht, zuerst ein Komponenten-Framework zu lernen.
Das in Java EE 6 enthaltene JAX-RS REST-Framework, das jedoch problemlos in Java EE 5 oder einem beliebigen Servlet-Container installiert werden kann, ist hervorragend. Es ist wohl das, was Servlet 3.0 hätte sein sollen. Aber dafür kenne ich keine Bücher.