Java EE 6 действительно потрясающий. Единственная проблема заключается в том, что ему около двух недель, и в настоящее время есть только 1 контейнер, предлагающий его функции - Glassfish.
Я ничего не имею против Glassfish, я использую его повсюду, несколько производственных экземпляров, мне нравится продукт и проект.
Тем не менее, детали Java EE 6 не переводятся обратно в Java EE 5. Некоторые делают, многие делают, но Web Profile, Servlet 3.0, новые типы Bean, JPA 2 и т. Д. Их там нет.
Итак, сначала изучая Java EE 6, вы просто ограничиваете себя одним контейнером. Приходят другие, но их еще нет.
Tomcat, JBoss, OpenEJB, Glassfish, Jetty, Resin, Geronimo и т. Д. Хорошо работают со спецификацией Java EE 5 (по крайней мере, те части спецификации, которые они поддерживают, Tomcat, например, не имеет EJB).
Я не могу придумать в Java EE 5 ничего, что не было перенесено в Java EE 6. В Java EE 6 некоторые очень старые аспекты были необязательными, а те, которые вы бы просто не изучили сегодня, в любом случае. Java EE 6 сделал некоторые вещи Java EE 5 еще проще (например, упаковка EJB Lite).
Изучите Java EE 5 сейчас, чтобы вы могли действительно применить полученные знания в различных средах, а не изучать Java EE 6 сейчас и обнаруживать, что вы не сможете использовать большую часть того, что изучаете.
Ни одна книга не научит вас тому, что вам нужно знать. Сервлеты, например, являются хорошей основой, но для чего-либо большего, чем пара страниц или конечная точка, вы захотите использовать одну из многих сторонних фреймворков или JSF, и ни одна книга не охватывает ядро, а затем фреймворк сверху. того, что.
Учебное пособие по Java EE 5 хорошо раскрывает основы, моя главная жалоба в том, что они не показывают вам исходный код. Скорее они ожидают, что вы просто скачаете и запустите его. Это не обсуждается в руководстве. Я считаю, что книги Head First довольно хороши.
Для веб-программирования необработанные сервлеты достаточно важны только для понимания цикла запроса / ответа, но вам не нужно глубокое понимание, чтобы перейти на стороннюю структуру.
Я большой поклонник Stripes для фреймворка Action (по сравнению с компонентным фреймворком), и доступная книга single Stripes превосходна (что делает выбор легким).
Я не могу предложить книгу по фреймворкам компонентов, да и не стал бы рекомендовать ее сразу. Компонентные структуры действительно скрывают структуры запроса / ответа ядра HTTP. Они хоронят их по какой-то причине, и они получают ценность, закапывая их, но я считаю, что для того, чтобы быть эффективными, вам нужно иметь твердое понимание этих концепций на раннем этапе. Вот почему я не предлагаю сначала изучить структуру компонентов.
Платформа JAX-RS REST, включенная в Java EE 6, но легко устанавливаемая в Java EE 5 или любой контейнер сервлетов, превосходна. Возможно, это то, чем должен был быть Servlet 3.0. Но я не знаю книг по этому поводу.