Java EE 6 es realmente sorprendente. El único problema es que tiene alrededor de 2 semanas y actualmente solo hay 1 contenedor que ofrece sus características: Glassfish.
No tengo nada en contra de Glassfish, lo uso por todos lados, varias instancias de producción, me encanta el producto y el proyecto.
Dicho esto, los detalles de Java EE 6 no se traducen a Java EE 5. Algunos lo hacen, muchos lo hacen, pero el Perfil Web, Servlet 3.0, los nuevos tipos de Bean, JPA 2, etc. Esos no están ahí.
Entonces, al aprender Java EE 6 primero, simplemente se limita a un solo contenedor. Vienen más, pero aún no están aquí.
Tomcat, JBoss, OpenEJB, Glassfish, Jetty, Resin, Geronimo, etc., funcionan bien con la especificación Java EE 5 (al menos aquellas partes de la especificación que admiten, Tomcat no tiene EJB, por ejemplo).
No puedo pensar en nada en Java EE 5 que no se haya trasladado a Java EE 6. Java EE 6 hizo que algunos aspectos muy antiguos fueran opcionales, y los que simplemente no aprenderías hoy de todos modos. Java EE 6 hizo que algunas cosas de Java EE 5 fueran aún más fáciles (empaquetado notablemente, EJB Lite, por ejemplo).
Aprenda Java EE 5 ahora para que pueda aplicar lo aprendido en una variedad de entornos, en lugar de aprender Java EE 6 ahora y descubrir que es posible que no pueda usar mucho de lo que aprende.
Ningún libro le enseñará lo que necesita saber. Los servlets, por ejemplo, son una buena base, pero para algo más grande que un par de páginas o un punto final, querrá usar uno de los muchos marcos de terceros, o JSF, y ningún libro cubre el núcleo y luego un marco en la parte superior. de eso.
El tutorial de Java EE 5 es bueno para establecer las bases, mi principal queja es que no te muestran el código fuente. Más bien esperan que lo descargues y ejecutes. No se trata en el tutorial. He descubierto que los libros de Head First son bastante buenos.
Para la programación web, los servlets sin procesar son lo suficientemente importantes solo para comprender el ciclo de solicitud / respuesta, pero no es necesario un conocimiento profundo para dar un salto a un marco de terceros.
Soy un gran admirador de Stripes para un marco de acción (frente a un marco de componentes), y el único libro de Stripes disponible es excelente (lo que hace que elegirlo sea una elección fácil).
No puedo sugerir un libro de marco de componentes, y en realidad no recomendaría uno de inmediato. Los marcos de componentes realmente entierran las estructuras centrales de solicitud / respuesta HTTP. Los entierran por una razón, y ganan valor al enterrarlos, pero creo que para ser efectivo es necesario tener una comprensión sólida de estos conceptos desde el principio. Es por eso que no sugiero aprender primero un marco de componentes.
El marco JAX-RS REST, incluido en Java EE 6, pero fácilmente instalable en Java EE 5 o cualquier contenedor de servlets, es excelente. Podría decirse que es lo que debería haber sido Servlet 3.0. Pero no conozco ningún libro para eso.