New Features in Java EE 6.0
Profiles: Different Strokes for Different FolksOne 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.
The main goal of the Profiles is to address this issue, to reduce the size of the platform to suit the developer’s needs more efficiently.
Profiles are essentially sub-sets of Java EE APIs geared towards a particular class of applications in mind.
Java EE 6 includes the first of these profiles called Web Profile which is a subset of the Java EE platform designed for web application development. The Web Profile is the light-weight version of Java EE and includes only those technologies needed in most web applications, and does not include the enterprise technologies that these web applications typically don't need..
Pruning the Dead Wood
Since Java EE was first released in 1999, each release added new specifications. None of the features has been completely removed from the specification.
This became a problem in terms of size, implementation, the installation time, and adoption. Some features were not well supported or not widely deployed because they were technologically outdated or other alternatives were made available in the meantime.
The platform is weighted down with some dead wood in the shape of APIs that are outdated, not well supported or not widely deployed.
Java EE 6 has adopted the pruning process (also known as marked for deletion) already adopted by the Java SE group. Pruning these APIs would make the platform more lightweight and make room for healthier growth.
The suggested proposals are JAX-RPC, EJB 2.x Entity Beans CMP, JAXR (one of the few Java APIs for interfacing with UDDI registries)...
Richer
Provide significant enhancements in EJB, Servlets, JSF, and JSP technologies.
Servlet 3.0
Pluggability
Modular web.xml, web fragments to provide better support for frameworks
Allow programmatic addition of Servlets and Filters at start up time of an application
Asynchronous support
Ease of Development, Annotations vs. Deployment Descriptor
Other Miscellaneous Changes
HttpOnly Cookies
API changes
Contexts and Dependency Injection for Java EE
This(JCDI) allows developers to bind Java EE components to lifecycle contexts, to inject these components, and to enable them to support loosely coupled communication. Java EE components can also fire and get notified of events with JCDI. The benefit is that different kinds of objects, such as EJB 3 session beans, POJOs, and Java EE resources, can all be injected. JCDI provides a good facility for integrating the web tier and Java EE enterprise services.
JAX-RS 1.1 to create REST-based web services
Web Beans
Enterprise JavaBeans 3.1
EJB Lite
Removal of local business interface
Business interfaces also are not mandatory.
Packaging EJB components directly in a WAR file
Embeddable API for executing EJB in Java SE environment
This is to facilitate better support for testing, batch processing, and using EJB from the desktop applications.
Introduction of Singleton beans
Asynchronous Session Bean
JSF 2.0
JPA 2.0
Bean Validation 1.0 - annotation-based validation API
More Portable
Standard global JNDI names
Java EE 6 specifies a syntax for JNDI names that is the same across application servers
EJB 3.1 specifies an embedded container that is a standard API for executing EJBs within a Java SE environment.
Resources
The Java EE 6 Tutorial
Java EE 6 Overview
New Features in Java EE 6
New Features in Java EE 6.0
New Features in Servlets 3.0