adam bien's blog

Java EE 6 And The JCP Stuff - Perfect For Lazy Developers 📎

Clarification: all developers should be lazy :-).

Java EE (6) is an abstraction of existing products (Hibernate, TopLink, Glassfish, JBoss, Geronimo, Tomcat+, ...) and API-implementations. So if you develop Java EE 6 applications, you can start with the spec and dig into the implementation details as needed. If you are using e.g. Glassfish application server, EclipseLink (JPA), Equinox or Felix(OSGi), RedHat Weld (CDI) ... are working for you - but you don't have usually to care about the details.

The best of all - if you don't like a certain implementation - you can change your application server. After learning plain Java EE (5 or 6 - both are similar), you will be able to work with all application server vendors with minimal learning curve. This year I would expect at least 4 Java EE 6 server implementations: Glassfish 3 (is done), JBoss 6 (not yet), Geronimo (announced), Resin (only parts - but sounds interesting).
Java EE 5 is already implemented by 14 different servers - I would expect at least the same support for Java EE 6 in longer term.

Btw. plain Java EE 5 spec together with JDK 1.6 was sufficient for >95% of all cases in my past projects in last 3 years. Actually the majority of the projects was absolutely portable - without any vendor-specific extensions. With Java EE 6 you will gain even greater vendor independence - Servlet 3, JPA 2, CDI, EJB 3.1, JSF 2 standardized a lot more vendor specific stuff.

If you are not lazy - here are some other arguments for switching.