Java EE 6 benar-benar luar biasa. Satu-satunya masalah adalah usianya sekitar 2 minggu, dan saat ini hanya ada 1 wadah yang menawarkan fiturnya - Glassfish.
Saya tidak menentang Glassfish, saya menggunakannya di semua tempat, beberapa contoh produksi, saya suka produk dan proyeknya.
Meskipun demikian, detail Java EE 6 tidak diterjemahkan kembali ke Java EE 5. Beberapa melakukannya, banyak yang melakukannya, tetapi Profil Web, Servlet 3.0, jenis Bean baru, JPA 2, dll. Itu tidak ada.
Jadi, dengan mempelajari Java EE 6 terlebih dahulu, Anda cukup membatasi diri Anda pada satu wadah. Lebih banyak lagi yang akan datang, tapi mereka belum datang.
Tomcat, JBoss, OpenEJB, Glassfish, Jetty, Resin, Geronimo, dll. Semuanya bekerja dengan baik dengan spesifikasi Java EE 5 (setidaknya bagian dari spesifikasi yang mereka dukung, Tomcat tidak memiliki EJB misalnya).
Saya tidak dapat memikirkan apa pun di Java EE 5 yang tidak dibawa ke Java EE 6. Java EE 6 membuat beberapa aspek yang sangat lama opsional, dan yang tidak akan Anda pelajari hari ini. Java EE 6 membuat beberapa hal Java EE 5 menjadi lebih mudah (khususnya pengemasan, EJB Lite misalnya).
Pelajari Java EE 5 sekarang sehingga Anda benar-benar dapat menerapkan apa yang Anda pelajari di berbagai lingkungan, daripada mempelajari Java EE 6 sekarang dan menemukan Anda mungkin tidak dapat menggunakan banyak dari apa yang Anda pelajari.
Tidak ada satu buku pun yang akan mengajari Anda apa yang perlu Anda ketahui. Servlet, misalnya, adalah fondasi yang bagus, tetapi untuk apa pun yang lebih besar dari beberapa halaman atau titik akhir, Anda akan ingin menggunakan salah satu dari banyak kerangka kerja pihak ketiga, atau JSF, dan tidak ada buku yang membahas inti dan kemudian kerangka kerja di atasnya dari itu.
Tutorial Java EE 5 bagus untuk menurunkan fondasinya, keluhan utama saya adalah mereka tidak menunjukkan kode sumbernya kepada Anda. Sebaliknya mereka mengharapkan Anda untuk mengunduh dan menjalankannya. Itu tidak dibahas dalam tutorial. Saya telah menemukan buku Head First cukup bagus.
Untuk pemrograman web, Servlet mentah cukup penting hanya untuk memahami siklus permintaan / respons, tetapi Anda tidak memerlukan pemahaman yang mendalam untuk melakukan lompatan ke kerangka pihak ketiga.
Saya penggemar berat kerangka kerja Stripes for a Action (vs kerangka kerja komponen), dan satu buku Stripes yang tersedia sangat bagus (menjadikannya pilihan yang mudah).
Saya tidak bisa menyarankan buku kerangka kerja Komponen, dan saya sebenarnya tidak akan langsung merekomendasikannya. Kerangka komponen benar-benar mengubur permintaan inti HTTP / struktur respons. Mereka menguburnya karena suatu alasan, dan mendapatkan nilai dengan menguburnya, tetapi saya yakin agar efektif, Anda harus memiliki pemahaman yang kuat tentang konsep ini sejak dini. Itu sebabnya saya tidak menyarankan mempelajari kerangka kerja Komponen terlebih dahulu.
Kerangka kerja JAX-RS REST, termasuk dalam Java EE 6, tetapi siap dipasang di Java EE 5 atau wadah servlet apa pun, sangat baik. Bisa dibilang itulah yang seharusnya dilakukan Servlet 3.0. Tapi saya tidak tahu buku apa pun untuk itu.