Engineering principle "Everything should be made as simple as possible." The same can be said for enterprise software development.
EJB 2.1 Framework is overly too complex
EJB 3.0 is the next revision of the Enterprise Java Beans specification. One of the most significant changes in EJB 3.0 is the introduction of a standard Object/Relational mapping (ORM) specification and the move to POJO (Plain Old Java Object) based persistence.
The EJB 3.0 framework is a standard framework defined by the Java Community Process (JCP) and supported by all major J2EE vendors. EJB 3.0 makes heavy use of Java annotations (java.lang.annotation)
The Spring framework is a popular but non-standard open source framework. It is primarily developed by and controlled by Interface21 Inc.
The architecture of the Spring framework is based upon the Dependency Injection (DI) design pattern.
A class may have dependencies on other classes to perform useful tasks. The class can create its own dependencies, or the dependencies can be injected into the class instance. Removing the responsibility for creating dependencies from a class is called Dependency Injection (or Inversion of Control.)
The dependencies can be attached by either setting properties or using a constructor function to setup all dependencies at instantiation.
Spring can work standalone or with existing application servers and makes heavy use of XML configuration files.
The EJB 3.0 framework is a standard framework defined by the Java Community Process (JCP) and supported by all major J2EE vendors.
EJB 3.0 makes heavy use of Java annotations (java.lang.annotation)
Enables declarative programming to greater extent
Imperative (how) vs. declarative (what)
J2EE Brief Overview To understand where the EJB technology stands
The J2EE SDK provides a Reference Implementation (RI) of J2EE specification.
It is a fully-functional J2EE server that provides all of the J2EE services described in the various specifications.
It’s used to demonstrate the feasibility of creating a J2EE server that conforms to the specifications.
The J2EE 1.4 SDK is also known as Sun Java System Application Server Platform. It is a fully J2EE 1.4 platform-compatible server for the development and deployment of production-grade J2EE applications.
The Compatibility Test Suite (CTS)
Used to evaluate a given vendor product to ensure that it meets the requirements described within the J2EE specifications.
Any vendor that wishes to market its product as being J2EE compliant must submit it for evaluation against the CTS.