Java EE 6 è davvero sorprendente. L'unico problema è che ha circa 2 settimane e al momento c'è solo 1 contenitore che offre le sue funzionalità: Glassfish.
Non ho nulla contro Glassfish, lo uso ovunque, in diversi casi di produzione, adoro il prodotto e il progetto.
Detto questo, i dettagli di Java EE 6 non si traducono in Java EE 5. Alcuni lo fanno, molti lo fanno, ma il profilo Web, Servlet 3.0, i nuovi tipi di Bean, JPA 2, ecc. Quelli non ci sono.
Quindi, imparando prima Java EE 6, ti limiti semplicemente a un singolo contenitore. Altri stanno arrivando, ma non sono ancora arrivati.
Tomcat, JBoss, OpenEJB, Glassfish, Jetty, Resin, Geronimo, ecc. Funzionano tutti bene con la specifica Java EE 5 (almeno quelle parti della specifica che supportano, Tomcat non ha EJB per esempio).
Non riesco a pensare a nulla in Java EE 5 che non sia stato portato avanti in Java EE 6. Java EE 6 ha reso opzionali alcuni aspetti molto vecchi, e quelli che semplicemente non impareresti oggi comunque. Java EE 6 ha reso alcune cose di Java EE 5 ancora più semplici (pacchettizzazione in particolare, EJB Lite per esempio).
Impara Java EE 5 ora in modo da poter effettivamente applicare ciò che impari in una varietà di ambienti, piuttosto che imparare Java EE 6 ora e scoprire che potresti non essere in grado di utilizzare molto di ciò che impari.
Nessun singolo libro ti insegnerà ciò che devi sapere. I servlet, ad esempio, sono una buona base, ma per qualsiasi cosa più grande di un paio di pagine o endpoint, ti consigliamo di utilizzare uno dei tanti framework di terze parti, o JSF, e nessun libro copre il core e quindi un framework in cima di quella.
Il tutorial Java EE 5 è utile per mettere le basi, la mia lamentela principale è che non ti mostrano il codice sorgente. Piuttosto si aspettano che tu lo scarichi ed esegui. Non è discusso nel tutorial. Ho trovato che i libri di Head First siano piuttosto buoni.
Per la programmazione web, i Servlet grezzi sono abbastanza importanti solo per comprendere il ciclo di richiesta / risposta, ma non è necessaria una comprensione profonda per passare a un framework di terze parti.
Sono un grande fan di Stripes per un framework di azione (rispetto a un framework di componenti) e il singolo libro di Stripes disponibile è eccellente (rendendo la scelta una scelta facile).
Non posso suggerire un libro sul framework dei componenti e in realtà non ne consiglierei uno subito. I framework dei componenti seppelliscono veramente le strutture di richiesta / risposta principali HTTP. Li seppelliscono per una ragione e guadagnano valore seppellendoli, ma credo che per essere efficaci sia necessario avere una solida comprensione di questi concetti nella fase iniziale. Ecco perché non suggerisco di imparare prima un framework Component.
Il framework JAX-RS REST, incluso in Java EE 6, ma facilmente installabile in Java EE 5 o qualsiasi servlet container, è eccellente. Probabilmente è quello che avrebbe dovuto essere Servlet 3.0. Ma non conosco libri per questo.