New Features in Java EE 6
Java EE 6 Overview
Java EE 6 has all the makings of one of the best releases of the enterprise Java standard since its inception in the late nineties. Java EE 5 was without a doubt a revolutionary release. Java EE 6 straddles the line between being revolutionary and evolutionary. In the least, it solidifies the changes that began with Java EE 5. This brief article overviews the changes in Java EE 6, covers some of the API changes at a high level, mentions implementations currently available or underway and takes a forward look at the changes in Java EE 7 that are just being formulated.
Java EE 5 was a remarkable transformation for a mature, widely deployed, well supported development platform. EJB 3.0 was introduced as the reengineered business component development model, the aging EJB 2.x Entity Bean model was replaced by JPA as the persistence paradigm, JSF was introduced as the standard presentation tier framework and JAXWS 2.0 replaced JAX-RPC as the SOAP web services API. The focus of Java EE 5 was squarely on reducing complexity by embracing the concepts of annotations, POJO programming, zero-configuration systems, intelligent defaults and freedom from XML hell. Despite the reservations around Java EE in some camps, perhaps the best testament to the fact that Java EE 5 succeeded is the many folks who considered adopting Java EE for the first time because of these changes. A large number of these folks also comment on how surprisingly streamlined and well-put-together the Java EE programming model felt.
A Bird's Eye View
Java EE 6 is another important step in the journey towards the ideal of a simple, streamlined and well-integrated platform. Java EE 6 also includes a rich set of innovations best reflected in the technologies that comprise the platform including brand new APIs like CDI 1.0 and JAX-RS 1.1 or even relatively mature APIs like Servlet 3.0.
Besides a few relatively minor changes such as standardizing global JNDI naming (which I won't cover here), the major themes for Java EE 6 from a platform standpoint are pruning and profiles. In some ways, these themes are an essential byproduct of the deep seated changes in the platform. Let's take a quick look at these changes.
Pruning the Dead Wood
The first release of Java EE was in 1999. By standards of the hypercompetitive technology industry, that's nothing short of a lifetime. During this span, Java EE has only grown. As a result, the platform is now weighed down with some dead wood in the shape of APIs that are outdated, have been susuperseded, not well supported or not widely deployed. Java EE 6 begins the essential process of carefully pruning these APIs to make the platform more lightweight and to make room for healthier growth. Table 1 shows the APIs that are on the chopping block, along with an explanation of why. "Pruning" an API essentially means that an application server vendor need not support these technologies, although some larger vendors will probably continue supporting the pruned APIs for a period of time.
Profiles: Different Strokes for Different Folks
One of the major criticisms of Java EE has been that it is simply too large. Indeed, a majority of small to medium range Java web applications do not utilize the full Java EE stack. One can imagine the same to be true of SOA applications that would use features like messaging, transactions, persistence and web services but have no need for presentation tier technologies like JSP or JSF.
Profiles are designed to address this issue. Profiles are essentially sub-sets of Java EE APIs geared towards a particular class of applications in mind. For example, the Java EE 6 Web Profile only includes APIs that are likely to be used in most Java web applications. As such, the idea of Profiles has been used successfully in the standards world for a relatively long time. As you might already know, Java ME supports the idea of Profiles geared towards particular device runtime environments. Likewise, Profiles are used to better organize the increasingly complex world of web services standards such as the WS-I Basic Profile, the WS-I Basic Security Profile and the like. Although Java EE 6 defines the rules for creating new Profiles through separate JSRs, only one Profile, the Web Profile is included in the platform this time. Table 2 lists the APIs that are included in the Web Profile as opposed to the full platform:
Note that EJB Lite, and not the full version of the EJB specification is included in the Web Profile. I'll describe EJB Lite in greater detail shortly.