Sun has released the finished version of Java Specification Request (JSR) 220, Enterprise JavaBeans 3.0. According to the spec,
The Enterprise JavaBeans 3.0 architecture presented in this document extends Enterprise JavaBeans to include the following new functionality and simplifications to the earlier EJB APIs:
- Definition of the Java language metadata annotations that can be used to annotate EJB applications. These metadata annotations are targeted at simplifying the developer’s task, at reducing the number of program classes and interfaces the developer is required to implement, and at eliminating the need for the developer to provide an EJB deployment descriptor.
- Specification of programmatic defaults, including for metadata, to reduce the need for the developer to specify common, expected behaviors and requirements on the EJB container. A “configuration by exception” approach is taken whenever possible.
- Encapsulation of environmental dependencies and JNDI access through the use of annotations, dependency injection mechanisms, and simple lookup mechanisms.
- Simplification of the enterprise bean types.
- Elimination of the requirement for EJB component interfaces for session beans. The required business interface for a session bean can be a plain Java interface rather than an EJBObject, EJBLocalObject, or java.rmi.Remote interface.
- Elimination of the requirement for home interfaces for session beans.
- Simplification of entity persistence through the Java Persistence API.[2]. Support for light-weight domain modeling, including inheritance and polymorphism.
- Elimination of all required interfaces for persistent entities[2].
- Specification of Java language metadata annotations and XML deployment descriptor elements for the object/relational mapping of persistent entities [2].
- A query language for Java Persistence that is an extension to EJB QL, with addition of projection, explicit inner and outer join operations, bulk update and delete, subqueries, and group-by. Addition of a dynamic query capability and support for native SQL queries.
- An interceptor facility for session beans and message-driven beans.
- Reduction of the requirements for usage of checked exceptions.
- Elimination of the requirement for the implementation of callback interfaces.
A reference implementation is available.