Sun has posted the initial draft of Java Specification Request 220, Enterprise JavaBeans 3.0. According to the overview, "EJB 3.0 enables the enterprise application developer to program with an API designed for ease of development that is a simplification of the APIs defined by earlier versions of the EJB specification. The existing EJB 2.1 APIs remain available for use in applications that require them. The API introduced by EJB 3.0 does not replace or deprecate those earlier APIs." Quoting from section 1.2:
The purpose of EJB 3.0 is to improve the EJB architecture by reducing its complexity from the enterprise application developer’s point of view.
EJB 3.0 is focused on the following goals:
- 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 artifacts the developer is required to provide, and at eliminating the Introduction Enterprise JavaBeans 3.0, Early Draft EJB 3.0 Expert Group Sun Microsystems Inc. need for the developer to provide an EJB deployment descriptor. Use of metadata annotations can also be used to enable the generation of interfaces for an enterprise bean from the bean class itself.
- 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. Enterprise beans are simplified to more closely resemble plain Java objects (“POJOs”) or JavaBeans.
- Elimination of the requirement for EJB component interfaces for session beans and entity beans. The required business interface for a session bean is an ordinary Java interface (“POJI” or plain old Java interface), not an EJBObject, EJBLocalObject, or java.rmi.Remote interface. No interfaces are required for entity beans.
- Elimination of the requirement for Home interfaces.
- Simplification of container-managed persistence.
- Support for light-weight domain modeling, including inheritance and polymorphism.
- Specification of Java language metadata annotations for the object/relational mapping of entity beans with container-managed persistence.
- Enhancements to EJB QL to provide greater usability. 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.
- Reduction of the requirements for usage of checked exceptions.
- Elimination of the requirement for the implementation of callback interfaces.
- Improved ability for testing outside the container.
Comments are due by July 30.