New Features in Java EE 6
Java EE 6 Overview - Part 3
Java EE 6 Implementations
The unique power of Java EE lies in standardization, portability, compatibility and vendor independence. These unique values can only be realized if there are multiple high quality compatible Java EE implementations. Fortunately, Java EE 6 has been strongly adopted by a wide range of vendors – some familiar and some fresh. The table below lists the currently available implementations as well as the ones in the works
As you can see, there are an abundance of options to choose from despite some industry consolidation such as the Oracle purchase of Sun and BEA. In fact, Java EE 6 has been implemented more often and faster than any previous Java EE release. There are other application servers like SAP NetWeaver that I did not mention above since they have not yet formally announced their plans around Java EE 6 although they are very likely to support it in the near future.
A Look Ahead
Even as the Java EE 6 implementations roll in, the work for the next revision of Java EE is already being initiated. In the coming months, you should expect to see some of the first Java EE 7 JSRs. Here are some of the possible changes:
• Cloud support is a big part of Java EE 7. While it still isn't clear exactly how Java EE 7 cloud support is going to look, the changes might include support for modularity, versioning, multi-tenancy and greater runtime security.
• A brand new API for Java EE concurrency will be added, similar to the concurrency utilities in Java SE.
• The JCache API will be updated and finally added to Java EE.
• The important concept of a simple managed bean was introduced in Java EE 6. In fact, EJBs were redefined to be managed beans with additional container services. You should expect this concept to be taken to the next logical step in allowing EJB services like pooling, transactions, locking, security, scheduling, asynchronous processing or even messaging to be available outside of EJB in plain managed beans (in fact, this is the model that Resin 4 embraces today and is supported by the Seam 3 persistence module as well). In addition, JSF, Servlets, JAX-RS and JAX-WS should offer greater alignment with managed beans. EJB 2.x CMP/BMP entity beans and JAX-RPC support in EJB should be deprecated.
• The next CDI release, CDI 1.1 should be relatively minor and include things like an embedded CDI container, enhancements to the portable extensions API and more XML configuration support. The real CDI related work should be better alignment of EJB, JPA, JSF, Servlet, JMS, JAX-RS and JAX-WS with CDI.
• JSF 2.2 will be a relatively minor enhancement with things like better portlet integration, Spring WebFlow/Oracle ADF style flow management and HTML 5 support.
• Servlet 3.1 will be a relatively minor enhancement with features like better Servlet async support for the new Java EE concurrency API and the emerging WebSocket standard.
• EL 3.0 will be separated from JSP as a pluggable API and include a few enhancements needed for CDI, JSF, etc.
• JPA 2.1 will be a minor update to add things like stored procedure support, further ORM flexibility, fetching flexibility, immutable attributes, read-only entities, update/ delete criteria queries, dynamic definition of persistence units and so on.
JAX-RS 2 will include a number of useful features such as a client API, better integration with the Bean Validation API, asynchronous request processing as well as being able to use JAX-RS resources as MVC controllers (with JSP pages being views).
• JMS will get a long-awaited revamp with JMS 2. JMS 2 could include more API simplifications, making JMS pluggable/ embeddable as well as better support for emerging Event-Driven Architecture paradigms.
• JTA 2 could be introduced to modernize the dated API as well as add better support for local transactions. Note some of this is from my own personal wish-list; if they sound right, feel free to support the idea via blogs, etc. Also, I encourage you to have an active voice in these changes by participating directly through the JCP.
The changes in Java EE 6 are compelling and have been largely well-received by the community. They include pruning, profiles, CDI, JSF 2, EJB 3.1, JPA 2, Servlet 3, JAX-RS and bean validation. If you have not taken a closer look at Java EE 6 yet, you owe it to yourself to do so now. There are a number of good Java EE 6 implementations available already with more on the way. In addition to simply being a passive user or evaluator of Java EE, you also have the opportunity to give your feedback towards Java EE 7 as the platform continues to evolve.